
์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ฌ์ฉํ์ ๋ค๋ฉด kubectl์ ์๋ง๋ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ๋๊ตฌ ์ค ํ๋์ผ ๊ฒ์
๋๋ค. ํน์ ๋๊ตฌ๋ฅผ ๋ค๋ฃจ๋ ๋ฐ ๋ง์ ์๊ฐ์ ํฌ์ํ ๋๋ง๋ค ํด๋น ๋๊ตฌ๋ฅผ ์ ๋๋ก ๋ฐฐ์ฐ๊ณ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ตํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
ํ ๋ค๋์ ๋ฐ์ด๋ฒจ์ ๊ธ์ ๋ฒ์ญํ์ต๋๋ค. ์ด ๊ธ์๋ kubectl์ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ฐ ํ์ํ ํ๊ณผ ์๋ น์ด ๋ด๊ฒจ ์์ต๋๋ค. ๋ํ ์ฟ ๋ฒ๋คํฐ์ค์ ์๋ ๋ฐฉ์์ ๋ ์ ์ดํดํ๋ ๋ฐ ๋์์ด ๋ ๊ฒ์ ๋๋ค.
์ ์์ ๋ฐ๋ฅด๋ฉด, ์ด ๊ธฐ์ฌ์ ๋ชฉ์ ์ Kubernetes๋ฅผ ์ฌ์ฉํ์ฌ ์ผ์ ์
๋ฌด๋ฅผ ๋ณด๋ค ํจ์จ์ ์ผ๋ก ์ํํ ์ ์์ ๋ฟ๋ง ์๋๋ผ, ๋ณด๋ค ์ฆ๊ฒ๊ฒ ์ํํ ์ ์๋๋ก ๋๋ ๊ฒ์
๋๋ค!
์๊ฐ: kubectl์ด๋ ๋ฌด์์ ๋๊น?
kubectl์ ๋ณด๋ค ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ๊ธฐ ์ ์ kubectl์ด ๋ฌด์์ด๊ณ ์ด๋ป๊ฒ ์๋ํ๋์ง์ ๋ํ ๊ธฐ๋ณธ์ ์ธ ์ดํด๊ฐ ํ์ํฉ๋๋ค.
์ฌ์ฉ์ ๊ด์ ์์ kubectl์ Kubernetes ์์ ์ ์ํํ ์ ์๋ ์ ์ดํ์ ๋๋ค.
๊ธฐ์ ์ ์ผ๋ก ๋งํ๋ฉด kubectl์ Kubernetes API ํด๋ผ์ด์ธํธ์ ๋๋ค.
์ฟ ๋ฒ๋คํฐ์ค API๋ HTTP REST API์ ๋๋ค. ์ด API๋ ์ฟ ๋ฒ๋คํฐ์ค์ ์ค์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ด๋ฉฐ, ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์๋ฒฝํ๊ฒ ์ ์ดํฉ๋๋ค. ์ฆ, ๋ชจ๋ ์ฟ ๋ฒ๋คํฐ์ค ์์ ์ API ์๋ํฌ์ธํธ๋ก ํํ๋๋ฉฐ ํด๋น ์๋ํฌ์ธํธ์ ๋ํ HTTP ์์ฒญ์ ํตํด ์ํ๋ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ kubectl์ ์ฃผ์ ์์ ์ Kubernetes API์ HTTP ์์ฒญ์ ํ๋ ๊ฒ์ ๋๋ค.

์ฟ ๋ฒ๋คํฐ์ค๋ ์์ ํ ๋ฆฌ์์ค ์งํฅ ์์คํ
์
๋๋ค. ์ฆ, ๋ด๋ถ ๋ฆฌ์์ค ์ํ๋ฅผ ์ ์งํ๋ฉฐ ๋ชจ๋ ์ฟ ๋ฒ๋คํฐ์ค ์์
์ CRUD ์์
์
๋๋ค.
์ด๋ฌํ ๋ฆฌ์์ค๋ฅผ ๊ด๋ฆฌํจ์ผ๋ก์จ Kubernetes๋ฅผ ์๋ฒฝํ๊ฒ ์ ์ดํ ์ ์์ผ๋ฉฐ, Kubernetes๋ ๋ฆฌ์์ค์ ํ์ฌ ์ํ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ ์ ์ํํฉ๋๋ค. ์ด๋ฌํ ์ด์ ๋ก Kubernetes API ์ฐธ์กฐ๋ ๋ฆฌ์์ค ์ ํ๊ณผ ๊ด๋ จ ์์ ๋ชฉ๋ก์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
์๋ฅผ ์ดํด๋ณด์.
ReplicaSet ๋ฆฌ์์ค๋ฅผ ์์ฑํ๋ ค๊ณ ํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ์ด๋ฅผ ์ํด ReplicaSet์ ๋ค์ ์ด๋ฆ์ ํ์ผ์ ์ค๋ช
ํฉ๋๋ค. replicaset.yaml๊ทธ๋ฐ ๋ค์ ๋ช
๋ น์ ์คํํฉ๋๋ค.
$ kubectl create -f replicaset.yaml์ด๋ ๊ฒ ํ๋ฉด ReplicaSet ๋ฆฌ์์ค๊ฐ ์์ฑ๋ฉ๋๋ค. ๊ทธ๋ฐ๋ฐ ์ด ๊ณผ์ ์์๋ ์ด๋ค ์ผ์ด ์ผ์ด๋ ๊น์?
์ฟ ๋ฒ๋คํฐ์ค์๋ ReplicaSet ์์ฑ ์์ ์ด ์์ต๋๋ค. ๋ค๋ฅธ ์์ ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ด ์์ ๋ API ์๋ํฌ์ธํธ๋ก ์ ๊ณต๋ฉ๋๋ค. ์ด ์์ ์ ๊ตฌ์ฒด์ ์ธ API ์๋ํฌ์ธํธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
POST /apis/apps/v1/namespaces/{namespace}/replicasets๋ชจ๋ Kubernetes ์์ ์ ๋ํ API ์๋ํฌ์ธํธ๋ ๋ค์์์ ์ฐพ์ ์ ์์ต๋๋ค. (ํฌํจ ). ์๋ํฌ์ธํธ์ ๋ํ ์ค์ ์์ฒญ์ ํ๋ ค๋ฉด ๋จผ์ API ์ฐธ์กฐ์ ๋์ด๋ ์๋ํฌ์ธํธ ๊ฒฝ๋ก์ API ์๋ฒ URL์ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
๋ฐ๋ผ์ ์ ๋ช
๋ น์ ์คํํ๋ฉด kubectl์ ์ API ์๋ํฌ์ธํธ๋ก HTTP POST ์์ฒญ์ ์ ์กํฉ๋๋ค. replicaset.yaml, ์์ฒญ ๋ณธ๋ฌธ์ ์ ๋ฌ๋ฉ๋๋ค.
์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ์ ์ํธ ์์ฉํ๋ ๋ชจ๋ ๋ช ๋ น์ ๋ํด kubectl์ด ์๋ํ๋ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ด ๋ชจ๋ ๊ฒฝ์ฐ์ kubectl์ ๋จ์ํ ์ ์ ํ ์ฟ ๋ฒ๋คํฐ์ค API ์๋ํฌ์ธํธ๋ก HTTP ์์ฒญ์ ์ ์กํฉ๋๋ค.
๋ค์๊ณผ ๊ฐ์ ์ ํธ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ์ฌ Kubernetes๋ฅผ ์์ ํ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. curlKubernetes API์ HTTP ์์ฒญ์ ์๋์ผ๋ก ์ ์กํฉ๋๋ค. Kubectl์ Kubernetes API ์ฌ์ฉ์ ๋์ฑ ๊ฐํธํ๊ฒ ๋ง๋ค์ด์ค๋๋ค.
kubectl์ ๊ธฐ๋ณธ ์๋ฆฌ์ ์๋ ๋ฐฉ์์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ํ์ง๋ง ๋ชจ๋ kubectl ์ฌ์ฉ์๊ฐ ์ฟ ๋ฒ๋คํฐ์ค API์ ๋ํด ์์์ผ ํ ๋ช ๊ฐ์ง ์ฌํญ์ด ๋ ์์ต๋๋ค. ์ฟ ๋ฒ๋คํฐ์ค์ ๋ด๋ถ ์๋ ๋ฐฉ์์ ๊ฐ๋ตํ๊ฒ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์ฟ ๋ฒ๋คํฐ์ค์ ๋ด๋ถ ์ธ๊ณ
์ฟ ๋ฒ๋คํฐ์ค๋ ํด๋ฌ์คํฐ ๋ ธ๋์์ ๋ณ๋์ ํ๋ก์ธ์ค๋ก ์คํ๋๋ ๋ ๋ฆฝ์ ์ธ ๊ตฌ์ฑ ์์ ์งํฉ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์ผ๋ถ ๊ตฌ์ฑ ์์๋ ๋ง์คํฐ ๋ ธ๋์์ ์คํ๋๊ณ , ๋ค๋ฅธ ๊ตฌ์ฑ ์์๋ ์์ปค ๋ ธ๋์์ ์คํ๋๋ฉฐ, ๊ฐ ๊ตฌ์ฑ ์์๋ ๊ณ ์ ํ ์ ๋ฌธํ๋ ์์ ์ ์ํํฉ๋๋ค.
๋ง์คํฐ ๋ ธ๋์ ๊ฐ์ฅ ์ค์ํ ๊ตฌ์ฑ ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋ฅ๊ทผ ์ฒ์ฅ โ ๋ฆฌ์์ค ์ ์๋ฅผ ์ ์ฅํฉ๋๋ค().
- API ์๋ฒ โ API๋ฅผ ์ ๊ณตํ๊ณ ์ ์ฅ์๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
- ์ปจํธ๋กค๋ฌ ๊ด๋ฆฌ์ - ๋ฆฌ์์ค ์ํ๊ฐ ์ฌ์์ ์ค์ํ๋์ง ํ์ธํฉ๋๋ค.
- ์ค์ผ์ค๋ฌ - ์์ปค ๋ ธ๋์ ํฌ๋๋ฅผ ์์ฝํฉ๋๋ค.
์์ปค ๋ ธ๋์์ ๊ฐ์ฅ ์ค์ํ ๊ตฌ์ฑ ์์ ์ค ํ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ฟ ๋ฒจ๋ โ ์์ปค ๋ ธ๋์์ ์ปจํ ์ด๋ ์คํ์ ๊ด๋ฆฌํฉ๋๋ค.
์ด๋ฌํ ๊ตฌ์ฑ ์์๊ฐ ์ด๋ป๊ฒ ํจ๊ป ์๋ํ๋์ง ์ดํดํ๊ธฐ ์ํด ์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋ฐฉ๊ธ ์๋ฃํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. kubectl create -f replicaset.yaml, ๊ทธ ํ kubectl์ด HTTP POST ์์ฒญ์ ํ์ต๋๋ค. (ReplicaSet ๋ฆฌ์์ค ์ ์ ์ ๋ฌ).
ํด๋ฌ์คํฐ ๋ด์์๋ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์?
- ํ ํ
kubectl create -f replicaset.yamlAPI ์๋ฒ๋ ReplicaSet ๋ฆฌ์์ค ์ ์๋ฅผ ์ ์ฅ์์ ์ ์ฅํฉ๋๋ค.
- ๋ค์์ผ๋ก, ReplicaSet ๋ฆฌ์์ค์ ์์ฑ, ์์ ๋ฐ ์ญ์ ๋ฅผ ์ฒ๋ฆฌํ๋ ์ปจํธ๋กค๋ฌ ๊ด๋ฆฌ์์์ ReplicaSet ์ปจํธ๋กค๋ฌ๊ฐ ์์๋ฉ๋๋ค.

- ReplicaSet ์ปจํธ๋กค๋ฌ๋ ReplicaSet ์ ์์ ํฌ๋ ํ
ํ๋ฆฟ์ ๋ฐ๋ผ ReplicaSet์ ๊ฐ ๋ณต์ ๋ณธ์ ๋ํ ํฌ๋ ์ ์๋ฅผ ์์ฑํ๊ณ ์ด๋ฅผ ์ ์ฅ์์ ์ ์ฅํฉ๋๋ค.

- ์ค์ผ์ค๋ฌ๊ฐ ์์๋์ด ์์ง ์ด๋ค ์์
์ ๋
ธ๋์๋ ํ ๋น๋์ง ์์ ํฌ๋๋ฅผ ๋ชจ๋ํฐ๋งํฉ๋๋ค.

- ์ค์ผ์ค๋ฌ๋ ๊ฐ ํฌ๋์ ์ ํฉํ ์์ปค ๋
ธ๋๋ฅผ ์ ํํ๊ณ ์ด ์ ๋ณด๋ฅผ ์คํ ๋ฆฌ์ง์ ํฌ๋ ์ ์์ ์ถ๊ฐํฉ๋๋ค.

- ํฌ๋๊ฐ ํ ๋น๋ ์์
์ ๋
ธ๋์์ Kubelet์ด ์คํ๋์ด ํด๋น ๋
ธ๋์ ํ ๋น๋ ํฌ๋๋ฅผ ๋ชจ๋ํฐ๋งํฉ๋๋ค.

- Kubelet์ ์ ์ฅ์์์ Pod ์ ์๋ฅผ ์ฝ๊ณ Docker์ ๊ฐ์ ์ปจํ
์ด๋ ๋ฐํ์์ ๋
ธ๋์์ ์ปจํ
์ด๋๋ฅผ ์์ํ๋๋ก ์ง์ํฉ๋๋ค.

์๋๋ ์ด ์ค๋ช ์ ํ ์คํธ ๋ฒ์ ์ ๋๋ค.
ReplicaSet ์์ฑ ์๋ํฌ์ธํธ์ ๋ํ API ์์ฒญ์ API ์๋ฒ์์ ์ฒ๋ฆฌ๋ฉ๋๋ค. API ์๋ฒ๋ ์์ฒญ์ ์ธ์ฆํ๊ณ ReplicaSet ๋ฆฌ์์ค ์ ์๋ฅผ ์ ์ฅ์์ ์ ์ฅํฉ๋๋ค.
์ด ์ด๋ฒคํธ๋ ์ปจํธ๋กค๋ฌ ๊ด๋ฆฌ์์ ํ์ ํ๋ก์ธ์ค์ธ ReplicaSet ์ปจํธ๋กค๋ฌ๋ฅผ ์์ํฉ๋๋ค. ReplicaSet ์ปจํธ๋กค๋ฌ๋ ์ ์ฅ์์์ ReplicaSet ๋ฆฌ์์ค์ ์์ฑ, ์ ๋ฐ์ดํธ ๋ฐ ์ญ์ ๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ , ์ด๋ฌํ ์ํฉ์ด ๋ฐ์ํ๋ฉด ์ด๋ฒคํธ ์๋ฆผ์ ์์ ํฉ๋๋ค.
ReplicaSet ์ปจํธ๋กค๋ฌ์ ์ญํ ์ ํ์ํ ์์ ReplicaSet ํฌ๋๊ฐ ์กด์ฌํ๋์ง ํ์ธํ๋ ๊ฒ์ ๋๋ค. ์ด ์์์์๋ ํฌ๋๊ฐ ์์ง ์กด์ฌํ์ง ์์ผ๋ฏ๋ก ReplicaSet ์ปจํธ๋กค๋ฌ๋ ReplicaSet ์ ์์ ํฌ๋ ํ ํ๋ฆฟ์ ๋ฐ๋ผ ์ด๋ฌํ ํฌ๋ ์ ์๋ฅผ ์์ฑํ์ฌ ์คํ ๋ฆฌ์ง์ ์ ์ฅํฉ๋๋ค.
์ Pod๋ฅผ ์์ฑํ๋ฉด ์ค์ผ์ค๋ฌ๊ฐ ํธ๋ฆฌ๊ฑฐ๋์ด ์์ง ์์ปค ๋ ธ๋์ ์ค์ผ์ค๋ง๋์ง ์์ Pod ์ ์๋ฅผ ๋ชจ๋ํฐ๋งํฉ๋๋ค. ์ค์ผ์ค๋ฌ๋ ๊ฐ Pod์ ์ ํฉํ ์์ปค ๋ ธ๋๋ฅผ ์ ํํ๊ณ ์ ์ฅ์์ Pod ์ ์๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค.
์ง๊ธ๊น์ง ํด๋ฌ์คํฐ์ ์ด๋ ๊ณณ์์๋ ์ํฌ๋ก๋ ์ฝ๋๊ฐ ์คํ๋์ง ์์์ต๋๋ค. ์ง๊ธ๊น์ง ์ํ๋ ๋ชจ๋ ์์ ์ - ์ด๋ ๋ง์คํฐ ๋ ธ๋์ ์ ์ฅ์์์ ๋ฆฌ์์ค๋ฅผ ์์ฑํ๊ณ ์ ๋ฐ์ดํธํ๋ ๊ฒ์ ๋๋ค.
๋ง์ง๋ง ์ด๋ฒคํธ๋ Kubelet์ ํธ๋ฆฌ๊ฑฐํ๋๋ฐ, Kubelet์ ์์ปค ๋ ธ๋์ ์์ฝ๋ ํ๋๋ฅผ ๋ชจ๋ํฐ๋งํฉ๋๋ค. ReplicaSet ํ๋๊ฐ ์ค์น๋ ์์ปค ๋ ธ๋์ Kubelet์ Docker์ ๊ฐ์ ์ปจํ ์ด๋ ๋ฐํ์์ ํ์ํ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ก๋ํ์ฌ ์คํํ๋๋ก ์ง์ํด์ผ ํฉ๋๋ค.
์ด์ ReplicaSet ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ง์นจ๋ด ์คํ๋ฉ๋๋ค!
์ฟ ๋ฒ๋คํฐ์ค API์ ์ญํ
์ด์ ์์์ ๋ณด์๋ฏ์ด Kubernetes ๊ตฌ์ฑ ์์(API ์๋ฒ ๋ฐ ์ ์ฅ์ ์ ์ธ)๋ ์ ์ฅ์์ ๋ฆฌ์์ค์ ๋ํ ๋ณ๊ฒฝ ์ฌํญ์ ๊ฐ์ํ๊ณ ์ ์ฅ์์ ๋ฆฌ์์ค์ ๋ํ ์ ๋ณด๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค.
๋ฌผ๋ก , ์ด๋ฌํ ๊ตฌ์ฑ ์์๋ ์ ์ฅ์์ ์ง์ ์ํธ ์์ฉํ์ง ์๊ณ Kubernetes API๋ฅผ ํตํด์๋ง ์ํธ ์์ฉํฉ๋๋ค.
๋ค์ ์๋ฅผ ๊ณ ๋ คํด ๋ณด๊ฒ ์ต๋๋ค.:
- ReplicaSet ์ปจํธ๋กค๋ฌ๋ API ์๋ํฌ์ธํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋งค๊ฐ๋ณ์ ํฌํจ
watchReplicaSet ๋ฆฌ์์ค์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ชจ๋ํฐ๋งํฉ๋๋ค. - ReplicaSet ์ปจํธ๋กค๋ฌ๋ API ์๋ํฌ์ธํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค. (pod ์์ฑ) pod๋ฅผ ์์ฑํฉ๋๋ค.
- ์ค์ผ์ค๋ฌ๋ API ์๋ํฌ์ธํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค. (pod ๋ณ๊ฒฝ) ์ ํํ ์์ ์ ๋ ธ๋์ ๋ํ ์ ๋ณด๋ก pod๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค.
๋ณด์๋ค์ํผ, ์ด๋ kubectl์ด ์ก์ธ์คํ๋ ๊ฒ๊ณผ ๋์ผํ API์ ๋๋ค. ๋์ผํ API๋ฅผ ์ฌ์ฉํ์ฌ ๋ด๋ถ ๊ตฌ์ฑ ์์์ ์ธ๋ถ ์ฌ์ฉ์๋ฅผ ์คํํ๋ ๊ฒ์ ์ฟ ๋ฒ๋คํฐ์ค์ ๊ธฐ๋ณธ ์ค๊ณ ๊ฐ๋ ์ ๋๋ค.
์ด์ Kubernetes๊ฐ ์๋ํ๋ ๋ฐฉ์์ ์์ฝํด ๋ณด๊ฒ ์ต๋๋ค.
- ์ ์ฅ์๋ ์ํ, ์ฆ Kubernetes ๋ฆฌ์์ค๋ฅผ ์ ์ฅํฉ๋๋ค.
- API ์๋ฒ๋ Kubernetes API ํํ๋ก ์ ์ฅ์์ ๋ํ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ๋ค๋ฅธ ๋ชจ๋ Kubernetes ๊ตฌ์ฑ ์์์ ์ฌ์ฉ์๋ API๋ฅผ ํตํด Kubernetes ์ํ(๋ฆฌ์์ค)๋ฅผ ์ฝ๊ณ , ๊ด์ฐฐํ๊ณ , ์กฐ์ํฉ๋๋ค.
์ด๋ฌํ ๊ฐ๋ ์ ์๋ฉด kubectl์ ๋ ์ ์ดํดํ๊ณ ์ต๋ํ ํ์ฉํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
์ด์ kubectl์ ์ฌ์ฉํ์ฌ ์์ฐ์ฑ์ ํฅ์์ํค๋ ๋ฐ ๋์์ด ๋๋ ๋ช ๊ฐ์ง ๊ตฌ์ฒด์ ์ธ ํ๊ณผ ์๋ น์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
1. ๋ช ๋ น ์์ฑ์ผ๋ก ํ์ดํ ์๋ ํฅ์
kubectl ์์ฐ์ฑ์ ํฅ์์ํค๋ ๋ฐ ๊ฐ์ฅ ์ ์ฉํ๋ฉด์๋ ์ข ์ข ๊ฐ๊ณผ๋๋ ๊ธฐ์ ์ค ํ๋๊ฐ ๋ช ๋ น ์์ฑ์ ๋๋ค.
๋ช ๋ น ์์ฑ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด Tab ํค๋ฅผ ์ฌ์ฉํ์ฌ kubectl ๋ช ๋ น์ ์ผ๋ถ๋ฅผ ์๋์ผ๋ก ์์ฑํ ์ ์์ต๋๋ค. ์ด ๊ธฐ๋ฅ์ ๋ฆฌ์์ค ์ด๋ฆ๊ณผ ๊ฐ์ ๋ณต์กํ ๋ช ๋ น์ ํฌํจํ์ฌ ํ์ ๋ช ๋ น, ์ต์ ๋ฐ ์ธ์์ ์ ์ฉ๋ฉ๋๋ค.
kubectl ๋ช ๋ น ์์ฑ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ํ์ธํ์ธ์.

๋ช
๋ น์ด ์์ฑ์ Bash ๋ฐ Zsh ์
ธ์์ ์๋ํฉ๋๋ค.
์๋์์ฑ์ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ์ค๋ช ์ด ํฌํจ๋์ด ์์ง๋ง, ์๋์์๋ ๊ฐ๋ตํ๊ฒ ๋ฐ์ทํ ๋ด์ฉ๋ง ์ ๊ณตํฉ๋๋ค.
๋ช ๋ น ์์ฑ ์๋ ๋ฐฉ์
๋ช ๋ น ์์ฑ์ ์์ฑ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ฌ ์๋ํ๋ ์ ธ ๊ธฐ๋ฅ์ ๋๋ค. ์์ฑ ์คํฌ๋ฆฝํธ๋ ํน์ ๋ช ๋ น์ ์์ฑ ๋์์ ์ ์ํ๋ ์ ธ ์คํฌ๋ฆฝํธ์ ๋๋ค.
Kubectl์ ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ Bash ๋ฐ Zsh์ ๋ํ ์์ฑ ์คํฌ๋ฆฝํธ๋ฅผ ์๋์ผ๋ก ์์ฑํ๊ณ ์ถ๋ ฅํฉ๋๋ค.
$ kubectl completion bashะะปะธ :
$ kubectl completion zsh์ด๋ก ์์ผ๋ก๋ ์ด๋ฌํ ๋ช ๋ น์ ์ถ๋ ฅ์ ์ ์ ํ ์ ธ๋ก ํ์ดํํด์ kubectl์ด ๋ช ๋ น์ ๋ณด์ํ ์ ์๋๋ก ํด์ผ ํฉ๋๋ค.
ะะฐ ะฟัะฐะบัะธะบะต โ ัะฟะพัะพะฑ ะฟะพะดะบะปััะตะฝะธั ะพัะปะธัะฐะตััั ะดะปั Bash (ะฒะบะปััะฐั ัะฐะทะปะธัะธั ะผะตะถะดั Linux ะธ MacOS) ะธ Zsh. ะะธะถะต ะผั ัะฐััะผะพััะธะผ ะฒัะต ััะธ ะฒะฐัะธะฐะฝัั.
Bash ะฒ Linux
Bash ์์ฑ ์คํฌ๋ฆฝํธ๋ bash-completion ํจํค์ง์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ฏ๋ก ๋จผ์ ํด๋น ํจํค์ง๋ฅผ ์ค์นํด์ผ ํฉ๋๋ค.
$ sudo apt-get install bash-completionะะปะธ :
$ yum install bash-completion๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ํจํค์ง๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์ค์น๋์๋์ง ํ ์คํธํ ์ ์์ต๋๋ค.
$ type _init_completion ์
ธ ํจ์ ์ฝ๋๊ฐ ์ถ๋ ฅ๋๋ฉด bash ์๋ ์์ฑ ๊ธฐ๋ฅ์ด ์ ๋๋ก ์ค์น๋ ๊ฒ์
๋๋ค. ๋ช
๋ น์ด "์ฐพ์ ์ ์์" ์ค๋ฅ๋ฅผ ๋ฐํํ๋ ๊ฒฝ์ฐ, ๋ค์ ์ค์ ํ์ผ์ ์ถ๊ฐํด์ผ ํฉ๋๋ค. ~ / .bashrc:
$ source /usr/share/bash-completion/bash_completion ์ด ์ค์ ํ์ผ์ ์ถ๊ฐํด์ผ ํฉ๋๊น? ~ / .bashrc bash-completion์ ์ค์นํ๋ ๋ฐ ์ฌ์ฉํ ํจํค์ง ๊ด๋ฆฌ์์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. APT์ ๊ฒฝ์ฐ ํ์์ด์ง๋ง, YUM์ ๊ฒฝ์ฐ ํ์๊ฐ ์๋๋๋ค.
bash-completion์ ์ค์นํ ํ์๋ ๋ชจ๋ ์ ธ ์ธ์ ์์ kubectl ์์ฑ ์คํฌ๋ฆฝํธ๊ฐ ํ์ฑํ๋๋๋ก ๊ตฌ์ฑํด์ผ ํฉ๋๋ค.
์ด๋ฅผ ์ํํ๋ ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ ๋ค์ ์ค์ ํ์ผ์ ์ถ๊ฐํ๋ ๊ฒ์
๋๋ค. ~ / .bashrc:
source <(kubectl completion bash) ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ kubectl ์ ๋์จ ์คํฌ๋ฆฝํธ๋ฅผ ๋๋ ํ ๋ฆฌ์ ์ถ๊ฐํ๋ ๊ฒ์
๋๋ค. /etc/bash_completion.d (์กด์ฌํ์ง ์์ผ๋ฉด ๋ง๋ญ๋๋ค):
$ kubectl completion bash >/etc/bash_completion.d/kubectl ์นดํ๋ก๊ทธ์ ๋ชจ๋ ์ถ๊ฐ ์คํฌ๋ฆฝํธ /etc/bash_completion.d bash-completion์ ์๋์ผ๋ก ํฌํจ๋ฉ๋๋ค.
๋ ์ต์ ๋ชจ๋ ๋๋ฑํ๊ฒ ์ ์ฉ๋ฉ๋๋ค.
์ ธ์ ์ฌ์์ํ๋ฉด kubectl ๋ช ๋ น ์์ฑ์ด ์๋ํฉ๋๋ค.
MacOS์ Bash
MacOS์์๋ ์ค์ ์ด ์กฐ๊ธ ๋ ๋ณต์กํฉ๋๋ค. MacOS๋ ๊ธฐ๋ณธ์ ์ผ๋ก Bash ๋ฒ์ 3.2๋ฅผ ์ฌ์ฉํ๊ณ , kubectl ์๋ ์์ฑ ์คํฌ๋ฆฝํธ๋ Bash ๋ฒ์ 4.1 ์ด์์ ์๊ตฌํ๋ฉฐ Bash 3.2์์๋ ์๋ํ์ง ์์ต๋๋ค.
MacOS์์ ์ด์ ๋ฒ์ ์ Bash๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ๋ผ์ด์ ์ค ๋ฌธ์ ๋๋ฌธ์ ๋๋ค. Bash ๋ฒ์ 4๋ Apple์ด ์ง์ํ์ง ์๋ GPLv3 ๋ผ์ด์ ์ค๋ฅผ ๋ฐ๋ฆ ๋๋ค.
MacOS์์ kubectl ์๋ ์์ฑ์ ์ค์ ํ๋ ค๋ฉด ์ต์ ๋ฒ์ ์ Bash๋ฅผ ์ค์นํด์ผ ํฉ๋๋ค. ์ ๋ฐ์ดํธ๋ Bash๋ฅผ ๊ธฐ๋ณธ ์ ธ๋ก ์ค์ ํ๋ฉด ๋์ค์ ๋ง์ ๋ฒ๊ฑฐ๋ก์์ ๋ ์ ์์ต๋๋ค. ๋ฐฉ๋ฒ์ ๊ฐ๋จํฉ๋๋ค. "".
๊ณ์ํ๊ธฐ ์ ์ ์ต์ ๋ฒ์ ์ Bash๋ฅผ ์ฌ์ฉํ๊ณ ์๋์ง ํ์ธํ์ญ์์ค(์ถ๋ ฅ ํ์ธ) bash --version).
Bash ์๋ ์์ฑ ์คํฌ๋ฆฝํธ๋ ํ๋ก์ ํธ๋ณ๋ก ๋ค๋ฆ ๋๋ค. , ๋จผ์ ์ค์นํด์ผ ํฉ๋๋ค.
๋ค์์ ์ฌ์ฉํ์ฌ bash-completion์ ์ค์นํ ์ ์์ต๋๋ค. :
$ brew install bash-completion@2 ์ฌ๊ธฐ์ @2 bash-completion ๋ฒ์ 2๋ฅผ ์๋ฏธํฉ๋๋ค. kubectl ์์ฑ์๋ bash-completion v2๊ฐ ํ์ํ๊ณ , bash-completion v2์๋ ์ต์ Bash ๋ฒ์ 4.1์ด ํ์ํฉ๋๋ค.
๋ช
๋ น ์ถ๋ ฅ brew-install ํ์ผ์ ์ถ๊ฐํด์ผ ํ ๋ด์ฉ์ ์ง์ ํ๋ Caveats ์น์
์ด ํฌํจ๋์ด ์์ต๋๋ค. ~/.bash_profile:
export BASH_COMPLETION_COMPAT_DIR=/usr/local/etc/bash_completion.d
[[ -r "/usr/local/etc/profile.d/bash_completion.sh" ]] && .
"/usr/local/etc/profile.d/bash_completion.sh" ํ์ง๋ง ๋๋ ์ด ์ค๋ค์ ์ถ๊ฐํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค. ~/.bash_profile, ๋ฐ c ~/.bashrc. ์ด ๊ฒฝ์ฐ ์๋ ์์ฑ ๊ธฐ๋ฅ์ ๊ธฐ๋ณธ ๋ช
๋ น ์
ธ๋ฟ๋ง ์๋๋ผ ์์ ๋ช
๋ น ์
ธ์์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ช ๋ น ์ ธ์ ๋ค์ ์์ํ ํ ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ์ค์น๊ฐ ์ฌ๋ฐ๋ฅธ์ง ํ์ธํ ์ ์์ต๋๋ค.
$ type _init_completion์ถ๋ ฅ์์ ์ ธ ํจ์๊ฐ ๋ณด์ด๋ฉด ๋ชจ๋ ๊ฒ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ๋ ๊ฒ์ ๋๋ค.
์ด์ ๋ชจ๋ ์ธ์ ์์ kubectl ์๋ ์์ฑ์ด ํ์ฑํ๋์๋์ง ํ์ธํด์ผ ํฉ๋๋ค.
ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ ๋ค์ ์ค์ ์ถ๊ฐํ๋ ๊ฒ์
๋๋ค. ~/.bashrc:
source <(kubectl completion bash) ๋ ๋ฒ์งธ ๋ฐฉ๋ฒ์ ํด๋์ ์๋์์ฑ ์คํฌ๋ฆฝํธ๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์
๋๋ค. /usr/local/etc/bash_completion.d:
$ kubectl completion bash
>/usr/local/etc/bash_completion.d/kubectl์ด ๋ฐฉ๋ฒ์ Homebrew๋ฅผ ์ฌ์ฉํ์ฌ bash-completion์ ์ค์นํ ๊ฒฝ์ฐ์๋ง ์๋ํฉ๋๋ค. ์ด ๊ฒฝ์ฐ, bash-completion์ ์ด ๋๋ ํฐ๋ฆฌ์ ๋ชจ๋ ์คํฌ๋ฆฝํธ๋ฅผ ๋ก๋ํฉ๋๋ค.
์ค์นํ ๊ฒฝ์ฐ , ์๋ ์์ฑ ์คํฌ๋ฆฝํธ๊ฐ ์๋์ผ๋ก ํด๋์ ๋ฐฐ์น๋๋ฏ๋ก ์ด์ ๋จ๊ณ๋ฅผ ์ํํ ํ์๊ฐ ์์ต๋๋ค. /usr/local/etc/bash_completion.d ์ค์น ์ค์. ์ด ๊ฒฝ์ฐ, bash-completion์ ์ค์นํ์๋ง์ kubectl ์์ฑ์ด ์๋ํ๊ธฐ ์์ํฉ๋๋ค.
๊ฒฐ๊ตญ, ์ด ๋ชจ๋ ์ต์ ์ ๋๋ฑํฉ๋๋ค.
Zsh
Zsh ์์ฑ ์คํฌ๋ฆฝํธ๋ ์ข ์์ฑ์ ํ์๋ก ํ์ง ์์ต๋๋ค. ์ ธ์ ์์ํ ๋ ํด๋น ์ข ์์ฑ์ ํ์ฑํํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
์ค์ ์ถ๊ฐํ์ฌ ์ด ์์
์ ์ํํ ์ ์์ต๋๋ค. ~/.zshrc ํ์ผ:
source <(kubectl completion zsh) ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ not found: compdef ์์ ์ฌ๋ถํ
ํ ํ ๋ด์ฅ ๊ธฐ๋ฅ์ ํ์ฑํํด์ผ ํฉ๋๋ค. compdefํ์ผ์ ์์ ๋ถ๋ถ์ ์ถ๊ฐํ๋ฉด ํ์ฑํํ ์ ์์ต๋๋ค. ~/.zshrc ๋ค์ :
autoload -Uz compinit
compinit2. ๋ฆฌ์์ค ์ฌ์์ ๋น ๋ฅด๊ฒ ํ์ธํ์ธ์
YAML ๋ฆฌ์์ค ์ ์๋ฅผ ์์ฑํ ๋๋ ํด๋น ๋ฆฌ์์ค์ ํ๋์ ๊ทธ ์๋ฏธ๋ฅผ ์์์ผ ํฉ๋๋ค. ์ด ์ ๋ณด๋ ๋ชจ๋ ๋ฆฌ์์ค์ ๋ํ ์ ์ฒด ์ฌ์์ด ํฌํจ๋ API ์ฐธ์กฐ์์ ์ฐพ์ ์ ์์ต๋๋ค.
ํ์ง๋ง ๋ฌด์ธ๊ฐ๋ฅผ ๊ฒ์ํ ๋๋ง๋ค ์น ๋ธ๋ผ์ฐ์ ๋ก ์ ํํ๋ ๊ฒ์ ๋ถํธํฉ๋๋ค. ๊ทธ๋์ kubectl์ ๋ค์ ๋ช
๋ น์ ์ ๊ณตํฉ๋๋ค. kubectl explain๋ชจ๋ ๋ฆฌ์์ค์ ์ฌ์์ ํฐ๋ฏธ๋์์ ๋ฐ๋ก ๋ณด์ฌ์ค๋๋ค.
๋ช ๋ น ํ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
$ kubectl explain resource[.field]...์ด ๋ช ๋ น์ ์์ฒญ๋ ๋ฆฌ์์ค ๋๋ ํ๋์ ์ฌ์์ ์ถ๋ ฅํฉ๋๋ค. ์ถ๋ ฅ๋๋ ์ ๋ณด๋ API ๋งค๋ด์ผ์ ํฌํจ๋ ์ ๋ณด์ ๋์ผํฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก kubectl explain ํ๋ ์ค์ฒฉ์ ์ฒซ ๋ฒ์งธ ์์ค๋ง ํ์ํฉ๋๋ค.
๊ทธ๊ฒ์ด ์ด๋ป๊ฒ ์๊ฒผ๋์ง ๋ณด์ธ์ .
์ต์
์ ์ถ๊ฐํ๋ฉด ์ ์ฒด ํธ๋ฆฌ๋ฅผ ํ์ํ ์ ์์ต๋๋ค. --recursive:
$ kubectl explain deployment.spec --recursiveํ์ํ ๋ฆฌ์์ค๊ฐ ์ ํํ ๋ฌด์์ธ์ง ๋ชจ๋ฅด๋ ๊ฒฝ์ฐ ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ๋ชจ๋ ๋ฆฌ์์ค๋ฅผ ํ์ํ ์ ์์ต๋๋ค.
$ kubectl api-resources ์ด ๋ช
๋ น์ ๋ฆฌ์์ค ์ด๋ฆ์ ๋ณต์ํ์ผ๋ก ํ์ํฉ๋๋ค. ์: deployments ๋์ deployment. ๋ํ ๋ค์๊ณผ ๊ฐ์ ์งง์ ์ด๋ฆ๋ ํ์๋ฉ๋๋ค. deploy, ๋ฆฌ์์ค์ ํด๋น ์ต์
์ด ์๋ ๊ฒฝ์ฐ. ์ด๋ฌํ ์ฐจ์ด์ ์ ๊ฑฑ์ ํ์ง ๋ง์ธ์. ์ด๋ฌํ ๋ชจ๋ ๋ช
๋ช
์ต์
์ kubectl์์ ๋์ผํฉ๋๋ค. ์ฆ, ์ด๋ค ์ต์
์ ์ฌ์ฉํ๋ kubectl explain.
๋ค์ ๋ช ๋ น์ ๋ชจ๋ ๋์ผํฉ๋๋ค.
$ kubectl explain deployments.spec
# ะธะปะธ
$ kubectl explain deployment.spec
# ะธะปะธ
$ kubectl explain deploy.spec3. ์ฌ์ฉ์ ์ ์ ์ด ์ถ๋ ฅ ํ์ ์ฌ์ฉ
๊ธฐ๋ณธ ๋ช
๋ น ์ถ๋ ฅ ํ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. kubectl get:
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
engine-544b6b6467-22qr6 1/1 Running 0 78d
engine-544b6b6467-lw5t8 1/1 Running 0 78d
engine-544b6b6467-tvgmg 1/1 Running 0 78d
web-ui-6db964458-8pdw4 1/1 Running 0 78d์ด ํ์์ ํธ๋ฆฌํ์ง๋ง, ํฌํจ๋๋ ์ ๋ณด์ ์์ด ์ ํ์ ์ ๋๋ค. ์ ์ฒด ๋ฆฌ์์ค ์ ์ ํ์๊ณผ ๋น๊ตํ์ ๋, ์ฌ๊ธฐ์๋ ํ์๋๋ ํ๋๊ฐ ๋ช ๊ฐ๋ฟ์ ๋๋ค.
์ด ๊ฒฝ์ฐ ์ฌ์ฉ์ ์ง์ ์ด ์ถ๋ ฅ ํ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ถ๋ ฅํ ๋ฐ์ดํฐ๋ฅผ ์ ์ํ ์ ์์ต๋๋ค. ๋ชจ๋ ๋ฆฌ์์ค ํ๋๋ฅผ ๋ณ๋์ ์ด๋ก ์ถ๋ ฅํ ์ ์์ต๋๋ค.
์ฌ์ฉ์ ์ ์ ํ์์ ์ฌ์ฉ์ ๋ค์ ์ต์ ์ ๋ฐ๋ผ ๊ฒฐ์ ๋ฉ๋๋ค.
-o custom-columns=<header>:<jsonpath>[,<header>:<jsonpath>]... ๊ฐ ์ถ๋ ฅ ์ด์ ์์ผ๋ก ์ ์ํ ์ ์์ต๋๋ค. <header>:<jsonpath>์ด๋์์ <header> โ ์ด ์ด๋ฆ ๋ฐ <jsonpath> โ ๋ฆฌ์์ค ํ๋๋ฅผ ์ ์ํ๋ ํํ์์
๋๋ค.
๊ฐ๋จํ ์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
$ kubectl get pods -o custom-columns='NAME:metadata.name'
NAME
engine-544b6b6467-22qr6
engine-544b6b6467-lw5t8
engine-544b6b6467-tvgmg
web-ui-6db964458-8pdw4์ถ๋ ฅ์๋ ํฌ๋ ์ด๋ฆ์ด ํฌํจ๋ ์ด์ด ํ๋ ์์ต๋๋ค.
์ต์
์ ํํ์์ ํ๋์์ ํฌ๋ ์ด๋ฆ์ ์ ํํฉ๋๋ค. metadata.name์ด๋ ํฌ๋ ์ด๋ฆ์ด ์์ ํ๋ ์ด๋ฆ ํ๋์ ์ ์๋์ด ์๊ธฐ ๋๋ฌธ์
๋๋ค. metadata ํฌ๋ ๋ฆฌ์์ค ์ค๋ช
์์ ํ์ธํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ค์์์ ํ์ธํ ์ ์์ต๋๋ค. ๋๋ ๋ช
๋ น์ ์
๋ ฅํ์ธ์ kubectl explain pod.metadata.name.
์ด์ ์ถ๋ ฅ์ ์ด์ ์ถ๊ฐํ๊ณ ์ถ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ์๋ฅผ ๋ค์ด ๊ฐ Pod๊ฐ ์คํ ์ค์ธ ๋ ธ๋๋ฅผ ํ์ํ๊ณ ์ถ์ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ ค๋ฉด ์ฌ์ฉ์ ์ง์ ์ด ์ต์ ์ ์ ์ ํ ์ด ์ฌ์์ ์ถ๊ฐํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
$ kubectl get pods
-o custom-columns='NAME:metadata.name,NODE:spec.nodeName'
NAME NODE
engine-544b6b6467-22qr6 ip-10-0-80-67.ec2.internal
engine-544b6b6467-lw5t8 ip-10-0-36-80.ec2.internal
engine-544b6b6467-tvgmg ip-10-0-118-34.ec2.internal
web-ui-6db964458-8pdw4 ip-10-0-118-34.ec2.internal ํํ์์ ๋
ธ๋ ์ด๋ฆ์ ์ ํํฉ๋๋ค. spec.nodeName - ํฌ๋๊ฐ ๋
ธ๋์ ํ ๋น๋๋ฉด ํด๋น ์ด๋ฆ์ด ํ๋์ ๊ธฐ๋ก๋ฉ๋๋ค. spec.nodeName ํฌ๋์ ๋ฆฌ์์ค ์ฌ์์
๋๋ค. ๋ ์์ธํ ์ ๋ณด๋ ์ถ๋ ฅ์์ โโํ์ธํ ์ ์์ต๋๋ค. kubectl explain pod.spec.nodeName.
Kubernetes ๋ฆฌ์์ค ํ๋๋ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํฉ๋๋ค.
๋ชจ๋ ๋ฆฌ์์ค ํ๋๋ฅผ ์ด๋ก ๋ณผ ์ ์์ต๋๋ค. ๋ฆฌ์์ค ์ฌ์์ ํ์ธํ๊ณ ์ํ๋ ํ๋์ ์ ์ฉํด ๋ณด์ธ์.
ํ์ง๋ง ๋จผ์ ํ๋ ์ ํ ํํ์์ ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
JSONPath ํํ์
๋ฆฌ์์ค ํ๋๋ฅผ ์ ํํ๊ธฐ ์ํ ํํ์์ ๋ค์์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. .
JSONPath๋ JSON ๋ฌธ์์์ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๋ ์ธ์ด์ ๋๋ค. JSONPath์ ๊ฐ์ฅ ๊ฐ๋จํ ์ฌ์ฉ ์ฌ๋ก๋ ๋จ์ผ ํ๋๋ฅผ ์ ํํ๋ ๊ฒ์ ๋๋ค. ์ ํ๊ธฐ, ํํฐ ๋ฑ์ ํฌํจํฉ๋๋ค.
Kubectl explain์ ์ ํ๋ ์์ JSONPath ๊ธฐ๋ฅ์ ์ง์ํฉ๋๋ค. ๊ธฐ๋ฅ๊ณผ ์ฌ์ฉ ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
# ะัะฑัะฐัั ะฒัะต ัะปะตะผะตะฝัั ัะฟะธัะบะฐ
$ kubectl get pods -o custom-columns='DATA:spec.containers[*].image'
# ะัะฑัะฐัั ัะฟะตัะธัะธัะตัะบะธะน ัะปะตะผะตะฝั ัะฟะธัะบะฐ
$ kubectl get pods -o custom-columns='DATA:spec.containers[0].image'
# ะัะฑัะฐัั ัะปะตะผะตะฝัั ัะฟะธัะบะฐ, ะฟะพะฟะฐะดะฐััะธะต ะฟะพะด ัะธะปััั
$ kubectl get pods -o custom-columns='DATA:spec.containers[?(@.image!="nginx")].image'
# ะัะฑัะฐัั ะฒัะต ะฟะพะปั ะฟะพ ัะบะฐะทะฐะฝะฝะพะผั ะฟััะธ, ะฝะตะทะฐะฒะธัะธะผะพ ะพั ะธั
ะธะผะตะฝะธ
$ kubectl get pods -o custom-columns='DATA:metadata.*'
# ะัะฑัะฐัั ะฒัะต ะฟะพะปั ั ัะบะฐะทะฐะฝะฝัะผ ะธะผะตะฝะตะผ, ะฒะฝะต ะทะฐะฒะธัะธะผะพััะธ ะพั ะธั
ัะฐัะฟะพะปะพะถะตะฝะธั
$ kubectl get pods -o custom-columns='DATA:..image'ํนํ ์ค์ํ ๊ฒ์ [] ์ฐ์ฐ์์ ๋๋ค. ๋ง์ ์ฟ ๋ฒ๋คํฐ์ค ๋ฆฌ์์ค ํ๋๋ ๋ชฉ๋ก์ด๋ฉฐ, ์ด ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ฉด ํด๋น ๋ชฉ๋ก์ ์์๋ฅผ ์ ํํ ์ ์์ต๋๋ค. [*]์ ๊ฐ์ ์์ผ๋์นด๋์ ํจ๊ป ์ฌ์ฉํ์ฌ ๋ชฉ๋ก์ ๋ชจ๋ ์์๋ฅผ โโ์ ํํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
์ ์ฉ ์ฌ๋ก
์ฌ์ฉ์ ์ง์ ์ด ์ถ๋ ฅ ํ์์ ์ฌ์ฉํ ์ ์๋ ๊ฐ๋ฅ์ฑ์ ๋ฌด๊ถ๋ฌด์งํฉ๋๋ค. ์ถ๋ ฅ์ ์ํ๋ ํ๋ ๋๋ ๋ฆฌ์์ค ํ๋ ์กฐํฉ์ ํ์ํ ์ ์์ต๋๋ค. ๋ช ๊ฐ์ง ์์๋ฅผ ๋ณด์ฌ๋๋ฆฌ๊ฒ ์ง๋ง, ์ง์ ํ์ํ์ฌ ์์ ์๊ฒ ๋ง๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ฐพ์๋ณด์ธ์.
- ํฌ๋์ ๋ํ ์ปจํ
์ด๋ ์ด๋ฏธ์ง ํ์:
$ kubectl get pods -o custom-columns='NAME:metadata.name,IMAGES:spec.containers[*].image' NAME IMAGES engine-544b6b6467-22qr6 rabbitmq:3.7.8-management,nginx engine-544b6b6467-lw5t8 rabbitmq:3.7.8-management,nginx engine-544b6b6467-tvgmg rabbitmq:3.7.8-management,nginx web-ui-6db964458-8pdw4 wordpress์ด ๋ช ๋ น์ ๊ฐ ํฌ๋์ ์ปจํ ์ด๋ ์ด๋ฏธ์ง ์ด๋ฆ์ ํ์ํฉ๋๋ค.
ํฌ๋์๋ ์ฌ๋ฌ ๊ฐ์ ์ปจํ ์ด๋๊ฐ ํฌํจ๋ ์ ์์ผ๋ฉฐ, ์ด ๊ฒฝ์ฐ ์ด๋ฏธ์ง ์ด๋ฆ์ ์ผํ๋ก ๊ตฌ๋ถํ์ฌ ํ ์ค์ ๋์ด๋ฉ๋๋ค.
- ๋
ธ๋ ๊ฐ์ฉ์ฑ ์์ญ ํ์:
$ kubectl get nodes -o custom-columns='NAME:metadata.name,ZONE:metadata.labels.failure-domain.beta.kubernetes.io/zone' NAME ZONE ip-10-0-118-34.ec2.internal us-east-1b ip-10-0-36-80.ec2.internal us-east-1a ip-10-0-80-67.ec2.internal us-east-1b์ด ๋ช ๋ น์ ํด๋ฌ์คํฐ๊ฐ ํผ๋ธ๋ฆญ ํด๋ผ์ฐ๋์ ํธ์คํ ๋ ๊ฒฝ์ฐ ์ ์ฉํฉ๋๋ค. ๊ฐ ๋ ธ๋์ ๊ฐ์ฉ์ฑ ์์ญ์ ํ์ํฉ๋๋ค.
๊ฐ์ฉ์ฑ ์์ญ์ ๋ณต์ ์์ญ์ ํน์ ์ง๋ฆฌ์ ์ง์ญ์ผ๋ก ์ ํํ๋ ํด๋ผ์ฐ๋ ๊ฐ๋ ์ ๋๋ค.
๊ฐ ๋ ธ๋์ ๊ฐ์ฉ์ฑ ์์ญ์ ํน์ ๋ ์ด๋ธ์ ํตํด ์ป์ด์ง๋๋ค. ํด๋ฌ์คํฐ๊ฐ ํผ๋ธ๋ฆญ ํด๋ผ์ฐ๋์์ ์คํ๋๋ ๊ฒฝ์ฐ ์ด ๋ ์ด๋ธ์ ์๋์ผ๋ก ์์ฑ๋๊ณ ๊ฐ ๋ ธ๋์ ๊ฐ์ฉ์ฑ ์์ญ ์ด๋ฆ์ผ๋ก ์ฑ์์ง๋๋ค.
๋ ์ด๋ธ์ Kubernetes ๋ฆฌ์์ค ์ฌ์์ ์ผ๋ถ๊ฐ ์๋๋ฏ๋ก ๋ ์ด๋ธ์ ๋ํ ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค. . ํ์ง๋ง YAML ๋๋ JSON ํ์์ผ๋ก ๋ ธ๋ ์ ๋ณด๋ฅผ ์์ฒญํ๋ฉด ๋ค๋ฅธ ๋ ์ด๋ธ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ณผ ์ ์์ต๋๋ค.
$ kubectl get nodes -o yaml # ะธะปะธ $ kubectl get nodes -o json์ด๋ ๋ฆฌ์์ค ์ฌ์์ ์ฐ๊ตฌํ๋ ๊ฒ ์ธ์๋ ๋ฆฌ์์ค์ ๋ํด ๋ ๋ง์ด ์์๋ณผ ์ ์๋ ์ข์ ๋ฐฉ๋ฒ์ ๋๋ค.
4. ํด๋ฌ์คํฐ์ ๋ค์์คํ์ด์ค ๊ฐ ์ฌ์ด ์ ํ
kubectl์ด Kubernetes API์ ์์ฒญ์ ํ๋ฉด ๋จผ์ kubeconfig ํ์ผ์ ์ฝ์ด ์ฐ๊ฒฐ์ ํ์ํ ๋ชจ๋ ๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก kubeconfig ํ์ผ์ ~/.kube/config์ด ํ์ผ์ ์ผ๋ฐ์ ์ผ๋ก ํน์ ๋ช
๋ น์ ์ํด ์์ฑ๋๊ฑฐ๋ ์
๋ฐ์ดํธ๋ฉ๋๋ค.
์ฌ๋ฌ ํด๋ฌ์คํฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ kubeconfig ํ์ผ์ ๋ชจ๋ ํด๋ฌ์คํฐ์ ๋ํ ์ฐ๊ฒฐ ์ค์ ์ด ํฌํจ๋ฉ๋๋ค. kubectl ๋ช ๋ น์ ์ด๋ค ํด๋ฌ์คํฐ๋ฅผ ์ฌ์ฉํ๋์ง ์๋ ค์ค ๋ฐฉ๋ฒ์ด ํ์ํฉ๋๋ค.
ํด๋ฌ์คํฐ ๋ด์์ ์ฌ๋ฌ ๊ฐ์ ๋ค์์คํ์ด์ค๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ์ด๋ ๋ฌผ๋ฆฌ์ ํด๋ฌ์คํฐ ๋ด์ ๊ฐ์ ํด๋ฌ์คํฐ์ ๊ฐ์ ๊ฐ๋ ์ ๋๋ค. Kubectl์ kubeconfig ํ์ผ์ ๊ธฐ๋ฐ์ผ๋ก ์ด๋ค ๋ค์์คํ์ด์ค๋ฅผ ์ฌ์ฉํ ์ง ๊ฒฐ์ ํฉ๋๋ค. ์ฆ, kubectl์๊ฒ ์ด๋ค ๋ค์์คํ์ด์ค๋ฅผ ์ฌ์ฉํ ์ง ์๋ ค์ฃผ๋ ๋ฐฉ๋ฒ๋ ํ์ํฉ๋๋ค.
์ด ์ฅ์์๋ ์ด ๊ธฐ๋ฅ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง, ๊ทธ๋ฆฌ๊ณ ํจ๊ณผ์ ์ธ ์์ ์ ์ํํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๊ฒ ์ต๋๋ค.
KUBECONFIG ํ๊ฒฝ ๋ณ์์ ์ฌ๋ฌ kubeconfig ํ์ผ์ ๋์ดํ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ๋ชจ๋ ํ์ผ์ ๋ฐํ์์ ํ๋์ ๊ณตํต ๊ตฌ์ฑ์ผ๋ก ๋ณํฉ๋ฉ๋๋ค. kubectl์ ์คํํ์ฌ ๊ธฐ๋ณธ kubeconfig ํ์ผ์ ๋ณ๊ฒฝํ ์๋ ์์ต๋๋ค. --kubeconfig. ๋ณด๋ค .
kubeconfig ํ์ผ
kubeconfig ํ์ผ์ ์ ํํ ๋ฌด์์ด ํฌํจ๋์ด ์๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค.

๋ณด์๋ค์ํผ kubeconfig ํ์ผ์๋ ์ปจํ
์คํธ ์งํฉ์ด ํฌํจ๋์ด ์์ต๋๋ค. ์ปจํ
์คํธ๋ ๋ค์ ์ธ ๊ฐ์ง ์์๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
- ํด๋ฌ์คํฐ - ํด๋ฌ์คํฐ ์๋ฒ API์ URL์ ๋๋ค.
- ์ฌ์ฉ์ - ํด๋ฌ์คํฐ์ ์ฌ์ฉ์ ์ธ์ฆ ์๊ฒฉ ์ฆ๋ช ์ ๋๋ค.
- ๋ค์์คํ์ด์ค - ํด๋ฌ์คํฐ์ ๊ฐ์ ํ ๋ ์ฌ์ฉ๋๋ ๋ค์์คํ์ด์ค์ ๋๋ค.
์ค์ ๋ก๋ kubeconfig ํ์ผ์์ ํด๋ฌ์คํฐ๋น ํ๋์ ์ปจํ ์คํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ ๋๋ค. ํ์ง๋ง ์ฌ์ฉ์ ๋๋ ๋ค์์คํ์ด์ค๋ณ๋ก ํด๋ฌ์คํฐ๋น ์ฌ๋ฌ ์ปจํ ์คํธ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ๋ค์ค ์ปจํ ์คํธ ๊ตฌ์ฑ์ ํํ์ง ์์ผ๋ฏ๋ก ์ผ๋ฐ์ ์ผ๋ก ํด๋ฌ์คํฐ์ ์ปจํ ์คํธ ๊ฐ์ ์ผ๋์ผ ๋งคํ์ด ์ ์ฉ๋ฉ๋๋ค.
์ธ์ ๋ ์ง ๋ค์ ์ปจํ ์คํธ ์ค ํ๋๊ฐ ํ์ฌ ์ํ์ ๋๋ค.

kubectl์ ๊ตฌ์ฑ ํ์ผ์ ์ฝ์ ๋ ํญ์ ํ์ฌ ์ปจํ
์คํธ์์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ต๋๋ค. ์ ์์์ kubectl์ Hare ํด๋ฌ์คํฐ์ ์ฐ๊ฒฐํฉ๋๋ค.
๋ฐ๋ผ์ ๋ค๋ฅธ ํด๋ฌ์คํฐ๋ก ์ ํํ๋ ค๋ฉด kubeconfig ํ์ผ์์ ํ์ฌ ์ปจํ ์คํธ๋ฅผ ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค.

์ด์ kubectl์ด Fox ํด๋ฌ์คํฐ์ ์ฐ๊ฒฐ๋ฉ๋๋ค.
๋์ผํ ํด๋ฌ์คํฐ์ ๋ค๋ฅธ ๋ค์์คํ์ด์ค๋ก ์ ํํ๋ ค๋ฉด ํ์ฌ ์ปจํ ์คํธ์ ๋ํ ๋ค์์คํ์ด์ค ์์์ ๊ฐ์ ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค.

์์ ์์์ kubectl์ Fox ํด๋ฌ์คํฐ์ Prod ๋ค์์คํ์ด์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค(Test ๋ค์์คํ์ด์ค๋ ์ด์ ์ ์ค์ ๋จ).
kubectl๋ ์ต์
์ ์ ๊ณตํ๋ค๋ ์ ์ ์ ์ํ์ธ์. --cluster, --user, --namespace ะธ --contextkubeconfig ํ์ผ์ ์ค์ ๋ ๋ด์ฉ๊ณผ ๊ด๊ณ์์ด ๊ฐ๋ณ ์์์ ํ์ฌ ์ปจํ
์คํธ ์์ฒด๋ฅผ ๋ฎ์ด์ธ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. kubectl options.
์ด๋ก ์ ์ผ๋ก๋ kubeconfig ํ์ผ์์ ๋งค๊ฐ๋ณ์๋ฅผ ์๋์ผ๋ก ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ํ์ง๋ง ์ด๋ ๋ถํธํฉ๋๋ค. ์ด๋ฌํ ์์ ์ ๊ฐ์ํํ๊ธฐ ์ํด ๋งค๊ฐ๋ณ์๋ฅผ ์๋์ผ๋ก ๋ณ๊ฒฝํ ์ ์๋ ๋ค์ํ ์ ํธ๋ฆฌํฐ๊ฐ ์์ต๋๋ค.
kubectx๋ฅผ ์ฌ์ฉํ์ธ์
ํด๋ฌ์คํฐ์ ๋ค์์คํ์ด์ค๋ฅผ ์ ํํ๋ ๋ฐ ๋งค์ฐ ์ธ๊ธฐ ์๋ ์ ํธ๋ฆฌํฐ์ ๋๋ค.
์ด ์ ํธ๋ฆฌํฐ๋ ๋ช
๋ น์ ์ ๊ณตํฉ๋๋ค kubectx ะธ kubens ๊ฐ๊ฐ ํ์ฌ ์ปจํ
์คํธ์ ๋ค์์คํ์ด์ค๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค.
์์ ์ธ๊ธํ๋ฏ์ด, ํด๋ฌ์คํฐ๋น ์ปจํ ์คํธ๊ฐ ํ๋๋ง ์๋ ๊ฒฝ์ฐ ํ์ฌ ์ปจํ ์คํธ๋ฅผ ๋ณ๊ฒฝํ๋ฉด ํด๋ฌ์คํฐ๋ ๋ณ๊ฒฝ๋ฉ๋๋ค.
๋ค์์ ์ด๋ฌํ ๋ช ๋ น์ ์คํํ๋ ์์ ๋๋ค.

๊ธฐ๋ณธ์ ์ผ๋ก ์ด๋ฌํ ๋ช
๋ น์ ์์์ ์ค๋ช
ํ ๋๋ก kubeconfig ํ์ผ์ ํธ์งํฉ๋๋ค.
์ค์นํ๊ธฐ ์ํด์ kubectx, ์ง์นจ์ ๋ฐ๋ฅด์ธ์
๋ ๋ช ๋ น ๋ชจ๋ ์ปจํ ์คํธ ๋ฐ ๋ค์์คํ์ด์ค ์ด๋ฆ ์๋ ์์ฑ์ ์ง์ํ๋ฏ๋ก ์ด๋ฆ์ ๋ชจ๋ ์ ๋ ฅํ ํ์๊ฐ ์์ต๋๋ค. ์๋ ์์ฑ ์ค์ ์ง์นจ .
๋ ๋ค๋ฅธ ์ ์ฉํ ๊ธฐ๋ฅ kubectx ์ด . ์ ํธ๋ฆฌํฐ์ ํจ๊ป โโ์๋ํฉ๋๋ค. , ๋ณ๋๋ก ์ค์นํด์ผ ํฉ๋๋ค. fzf๋ฅผ ์ค์นํ๋ฉด ์๋์ผ๋ก ๋ํํ ๋ชจ๋๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํด์ง๋๋ค. kubectx๋ํํ ๋ชจ๋์์๋ fzf๊ฐ ์ ๊ณตํ๋ ๋ํํ ๋ฌด๋ฃ ๊ฒ์ ์ธํฐํ์ด์ค๋ฅผ ํตํด ์ปจํ
์คํธ์ ๋ค์์คํ์ด์ค๋ฅผ ์ ํํ ์ ์์ต๋๋ค.
์ ธ ๋ณ์นญ ์ฌ์ฉ
kubectl๋ ํด๋น ๋ช
๋ น์ ์ ๊ณตํ๋ฏ๋ก ํ์ฌ ์ปจํ
์คํธ์ ๋ค์์คํ์ด์ค๋ฅผ ๋ณ๊ฒฝํ๊ธฐ ์ํด ๋ณ๋์ ๋๊ตฌ๊ฐ ํ์ํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ค์ ๋ช
๋ น์ ์ฌ์ฉํฉ๋๋ค. kubectl config kubeconfig ํ์ผ์ ํธ์งํ๊ธฐ ์ํ ํ์ ๋ช
๋ น์ ์ ๊ณตํฉ๋๋ค.
๋ค์์ ๊ทธ ์ค ์ผ๋ถ์ ๋๋ค.
kubectl config get-contexts: ๋ชจ๋ ์ปจํ ์คํธ๋ฅผ ์ถ๋ ฅํฉ๋๋ค.kubectl config current-context: ํ์ฌ ์ปจํ ์คํธ๋ฅผ ๊ฐ์ ธ์ต๋๋ค.kubectl config use-context: ํ์ฌ ์ปจํ ์คํธ๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค.kubectl config set-context: ์ปจํ ์คํธ ์์๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค.
ํ์ง๋ง ์ด๋ฌํ ๋ช ๋ น์ด๋ ๋๋ฌด ๊ธธ์ด์ ์ง์ ์ฌ์ฉํ๊ธฐ ๋ถํธํฉ๋๋ค. ์คํํ๊ธฐ ์ฌ์ด ์ ธ ๋ณ์นญ์ ๋ง๋ค ์ ์์ต๋๋ค.
์ด ๋ช ๋ น๋ค์ ๊ธฐ๋ฐ์ผ๋ก kubectx์ ์ ์ฌํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋ณ์นญ ์ธํธ๋ฅผ ๋ง๋ค์์ต๋๋ค. ์ค์ ๋์์ ์ฌ๊ธฐ์์ ํ์ธํ ์ ์์ต๋๋ค.

๋ณ์นญ์ fzf๋ฅผ ์ฌ์ฉํ์ฌ ๋ํํ ์์ ๊ฒ์ ์ธํฐํ์ด์ค(kubectx ๋ํํ ๋ชจ๋์ ์ ์ฌ)๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ฆ, ๋ค์์ด ํ์ํฉ๋๋ค. ์ด๋ฌํ ๋ณ์นญ์ ์ฌ์ฉํฉ๋๋ค.
๋ณ์นญ์ ์ ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
# ะะพะปััะธัั ัะตะบััะธะน ะบะพะฝัะตะบัั
alias krc='kubectl config current-context'
# ะกะฟะธัะพะบ ะฒัะตั
ะบะพะฝัะตะบััะพะฒ
alias klc='kubectl config get-contexts -o name | sed "s/^/ /;|^ $(krc)$|s/ /*/"'
# ะะทะผะตะฝะธัั ัะตะบััะธะน ะบะพะฝัะตะบัั
alias kcc='kubectl config use-context "$(klc | fzf -e | sed "s/^..//")"'
# ะะพะปััะธัั ัะตะบััะตะต ะฟัะพัััะฐะฝััะฒะพ ะธะผะตะฝ
alias krn='kubectl config get-contexts --no-headers "$(krc)" | awk "{print $5}" | sed "s/^$/default/"'
# ะกะฟะธัะพะบ ะฒัะตั
ะฟัะพัััะฐะฝััะฒ ะธะผะตะฝ
alias kln='kubectl get -o name ns | sed "s|^.*/| |;|^ $(krn)$|s/ /*/"'
# ะะทะผะตะฝะธัั ัะตะบััะตะต ะฟัะพัััะฐะฝััะฒะพ ะธะผะตะฝ
alias kcn='kubectl config set-context --current --namespace "$(kln | fzf -e | sed "s/^..//")"' ์ด๋ฌํ ๋ณ์นญ์ ์ค์ ํ๋ ค๋ฉด ์์ ์ ์๋ฅผ ํ์ผ์ ์ถ๊ฐํด์ผ ํฉ๋๋ค. ~/.bashrc ๋๋ ~/.zshrc ์
ธ์ ์ฌ๋ถํ
ํ์ธ์.
ํ๋ฌ๊ทธ์ธ ์ฌ์ฉ
Kubectl์ ์ฌ์ฉํ๋ฉด ๊ธฐ๋ณธ ๋ช
๋ น๊ณผ ๋์ผํ ๋ฐฉ์์ผ๋ก ์คํ๋๋ ํ๋ฌ๊ทธ์ธ์ ๋ก๋ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด kubectl-foo ํ๋ฌ๊ทธ์ธ์ ์ค์นํ๊ณ ๋ค์ ๋ช
๋ น์ ์คํํ์ฌ ์คํํ ์ ์์ต๋๋ค. kubectl foo.
์๋ฅผ ๋ค์ด ์ปจํ
์คํธ์ ๋ค์์คํ์ด์ค๋ฅผ ์ด๋ฐ ๋ฐฉ์์ผ๋ก ๋ณ๊ฒฝํ๋ฉด ํธ๋ฆฌํฉ๋๋ค. kubectl ctx ๋ฌธ๋งฅ์ ๋ฐ๊พธ๊ณ kubectl ns ๋ค์์คํ์ด์ค๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค.
์ ๋ ์ด๋ฐ ์ผ์ ํ๋ ๋ ๊ฐ์ ํ๋ฌ๊ทธ์ธ์ ์ผ์ต๋๋ค.
ํ๋ฌ๊ทธ์ธ์ ์ด์ ์น์ ์ ๋ณ์นญ์ ๊ธฐ๋ฐ์ผ๋ก ์๋ํฉ๋๋ค.
์๋ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.

ํ๋ฌ๊ทธ์ธ์ fzf๋ฅผ ์ฌ์ฉํ์ฌ ๋ํํ ์์ ๊ฒ์ ์ธํฐํ์ด์ค(kubectx ๋ํํ ๋ชจ๋์ ์ ์ฌ)๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ฆ, ๋ค์์ด ํ์ํฉ๋๋ค.์ด๋ฌํ ๋ณ์นญ์ ์ฌ์ฉํฉ๋๋ค.
ํ๋ฌ๊ทธ์ธ์ ์ค์นํ๋ ค๋ฉด ์ด๋ฆ์ด ์ง์ ๋ ์
ธ ์คํฌ๋ฆฝํธ๋ฅผ ๋ค์ด๋ก๋ํด์ผ ํฉ๋๋ค. ะธ ์๋ฅผ ๋ค์ด PATH ๋ณ์์ ์๋ ๋ชจ๋ ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํ์ฌ ์คํ ๊ฐ๋ฅํ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค. chmod +x๊ทธ ํ์๋ ๋ฐ๋ก ์ฌ์ฉํ์ค ์ ์์ต๋๋ค. kubectl ctx ะธ kubectl ns.
5. ์๋ ๋ณ์นญ์ ์ฌ์ฉํ์ฌ ์ ๋ ฅ์ ๋จ์ถํฉ๋๋ค.
์ ธ ๋ณ์นญ์ ํ์ดํ ์๋๋ฅผ ๋์ด๋ ์ข์ ๋ฐฉ๋ฒ์ ๋๋ค. ํ๋ก์ ํธ ๊ธฐ๋ณธ kubectl ๋ช ๋ น์ ๋ํ ์ฝ 800๊ฐ์ ๋จ์ถํค๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
800๊ฐ์ ๋ณ์นญ์ ์ด๋ป๊ฒ ๊ธฐ์ตํด์ผ ํ ์ง ๊ถ๊ธํ์ค ๊ฒ๋๋ค. ํ์ง๋ง ๋ณ์นญ์ ์๋์ ๊ฐ์ ๊ฐ๋จํ ๊ตฌ์กฐ๋ก ๋ง๋ค์ด์ก๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ๊ธฐ์ตํ ํ์๋ ์์ต๋๋ค.

์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค
- kgpooyaml - kubectl get pods oyaml
- ksysgsvcw โ kubectl -n kube-system svc w ๊ฐ์ ธ์ค๊ธฐ
- ksysrmcm -kubectl -n kube-system rm cm
- kgdepallsl - kubectl๋ก ๋ชจ๋ sl ๋ฐฐํฌํ๊ธฐ
๋ณด์๋ค์ํผ ๋ณ์นญ์ kubectl ๋ช ๋ น์ ํน์ ์์๋ฅผ ๋ํ๋ด๋ ๊ตฌ์ฑ ์์๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค. ๊ฐ ๋ณ์นญ์ ๊ธฐ๋ณธ ๋ช ๋ น, ์์ ๋ฐ ๋ฆฌ์์ค์ ๋ํ ๊ตฌ์ฑ ์์ ํ๋์ ๋งค๊ฐ๋ณ์์ ๋ํ ๊ตฌ์ฑ ์์ ์ฌ๋ฌ ๊ฐ๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค. ์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ฌํ ๊ตฌ์ฑ ์์๋ฅผ "์ฑ์ฐ๊ธฐ๋ง" ํ๋ฉด ๋ฉ๋๋ค.
ํ์ฌ ์์ธ ๋ค์ด์ด๊ทธ๋จ์ ๋ค์ ์์น์ ์์ต๋๋ค. . ๊ฑฐ๊ธฐ์์๋ ์ฐพ์ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ๋ณ์นญ kgpooyamlall์ ๋ค์ ๋ช
๋ น๊ณผ ๋์ผํฉ๋๋ค. kubectl get pods -o yaml --all-namespaces.
์ต์
์ ์๋์ ์์๋ ์ค์ํ์ง ์์ต๋๋ค. ๋ช
๋ น kgpooyamlall ๋ช
๋ น๊ณผ ๋์ผํ๋ค kgpoalloyaml.
๋ชจ๋ ๊ตฌ์ฑ ์์๋ฅผ ๋ณ์นญ์ผ๋ก ์ฌ์ฉํ ์๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด k, kg, klo, ksys, kgpo ๋ํ, ๋ณ์นญ๊ณผ ์ผ๋ฐ ๋ช
๋ น ๋๋ ์ต์
์ ๋ช
๋ น์ค์์ ๊ฒฐํฉํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค
- ๋์ ์
kubectl proxy๊ธ์ ์ธ ์ ์๋์?k proxy. - ๋์ ์
kubectl get roles๊ธ์ ์ธ ์ ์๋์?kg roles(ํ์ฌ ์ญํ ๋ฆฌ์์ค์ ๋ํ ๋ณ์นญ์ ์์ต๋๋ค). - ํน์ ํฌ๋์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ์ป์ผ๋ ค๋ฉด ๋ค์ ๋ช
๋ น์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
kgpo my-pod โ kubectl get pod my-pod.
์ผ๋ถ ๋ณ์นญ์ ๋ช
๋ น์ค์์ ์ธ์๊ฐ ํ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ณ์นญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. kgpol ๋ฐฉ๋ฒ kubectl get pods -l. ์ต์
-l ์ธ์๊ฐ ํ์ํฉ๋๋ค. ๋ ์ด๋ธ ์ง์ ์
๋๋ค. ๋ณ์นญ์ ์ฌ์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค. kgpol app=ui.
์ผ๋ถ ๋ณ์นญ์๋ ์ธ์๊ฐ ํ์ํ๋ฏ๋ก ๋ณ์นญ a, f, l์ ๋ง์ง๋ง์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ด ๋ฐฉ์์ ์ตํ๋ฉด ์คํํ๋ ค๋ ๋ช ๋ น์์ ๋ณ์นญ์ ์ง๊ด์ ์ผ๋ก ํ์์ํฌ ์ ์์ด ์ ๋ ฅ ์๊ฐ์ ํฌ๊ฒ ์ ์ฝํ ์ ์์ต๋๋ค.
์ค์น
kubectl-aliases๋ฅผ ์ค์นํ๋ ค๋ฉด ํ์ผ์ ๋ค์ด๋ก๋ํด์ผ ํฉ๋๋ค. GitHub์์ ๊ฐ์ ธ์์ ํ์ผ์ ํฌํจ์ํต๋๋ค. ~/.bashrc ๋๋ ~/.zshrc:
source ~/.kubectl_aliases์๋ ์์ฑ
์์ ๋ง์๋๋ ธ๋ฏ์ด, ๋ช ๋ น์ค์์ ๋ณ์นญ์ ์ถ๊ฐ ๋จ์ด๋ฅผ ์ถ๊ฐํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
$ kgpooyaml test-pod-d4b77b989kubectl ๋ช ๋ น์ด ์์ฑ์ ์ฌ์ฉํ์ ๋ค๋ฉด ๋ฆฌ์์ค ์ด๋ฆ ๊ฐ์ ํญ๋ชฉ์ ์๋ ์์ฑ ๊ธฐ๋ฅ์ ์ฌ์ฉํด ๋ณด์ จ์ ๊ฒ๋๋ค. ๊ทธ๋ฐ๋ฐ ๋ณ์นญ์ ์ฌ์ฉํ ๋๋ ์๋ ์์ฑ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์๊น์?
์ด๊ฒ์ ๋งค์ฐ ์ค์ํ ์ง๋ฌธ์ ๋๋ค. ์๋ ์์ฑ์ด ์๋ํ์ง ์์ผ๋ฉด ๋ณ์นญ์ ์ด์ ์ค ์ผ๋ถ๋ฅผ ์๊ฒ ๋๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ต๋ณ์ ์ฌ์ฉํ๋ ์ ธ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค.
- Zsh์์๋ ๋ณ์นญ์ ๋ํ ์๋ ์์ฑ ๊ธฐ๋ฅ์ด ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ํฉ๋๋ค.
- ๋ถํํ๋ Bash์ ๊ฒฝ์ฐ ์๋ ์์ฑ ๊ธฐ๋ฅ์ ์๋์ํค๋ ค๋ฉด ๋ช ๊ฐ์ง ์์ ์ด ํ์ํฉ๋๋ค.
Bash์์ ๋ณ์นญ์ ๋ํ ์๋ ์์ฑ ํ์ฑํ
Bash์ ๋ฌธ์ ์ ์ (Tab ํค๋ฅผ ๋๋ฅผ ๋๋ง๋ค) ๋ณ์นญ์ด ์ฐธ์กฐํ๋ ๋ช ๋ น(์๋ฅผ ๋ค์ด Zsh์ฒ๋ผ)์ด ์๋๋ผ ๋ณ์นญ ์์ฒด๋ฅผ ์์ฑํ๋ ค ํ๋ค๋ ๊ฒ์ ๋๋ค. 800๊ฐ์ ๋ณ์นญ์ ๋ํ ์์ฑ ์คํฌ๋ฆฝํธ๊ฐ ์๊ธฐ ๋๋ฌธ์ ์์ฑ์ด ์๋ํ์ง ์์ต๋๋ค.
๊ณํ ์ด ๋ฌธ์ ์ ๋ํ ์ผ๋ฐ์ ์ธ ํด๊ฒฐ์ฑ ์ ์ ๊ณตํฉ๋๋ค. ๋ณ์นญ ์์ฑ ๋ฉ์ปค๋์ฆ์ ์ฐ๊ฒฐํ์ฌ ๋ด๋ถ์ ์ผ๋ก ๋ช ๋ น์ ๋ณ์นญ์ ์์ฑํ๊ณ , ์์ฑ๋ ๋ช ๋ น์ ๋ํ ์์ฑ ์ต์ ์ ๋ฐํํฉ๋๋ค. ์ฆ, ๋ณ์นญ ์์ฑ์ ์ ์ฒด ๋ช ๋ น ์์ฑ๊ณผ ๋์ผํ๊ฒ ์๋ํฉ๋๋ค.
๋ค์์ผ๋ก, complete-alias๋ฅผ ์ค์นํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๊ณ , ๋ชจ๋ kubectl ๋ณ์นญ์ ๋ํด ์์ฑ์ ํ์ฑํํ๋๋ก ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๊ฒ ์ต๋๋ค.
complete-alias ์ค์น
์ฐ์ , complete-alias๋ ๋ค์์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. . ะะพััะพะผั ะฟะตัะตะด ัััะฐะฝะพะฒะบะพะน complete-alias ะฝะตะพะฑั ะพะดะธะผะพ ัะฑะตะดะธัััั, ััะพ bash-completion ัััะฐะฝะพะฒะปะตะฝ. ะะฝััััะบัะธะธ ะฟะพ ัััะฐะฝะพะฒะบะต ะฑัะปะธ ะดะฐะฝั ัะฐะฝะตะต ะดะปั Linux ๊ทธ๋ฆฌ๊ณ ๋งฅOS.
MacOS ์ฌ์ฉ์๋ฅผ ์ํ ์ค์ ์ฐธ๊ณ ์ฌํญ: kubectl ์๋ ์์ฑ ์คํฌ๋ฆฝํธ์ ๋ง์ฐฌ๊ฐ์ง๋ก, complete-alias๋ MacOS์ ๊ธฐ๋ณธ ๋ฒ์ ์ธ Bash 3.2์์๋ ์๋ํ์ง ์์ต๋๋ค. ํนํ, complete-alias๋ bash-completion v2์ ์์กดํฉ๋๋ค(brew install bash-completion@2), ์ต์ Bash 4.1์ด ํ์ํฉ๋๋ค. ์ฆ, MacOS์์ complete-alias๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์ต์ ๋ฒ์ ์ Bash๋ฅผ ์ค์นํด์ผ ํฉ๋๋ค.
์คํฌ๋ฆฝํธ๋ฅผ ๋ค์ด๋ก๋ํด์ผ ํฉ๋๋ค ์ผ๋ก ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ๋น์ ์ ํ์ผ์ ํฌํจ์ํค์ธ์ ~/.bashrc:
source ~/bash_completion.sh์ ธ์ ์ฌ์์ํ๋ฉด complete-alias๊ฐ ์์ ํ ์ค์น๋ฉ๋๋ค.
kubectl ๋ณ์นญ์ ๋ํ ์๋ ์์ฑ ํ์ฑํ
๊ธฐ์ ์ ์ผ๋ก complete-alias๋ ์
ธ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. _complete_alias์ด ํจ์๋ ๋ณ์นญ์ ํ์ธํ๊ณ ๋ณ์นญ ๋ช
๋ น์ ๋ํ ์์ฑ ํํธ๋ฅผ ๋ฐํํฉ๋๋ค.
ํน์ ๋ณ์นญ๊ณผ ํจ์๋ฅผ ์ฐ๊ฒฐํ๋ ค๋ฉด Bash ๋ด์ฅ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. , ์ค์นํ๋ ค๋ฉด _complete_alias ๋ณ์นญ ๋ณด์์ ํจ์๋ก์.
์๋ฅผ ๋ค์ด, kubectl ๋ช
๋ น์ ์๋ฏธํ๋ ๋ณ์นญ k๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ค์นํ๋ ค๋ฉด _complete_alias ์ด ๋ณ์นญ์ ๋ํ ๋ณด์ ํจ์๋ก ๋ค์ ๋ช
๋ น์ ์คํํด์ผ ํฉ๋๋ค.
$ complete -F _complete_alias k ๊ทธ ๊ฒฐ๊ณผ ๋ณ์นญ k๋ฅผ ์๋ ์์ฑํ ๋๋ง๋ค ํจ์๊ฐ ํธ์ถ๋ฉ๋๋ค. _complete_alias๋ณ์นญ์ ํ์ธํ๊ณ ๋ช
๋ น์ ๋ํ ์๋ฃ ํํธ๋ฅผ ๋ฐํํฉ๋๋ค. kubectl.
๋ ๋ฒ์งธ ์๋ก ๋ณ์นญ์ ์ฌ์ฉํด ๋ณด๊ฒ ์ต๋๋ค. kg, ์ฆ kubectl get:
$ complete -F _complete_alias kg ์ด์ ์์ ๋ง์ฐฌ๊ฐ์ง๋ก kg๋ฅผ ์๋ ์์ฑํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์์ฑ ์ ์์ ๋ฐ๊ฒ ๋ฉ๋๋ค. kubectl get.
์ด๋ฐ ์์ผ๋ก complete-alias๋ฅผ ์์คํ ์ ๋ชจ๋ ๋ณ์นญ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ๋ชจ๋ kubectl ๋ณ์นญ์ ๋ํด ์๋ ์์ฑ์ ํ์ฑํํ๋ ค๋ฉด ๊ฐ ๋ณ์นญ์ ๋ํด ์ ๋ช
๋ น์ ์คํํด์ผ ํฉ๋๋ค. ๋ค์ ์ค๋ํซ์ kubectl-aliases๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์ค์ ํ๋ค๊ณ ๊ฐ์ ํ๊ณ ์ด๋ฅผ ์ํํฉ๋๋ค. ~/.kubectl-aliases:
for _a in $(sed '/^alias /!d;s/^alias //;s/=.*$//' ~/.kubectl_aliases);
do
complete -F _complete_alias "$_a"
done ์ด ์ฝ๋๋ ๋ค์์ ๋ฐฐ์นํด์ผ ํฉ๋๋ค. ~/.bashrc์
ธ์ ๋ค์ ์์ํ๋ฉด 800๊ฐ์ ๋ชจ๋ kubectl ๋ณ์นญ์ ๋ํด ์๋ ์์ฑ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
6. ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ์ฌ kubectl ํ์ฅ
~๋ถํฐ ์์ , kubectl ์ง์ ์ถ๊ฐ ๋ช ๋ น์ผ๋ก ๊ธฐ๋ฅ์ ํ์ฅํ ์ ์์ต๋๋ค.
๋น์ ์ด ์ต์ํ ๊ฒฝ์ฐ ๊ทธ๋ฌ๋ฉด kubectl ํ๋ฌ๊ทธ์ธ๋ ๊ฐ์ ์๋ฆฌ๋ก ๊ตฌ์ถ๋ฉ๋๋ค.
์ด ์ฅ์์๋ ํ๋ฌ๊ทธ์ธ์ ์ค์นํ๋ ๋ฐฉ๋ฒ, ํ๋ฌ๊ทธ์ธ์ ์ฐพ์ ์ ์๋ ์์น, ๊ทธ๋ฆฌ๊ณ ๋๋ง์ ํ๋ฌ๊ทธ์ธ์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ํด ์ดํด๋ณด๊ฒ ์ต๋๋ค.
ํ๋ฌ๊ทธ์ธ ์ค์น
Kubectl ํ๋ฌ๊ทธ์ธ์ ๋ค์๊ณผ ๊ฐ์ ์ด๋ฆ์ ๊ฐ๋จํ ์คํ ํ์ผ๋ก ๋ฐฐํฌ๋ฉ๋๋ค. kubectl-x. ์ ๋์ฌ kubectl- ํ๋ฌ๊ทธ์ธ์ ํธ์ถํ ์ ์๋ ์๋ก์ด kubectl ํ์ ๋ช
๋ น์ด ๋ค๋ฐ๋ฆ
๋๋ค.
์๋ฅผ ๋ค์ด, hello ํ๋ฌ๊ทธ์ธ์ ๋ค์ ์ด๋ฆ์ ํ์ผ๋ก ๋ฐฐํฌ๋ฉ๋๋ค. kubectl-hello.
ํ๋ฌ๊ทธ์ธ์ ์ค์นํ๋ ค๋ฉด ํ์ผ์ ๋ณต์ฌํด์ผ ํฉ๋๋ค. kubectl-x ์๋ฅผ ๋ค์ด PATH ๋ณ์์ ์๋ ๋ชจ๋ ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํ์ฌ ์คํ ๊ฐ๋ฅํ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค. chmod +x. ๊ทธ ์งํ์ ํ๋ฌ๊ทธ์ธ์ ํธ์ถํ ์ ์์ต๋๋ค. kubectl x.
๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ๋ฉด ํ์ฌ ์์คํ ์ ์ค์น๋ ๋ชจ๋ ํ๋ฌ๊ทธ์ธ์ ๋์ดํ ์ ์์ต๋๋ค.
$ kubectl plugin list์ด ๋ช ๋ น์ ๊ฐ์ ์ด๋ฆ์ ํ๋ฌ๊ทธ์ธ์ด ์ฌ๋ฌ ๊ฐ ์๊ฑฐ๋, ์คํํ ์ ์๋ ํ๋ฌ๊ทธ์ธ ํ์ผ์ด ์๋ ๊ฒฝ์ฐ์๋ ๊ฒฝ๊ณ ๋ฅผ ํ์ํฉ๋๋ค.
Krew๋ก ํ๋ฌ๊ทธ์ธ ์ฐพ๊ธฐ ๋ฐ ์ค์น
Kubectl ํ๋ฌ๊ทธ์ธ์ ์ํํธ์จ์ด ํจํค์ง์ฒ๋ผ ๊ณต์ ํ๊ณ ์ฌ์ฌ์ฉํ ์ ์์ต๋๋ค. ํ์ง๋ง ๋ค๋ฅธ ์ฌ๋๋ค์ด ๊ณต์ ํ ํ๋ฌ๊ทธ์ธ์ ์ด๋์์ ์ฐพ์ ์ ์์๊น์?
kubectl ํ๋ฌ๊ทธ์ธ ๊ณต์ , ๊ฒ์, ์ค์น ๋ฐ ๊ด๋ฆฌ๋ฅผ ์ํ ํตํฉ ์๋ฃจ์ ์ ์ ๊ณตํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค. ์ด ํ๋ก์ ํธ๋ ์ค์ค๋ก๋ฅผ "kubectl ํ๋ฌ๊ทธ์ธ ํจํค์ง ๊ด๋ฆฌ์"๋ผ๊ณ ๋ถ๋ฆ ๋๋ค(Krew๋ ).
Krew๋ ์ ํํ๊ณ ์ค์นํ ์ ์๋ kubectl ํ๋ฌ๊ทธ์ธ ๋ชฉ๋ก์ ๋๋ค. Krew๋ kubectl ํ๋ฌ๊ทธ์ธ์ด๊ธฐ๋ ํฉ๋๋ค.
์ฆ, Krew ์ค์น๋ ๋ค๋ฅธ kubectl ํ๋ฌ๊ทธ์ธ ์ค์น์ ๊ฑฐ์ ๋์ผํ๊ฒ ์งํ๋ฉ๋๋ค. ์์ธํ ์ง์นจ์ ๋ค์์์ ํ์ธํ ์ ์์ต๋๋ค. .
๊ฐ์ฅ ์ค์ํ Krew ๋ช ๋ น์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
# ะะพะธัะบ ะฒ ัะฟะธัะบะต ะฟะปะฐะณะธะฝะพะฒ
$ kubectl krew search [<query>]
# ะะพัะผะพััะตัั ะธะฝัะพัะผะฐัะธั ะพ ะฟะปะฐะณะธะฝะต
$ kubectl krew info <plugin>
# ะฃััะฐะฝะพะฒะธัั ะฟะปะฐะณะธะฝ
$ kubectl krew install <plugin>
# ะะฑะฝะพะฒะธัั ะฒัะต ะฟะปะฐะณะธะฝั ะดะพ ะฟะพัะปะตะดะฝะตะน ะฒะตััะธะธ
$ kubectl krew upgrade
# ะะพัะผะพััะตัั ะฒัะต ะฟะปะฐะณะธะฝั, ัััะฐะฝะพะฒะปะตะฝะฝัะต ัะตัะตะท Krew
$ kubectl krew list
# ะะตะธะฝััะฐะปะปะธัะพะฒะฐัั ะฟะปะฐะณะธะฝ
$ kubectl krew remove <plugin>Krew๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ฌ๊ทธ์ธ์ ์ค์นํ๋๋ผ๋ ์์ ์ค๋ช ๋ ํ์ค ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ํ๋ฌ๊ทธ์ธ์ ์ค์นํ๋ ๊ฒ๊ณผ ๊ฐ์ญํ์ง ์์ต๋๋ค.
๋ช
๋ น์ด๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์ kubectl krew list Krew๋ฅผ ์ฌ์ฉํ์ฌ ์ค์น๋ ํ๋ฌ๊ทธ์ธ๋ง ํ์ํ๋ ๋ฐ๋ฉด ๋ช
๋ น์ kubectl plugin list Krew์ ํจ๊ป ์ค์น๋ ํ๋ฌ๊ทธ์ธ๊ณผ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ์ค์น๋ ํ๋ฌ๊ทธ์ธ์ ๋ชจ๋ ๋์ดํฉ๋๋ค.
๋ค๋ฅธ ๊ณณ์์ ํ๋ฌ๊ทธ์ธ ๊ฒ์
Krew๋ ํ์ฌ ์งํ ์ค์ธ ์ ์ ํ๋ก์ ํธ์ ๋๋ค. ์ด 30๊ฐ ์ ๋์ ํ๋ฌ๊ทธ์ธ์ด ์์ต๋๋ค. ํ์ํ ํ๋ฌ๊ทธ์ธ์ ์ฐพ์ง ๋ชปํ์ จ๋ค๋ฉด GitHub ๋ฑ ๋ค๋ฅธ ๊ณณ์์ ํ๋ฌ๊ทธ์ธ์ ์ฐพ์๋ณด์ค ์ ์์ต๋๋ค.
GitHub ์น์ ์ ์ดํด๋ณด๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ฌ๊ธฐ์์๋ ํ์ธํ ๋งํ ์์ญ ๊ฐ์ ํ๋ฌ๊ทธ์ธ์ ์ฐพ์ ์ ์์ต๋๋ค.
๋๋ง์ ํ๋ฌ๊ทธ์ธ ์์ฑํ๊ธฐ
๋น์ ์ ์ค์ค๋ก ํ ์ ์์ต๋๋ค โ ์ด๋ ต์ง ์์ต๋๋ค. ์ํ๋ ์์
์ ์ํํ๋ ์คํ ํ์ผ์ ๋ง๋ค๊ณ ์ด๋ฆ์ ๋ค์๊ณผ ๊ฐ์ด ์ง์ ํ๋ฉด ๋ฉ๋๋ค. kubectl-x ์์ ์ค๋ช
ํ ๋๋ก ์ค์นํ์ธ์.
ํ์ผ์ bash ์คํฌ๋ฆฝํธ, python ์คํฌ๋ฆฝํธ ๋๋ ์ปดํ์ผ๋ go ์ ํ๋ฆฌ์ผ์ด์ ์ผ ์ ์์ต๋๋ค. ์ด๋ค ํ์ผ์ด๋ ์๊ด์์ต๋๋ค. ์ ์ผํ ์๊ตฌ ์ฌํญ์ ์ด์ ์ฒด์ ์์ ์ง์ ์คํ๋ ์ ์์ด์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค.
์ง๊ธ ๋ฐ๋ก ์์ ํ๋ฌ๊ทธ์ธ์ ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค. ์ด์ ์น์
์์๋ kubectl ๋ช
๋ น์ ์ฌ์ฉํ์ฌ ๊ฐ ํฌ๋์ ์ปจํ
์ด๋๋ฅผ ๋์ดํ์ต๋๋ค. ์ด ๋ช
๋ น์ ๋ค์๊ณผ ๊ฐ์ด ํธ์ถํ ์ ์๋ ํ๋ฌ๊ทธ์ธ์ผ๋ก ์ฝ๊ฒ ๋ณํํ ์ ์์ต๋๋ค. kubectl img.
ํ์ผ ๋ง๋ค๊ธฐ kubectl-img ๋ค์ ๋ด์ฉ :
#!/bin/bash
kubectl get pods -o custom-columns='NAME:metadata.name,IMAGES:spec.containers[*].image' ์ด์ ๋ค์์ ์ฌ์ฉํ์ฌ ํ์ผ์ ์คํ ๊ฐ๋ฅํ๊ฒ ๋ง๋์ญ์์ค. chmod +x kubectl-img PATH์ ์๋ ๋๋ ํ ๋ฆฌ๋ก ์ฎ๊ธฐ์ธ์. ๊ทธ ํ ๋ฐ๋ก ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. kubectl img.
์์ ์ธ๊ธํ๋ฏ์ด kubectl ํ๋ฌ๊ทธ์ธ์ ๋ชจ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ์คํฌ๋ฆฝํ ์ธ์ด๋ก ์์ฑํ ์ ์์ต๋๋ค. ์ ธ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ํ๋ฌ๊ทธ์ธ ๋ด์์ kubectl์ ์ฝ๊ฒ ํธ์ถํ ์ ์๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค. ํ์ง๋ง ์ค์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ๋ ๋ณต์กํ ํ๋ฌ๊ทธ์ธ์ ์์ฑํ ์๋ ์์ต๋๋ค. Go๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ค์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. kubectl ํ๋ฌ๊ทธ์ธ์ ์์ฑํ๊ธฐ ์ํด ํน๋ณํ ๋ง๋ค์ด์ง ๊ฒ์ ๋๋ค.
ํ๋ฌ๊ทธ์ธ์ ๊ณต์ ํ๋ ๋ฐฉ๋ฒ
์ฌ๋ฌ๋ถ์ ํ๋ฌ๊ทธ์ธ์ด ๋ค๋ฅธ ์ฌ๋๋ค์๊ฒ ์ ์ฉํ๋ค๊ณ ์๊ฐ๋์๋ฉด GitHub์ ๊ณต์ ํด ์ฃผ์ธ์. ํด๋น ์ฃผ์ ์๋ ๊ผญ ์ถ๊ฐํด ์ฃผ์ธ์. .
ํ๋ฌ๊ทธ์ธ์ ์ถ๊ฐํ๋๋ก ์์ฒญํ ์๋ ์์ต๋๋ค. . ์ด๋ฅผ ์ํํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ง์นจ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. .
๋ช ๋ น ์๋ฃ
ํ๋ฌ๊ทธ์ธ์ ํ์ฌ ์๋ ์์ฑ์ ์ง์ํ์ง ์์ผ๋ฏ๋ก ์ ์ฒด ํ๋ฌ๊ทธ์ธ ์ด๋ฆ๊ณผ ์ ์ฒด ์ธ์ ์ด๋ฆ์ ์ ๋ ฅํด์ผ ํฉ๋๋ค.
GitHub ์ ์ฅ์์ ์ด ๊ธฐ๋ฅ์ ๋ํ kubectl ์ ์ฅ์๊ฐ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ด ๊ธฐ๋ฅ์ด ์ธ์ ๊ฐ๋ ๋ฏธ๋์ ๊ตฌํ๋ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค.
ํ์ด์ ๋น์ด ์ !!!
์ฃผ์ ์ ๋ํด ๋ ์ฝ์ ๋ด์ฉ:
- .
- .
- .
์ถ์ฒ : habr.com







