kubectl์„ ๋ณด๋‹ค ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•: ์ž์„ธํ•œ ๊ฐ€์ด๋“œ

kubectl์„ ๋ณด๋‹ค ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•: ์ž์„ธํ•œ ๊ฐ€์ด๋“œ
์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์‹ ๋‹ค๋ฉด kubectl์€ ์•„๋งˆ๋„ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๋„๊ตฌ ์ค‘ ํ•˜๋‚˜์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํŠน์ • ๋„๊ตฌ๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฐ ๋งŽ์€ ์‹œ๊ฐ„์„ ํˆฌ์žํ•  ๋•Œ๋งˆ๋‹ค ํ•ด๋‹น ๋„๊ตฌ๋ฅผ ์ œ๋Œ€๋กœ ๋ฐฐ์šฐ๊ณ  ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ตํžˆ๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

ํŒ€ Mail.ru์˜ Kubernetes aaS ๋‹ค๋‹ˆ์—˜ ๋ฐ”์ด๋ฒจ์˜ ๊ธ€์„ ๋ฒˆ์—ญํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธ€์—๋Š” kubectl์„ ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ํŒ๊ณผ ์š”๋ น์ด ๋‹ด๊ฒจ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ์ž‘๋™ ๋ฐฉ์‹์„ ๋” ์ž˜ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ €์ž์— ๋”ฐ๋ฅด๋ฉด, ์ด ๊ธฐ์‚ฌ์˜ ๋ชฉ์ ์€ Kubernetes๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ผ์ƒ ์—…๋ฌด๋ฅผ ๋ณด๋‹ค ํšจ์œจ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ๋ณด๋‹ค ์ฆ๊ฒ๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค!

์†Œ๊ฐœ: kubectl์ด๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

kubectl์„ ๋ณด๋‹ค ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šฐ๊ธฐ ์ „์— kubectl์ด ๋ฌด์—‡์ด๊ณ  ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ๊ธฐ๋ณธ์ ์ธ ์ดํ•ด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ๊ด€์ ์—์„œ kubectl์€ Kubernetes ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ œ์–ดํŒ์ž…๋‹ˆ๋‹ค.

๊ธฐ์ˆ ์ ์œผ๋กœ ๋งํ•˜๋ฉด kubectl์€ Kubernetes API ํด๋ผ์ด์–ธํŠธ์ž…๋‹ˆ๋‹ค.

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค API๋Š” HTTP REST API์ž…๋‹ˆ๋‹ค. ์ด API๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ์‹ค์ œ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์ด๋ฉฐ, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ชจ๋“  ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์ž‘์—…์€ API ์—”๋“œํฌ์ธํŠธ๋กœ ํ‘œํ˜„๋˜๋ฉฐ ํ•ด๋‹น ์—”๋“œํฌ์ธํŠธ์— ๋Œ€ํ•œ HTTP ์š”์ฒญ์„ ํ†ตํ•ด ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ kubectl์˜ ์ฃผ์š” ์ž‘์—…์€ Kubernetes API์— HTTP ์š”์ฒญ์„ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

kubectl์„ ๋ณด๋‹ค ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•: ์ž์„ธํ•œ ๊ฐ€์ด๋“œ
์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ์™„์ „ํ•œ ๋ฆฌ์†Œ์Šค ์ง€ํ–ฅ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ๋‚ด๋ถ€ ๋ฆฌ์†Œ์Šค ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋ฉฐ ๋ชจ๋“  ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์ž‘์—…์€ 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 ์ฐธ์กฐ์— ๋‚˜์—ด๋œ ์—”๋“œํฌ์ธํŠธ ๊ฒฝ๋กœ์— API ์„œ๋ฒ„ URL์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์œ„ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด kubectl์€ ์œ„ API ์—”๋“œํฌ์ธํŠธ๋กœ HTTP POST ์š”์ฒญ์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. replicaset.yaml, ์š”์ฒญ ๋ณธ๋ฌธ์— ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ชจ๋“  ๋ช…๋ น์— ๋Œ€ํ•ด kubectl์ด ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ๊ฒฝ์šฐ์— kubectl์€ ๋‹จ์ˆœํžˆ ์ ์ ˆํ•œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค API ์—”๋“œํฌ์ธํŠธ๋กœ HTTP ์š”์ฒญ์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Kubernetes๋ฅผ ์™„์ „ํžˆ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. curlKubernetes API์— HTTP ์š”์ฒญ์„ ์ˆ˜๋™์œผ๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. Kubectl์€ Kubernetes API ์‚ฌ์šฉ์„ ๋”์šฑ ๊ฐ„ํŽธํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค.

kubectl์˜ ๊ธฐ๋ณธ ์›๋ฆฌ์™€ ์ž‘๋™ ๋ฐฉ์‹์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ชจ๋“  kubectl ์‚ฌ์šฉ์ž๊ฐ€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค API์— ๋Œ€ํ•ด ์•Œ์•„์•ผ ํ•  ๋ช‡ ๊ฐ€์ง€ ์‚ฌํ•ญ์ด ๋” ์žˆ์Šต๋‹ˆ๋‹ค. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ๋‚ด๋ถ€ ์ž‘๋™ ๋ฐฉ์‹์„ ๊ฐ„๋žตํ•˜๊ฒŒ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ๋‚ด๋ถ€ ์„ธ๊ณ„

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ํด๋Ÿฌ์Šคํ„ฐ ๋…ธ๋“œ์—์„œ ๋ณ„๋„์˜ ํ”„๋กœ์„ธ์Šค๋กœ ์‹คํ–‰๋˜๋Š” ๋…๋ฆฝ์ ์ธ ๊ตฌ์„ฑ ์š”์†Œ ์ง‘ํ•ฉ์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ผ๋ถ€ ๊ตฌ์„ฑ ์š”์†Œ๋Š” ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ์—์„œ ์‹คํ–‰๋˜๊ณ , ๋‹ค๋ฅธ ๊ตฌ์„ฑ ์š”์†Œ๋Š” ์›Œ์ปค ๋…ธ๋“œ์—์„œ ์‹คํ–‰๋˜๋ฉฐ, ๊ฐ ๊ตฌ์„ฑ ์š”์†Œ๋Š” ๊ณ ์œ ํ•œ ์ „๋ฌธํ™”๋œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๋งˆ์Šคํ„ฐ ๋…ธ๋“œ์˜ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ตฌ์„ฑ ์š”์†Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ๋‘ฅ๊ทผ ์ฒœ์žฅ โ€” ๋ฆฌ์†Œ์Šค ์ •์˜๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค(๋ณดํ†ต์€ etcd์•ผ).
  2. API ์„œ๋ฒ„ โ€” API๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์ €์žฅ์†Œ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  3. ์ปจํŠธ๋กค๋Ÿฌ ๊ด€๋ฆฌ์ž - ๋ฆฌ์†Œ์Šค ์ƒํƒœ๊ฐ€ ์‚ฌ์–‘์„ ์ค€์ˆ˜ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  4. ์Šค์ผ€์ค„๋Ÿฌ - ์›Œ์ปค ๋…ธ๋“œ์— ํฌ๋“œ๋ฅผ ์˜ˆ์•ฝํ•ฉ๋‹ˆ๋‹ค.

์›Œ์ปค ๋…ธ๋“œ์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ตฌ์„ฑ ์š”์†Œ ์ค‘ ํ•˜๋‚˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ์ฟ ๋ฒจ๋ › โ€” ์›Œ์ปค ๋…ธ๋“œ์—์„œ ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์–ด๋–ป๊ฒŒ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋Š”์ง€ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ์˜ˆ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ฐฉ๊ธˆ ์™„๋ฃŒํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. kubectl create -f replicaset.yaml, ๊ทธ ํ›„ kubectl์ด HTTP POST ์š”์ฒญ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ReplicaSet API ์—”๋“œํฌ์ธํŠธ (ReplicaSet ๋ฆฌ์†Œ์Šค ์ •์˜ ์ „๋‹ฌ).

ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์—์„œ๋Š” ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋‚˜์š”?

  1. ํ•œ ํ›„ kubectl create -f replicaset.yaml API ์„œ๋ฒ„๋Š” ReplicaSet ๋ฆฌ์†Œ์Šค ์ •์˜๋ฅผ ์ €์žฅ์†Œ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

    kubectl์„ ๋ณด๋‹ค ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•: ์ž์„ธํ•œ ๊ฐ€์ด๋“œ

  2. ๋‹ค์Œ์œผ๋กœ, ReplicaSet ๋ฆฌ์†Œ์Šค์˜ ์ƒ์„ฑ, ์ˆ˜์ • ๋ฐ ์‚ญ์ œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ปจํŠธ๋กค๋Ÿฌ ๊ด€๋ฆฌ์ž์—์„œ ReplicaSet ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.

    kubectl์„ ๋ณด๋‹ค ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•: ์ž์„ธํ•œ ๊ฐ€์ด๋“œ

  3. ReplicaSet ์ปจํŠธ๋กค๋Ÿฌ๋Š” ReplicaSet ์ •์˜์˜ ํฌ๋“œ ํ…œํ”Œ๋ฆฟ์— ๋”ฐ๋ผ ReplicaSet์˜ ๊ฐ ๋ณต์ œ๋ณธ์— ๋Œ€ํ•œ ํฌ๋“œ ์ •์˜๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ด๋ฅผ ์ €์žฅ์†Œ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

    kubectl์„ ๋ณด๋‹ค ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•: ์ž์„ธํ•œ ๊ฐ€์ด๋“œ

  4. ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์‹œ์ž‘๋˜์–ด ์•„์ง ์–ด๋–ค ์ž‘์—…์ž ๋…ธ๋“œ์—๋„ ํ• ๋‹น๋˜์ง€ ์•Š์€ ํฌ๋“œ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค.

    kubectl์„ ๋ณด๋‹ค ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•: ์ž์„ธํ•œ ๊ฐ€์ด๋“œ

  5. ์Šค์ผ€์ค„๋Ÿฌ๋Š” ๊ฐ ํฌ๋“œ์— ์ ํ•ฉํ•œ ์›Œ์ปค ๋…ธ๋“œ๋ฅผ ์„ ํƒํ•˜๊ณ  ์ด ์ •๋ณด๋ฅผ ์Šคํ† ๋ฆฌ์ง€์˜ ํฌ๋“œ ์ •์˜์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

    kubectl์„ ๋ณด๋‹ค ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•: ์ž์„ธํ•œ ๊ฐ€์ด๋“œ

  6. ํฌ๋“œ๊ฐ€ ํ• ๋‹น๋œ ์ž‘์—…์ž ๋…ธ๋“œ์—์„œ Kubelet์ด ์‹คํ–‰๋˜์–ด ํ•ด๋‹น ๋…ธ๋“œ์— ํ• ๋‹น๋œ ํฌ๋“œ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค.

    kubectl์„ ๋ณด๋‹ค ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•: ์ž์„ธํ•œ ๊ฐ€์ด๋“œ

  7. Kubelet์€ ์ €์žฅ์†Œ์—์„œ Pod ์ •์˜๋ฅผ ์ฝ๊ณ  Docker์™€ ๊ฐ™์€ ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„์— ๋…ธ๋“œ์—์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹œ์ž‘ํ•˜๋„๋ก ์ง€์‹œํ•ฉ๋‹ˆ๋‹ค.

    kubectl์„ ๋ณด๋‹ค ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•: ์ž์„ธํ•œ ๊ฐ€์ด๋“œ

์•„๋ž˜๋Š” ์ด ์„ค๋ช…์˜ ํ…์ŠคํŠธ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค.

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๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์ƒํ˜ธ ์ž‘์šฉํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ์˜ˆ๋ฅผ ๊ณ ๋ คํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.:

  1. ReplicaSet ์ปจํŠธ๋กค๋Ÿฌ๋Š” API ์—”๋“œํฌ์ธํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ReplicaSets ๋ชฉ๋ก ๋งค๊ฐœ๋ณ€์ˆ˜ ํฌํ•จ watch ReplicaSet ๋ฆฌ์†Œ์Šค์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค.
  2. ReplicaSet ์ปจํŠธ๋กค๋Ÿฌ๋Š” API ์—”๋“œํฌ์ธํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํฌ๋“œ ์ƒ์„ฑ (pod ์ƒ์„ฑ) pod๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  3. ์Šค์ผ€์ค„๋Ÿฌ๋Š” API ์—”๋“œํฌ์ธํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํŒจ์น˜ ํฌ๋“œ (pod ๋ณ€๊ฒฝ) ์„ ํƒํ•œ ์ž‘์—…์ž ๋…ธ๋“œ์— ๋Œ€ํ•œ ์ •๋ณด๋กœ pod๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

๋ณด์‹œ๋‹ค์‹œํ”ผ, ์ด๋Š” kubectl์ด ์•ก์„ธ์Šคํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ API์ž…๋‹ˆ๋‹ค. ๋™์ผํ•œ API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‚ด๋ถ€ ๊ตฌ์„ฑ ์š”์†Œ์™€ ์™ธ๋ถ€ ์‚ฌ์šฉ์ž๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ๊ธฐ๋ณธ ์„ค๊ณ„ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค.

์ด์ œ Kubernetes๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์„ ์š”์•ฝํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. ์ €์žฅ์†Œ๋Š” ์ƒํƒœ, ์ฆ‰ Kubernetes ๋ฆฌ์†Œ์Šค๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  2. API ์„œ๋ฒ„๋Š” Kubernetes API ํ˜•ํƒœ๋กœ ์ €์žฅ์†Œ์— ๋Œ€ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  3. ๋‹ค๋ฅธ ๋ชจ๋“  Kubernetes ๊ตฌ์„ฑ ์š”์†Œ์™€ ์‚ฌ์šฉ์ž๋Š” API๋ฅผ ํ†ตํ•ด Kubernetes ์ƒํƒœ(๋ฆฌ์†Œ์Šค)๋ฅผ ์ฝ๊ณ , ๊ด€์ฐฐํ•˜๊ณ , ์กฐ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ฐœ๋…์„ ์•Œ๋ฉด kubectl์„ ๋” ์ž˜ ์ดํ•ดํ•˜๊ณ  ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

์ด์ œ kubectl์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์‚ฐ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ๋ช‡ ๊ฐ€์ง€ ๊ตฌ์ฒด์ ์ธ ํŒ๊ณผ ์š”๋ น์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

1. ๋ช…๋ น ์™„์„ฑ์œผ๋กœ ํƒ€์ดํ•‘ ์†๋„ ํ–ฅ์ƒ

kubectl ์ƒ์‚ฐ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐ ๊ฐ€์žฅ ์œ ์šฉํ•˜๋ฉด์„œ๋„ ์ข…์ข… ๊ฐ„๊ณผ๋˜๋Š” ๊ธฐ์ˆ  ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ช…๋ น ์™„์„ฑ์ž…๋‹ˆ๋‹ค.

๋ช…๋ น ์™„์„ฑ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด Tab ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ kubectl ๋ช…๋ น์˜ ์ผ๋ถ€๋ฅผ ์ž๋™์œผ๋กœ ์™„์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ๋ฆฌ์†Œ์Šค ์ด๋ฆ„๊ณผ ๊ฐ™์€ ๋ณต์žกํ•œ ๋ช…๋ น์„ ํฌํ•จํ•˜์—ฌ ํ•˜์œ„ ๋ช…๋ น, ์˜ต์…˜ ๋ฐ ์ธ์ˆ˜์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

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๋ฅผ ๊ธฐ๋ณธ ์…ธ๋กœ ์„ค์ •ํ•˜๋ฉด ๋‚˜์ค‘์— ๋งŽ์€ ๋ฒˆ๊ฑฐ๋กœ์›€์„ ๋œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฉ๋ฒ•์€ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. "MacOS์—์„œ Bash ์—…๋ฐ์ดํŠธ".

๊ณ„์†ํ•˜๊ธฐ ์ „์— ์ตœ์‹  ๋ฒ„์ „์˜ Bash๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค(์ถœ๋ ฅ ํ™•์ธ) bash --version).

Bash ์ž๋™ ์™„์„ฑ ์Šคํฌ๋ฆฝํŠธ๋Š” ํ”„๋กœ์ ํŠธ๋ณ„๋กœ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. 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์€ ์ด ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ๋ชจ๋“  ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

์„ค์น˜ํ•œ ๊ฒฝ์šฐ Homebrew๋ฅผ ์‚ฌ์šฉํ•œ kubectl, ์ž๋™ ์™„์„ฑ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ž๋™์œผ๋กœ ํด๋”์— ๋ฐฐ์น˜๋˜๋ฏ€๋กœ ์ด์ „ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. /usr/local/etc/bash_completion.d ์„ค์น˜ ์ค‘์—. ์ด ๊ฒฝ์šฐ, bash-completion์„ ์„ค์น˜ํ•˜์ž๋งˆ์ž kubectl ์™„์„ฑ์ด ์ž‘๋™ํ•˜๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๊ตญ, ์ด ๋ชจ๋“  ์˜ต์…˜์€ ๋™๋“ฑํ•ฉ๋‹ˆ๋‹ค.

Zsh

Zsh ์™„์„ฑ ์Šคํฌ๋ฆฝํŠธ๋Š” ์ข…์†์„ฑ์„ ํ•„์š”๋กœ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์…ธ์„ ์‹œ์ž‘ํ•  ๋•Œ ํ•ด๋‹น ์ข…์†์„ฑ์„ ํ™œ์„ฑํ™”ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ค„์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ~/.zshrc ํŒŒ์ผ:

source <(kubectl completion zsh)

์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ not found: compdef ์‰˜์„ ์žฌ๋ถ€ํŒ…ํ•œ ํ›„ ๋‚ด์žฅ ๊ธฐ๋Šฅ์„ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. compdefํŒŒ์ผ์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์— ์ถ”๊ฐ€ํ•˜๋ฉด ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ~/.zshrc ๋‹ค์Œ :

autoload -Uz compinit
compinit

2. ๋ฆฌ์†Œ์Šค ์‚ฌ์–‘์„ ๋น ๋ฅด๊ฒŒ ํ™•์ธํ•˜์„ธ์š”

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.spec

3. ์‚ฌ์šฉ์ž ์ •์˜ ์—ด ์ถœ๋ ฅ ํ˜•์‹ ์‚ฌ์šฉ

๊ธฐ๋ณธ ๋ช…๋ น ์ถœ๋ ฅ ํ˜•์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. 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 ํฌ๋“œ ๋ฆฌ์†Œ์Šค ์„ค๋ช…์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. API ๋งค๋‰ด์–ผ ๋˜๋Š” ๋ช…๋ น์„ ์ž…๋ ฅํ•˜์„ธ์š” 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 ํ‘œํ˜„์‹

๋ฆฌ์†Œ์Šค ํ•„๋“œ๋ฅผ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•œ ํ‘œํ˜„์‹์€ ๋‹ค์Œ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. JSON๊ฒฝ๋กœ.

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'

ํŠนํžˆ ์ค‘์š”ํ•œ ๊ฒƒ์€ [] ์—ฐ์‚ฐ์ž์ž…๋‹ˆ๋‹ค. ๋งŽ์€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋ฆฌ์†Œ์Šค ํ•„๋“œ๋Š” ๋ชฉ๋ก์ด๋ฉฐ, ์ด ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๋‹น ๋ชฉ๋ก์˜ ์š”์†Œ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. [*]์™€ ๊ฐ™์€ ์™€์ผ๋“œ์นด๋“œ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์—ฌ ๋ชฉ๋ก์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ โ€‹โ€‹์„ ํƒํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.

์ ์šฉ ์‚ฌ๋ก€

์‚ฌ์šฉ์ž ์ง€์ • ์—ด ์ถœ๋ ฅ ํ˜•์‹์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€๋Šฅ์„ฑ์€ ๋ฌด๊ถ๋ฌด์ง„ํ•ฉ๋‹ˆ๋‹ค. ์ถœ๋ ฅ์— ์›ํ•˜๋Š” ํ•„๋“œ ๋˜๋Š” ๋ฆฌ์†Œ์Šค ํ•„๋“œ ์กฐํ•ฉ์„ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ์˜ˆ์‹œ๋ฅผ ๋ณด์—ฌ๋“œ๋ฆฌ๊ฒ ์ง€๋งŒ, ์ง์ ‘ ํƒ์ƒ‰ํ•˜์—ฌ ์ž์‹ ์—๊ฒŒ ๋งž๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์ฐพ์•„๋ณด์„ธ์š”.

  1. ํฌ๋“œ์— ๋Œ€ํ•œ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ํ‘œ์‹œ:
    $ 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

    ์ด ๋ช…๋ น์€ ๊ฐ ํฌ๋“œ์˜ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ์ด๋ฆ„์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

    ํฌ๋“œ์—๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํฌํ•จ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด ๊ฒฝ์šฐ ์ด๋ฏธ์ง€ ์ด๋ฆ„์€ ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ํ•œ ์ค„์— ๋‚˜์—ด๋ฉ๋‹ˆ๋‹ค.

  2. ๋…ธ๋“œ ๊ฐ€์šฉ์„ฑ ์˜์—ญ ํ‘œ์‹œ:
    $ 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

    ์ด ๋ช…๋ น์€ ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ํผ๋ธ”๋ฆญ ํด๋ผ์šฐ๋“œ์— ํ˜ธ์ŠคํŒ…๋œ ๊ฒฝ์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๋…ธ๋“œ์˜ ๊ฐ€์šฉ์„ฑ ์˜์—ญ์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

    ๊ฐ€์šฉ์„ฑ ์˜์—ญ์€ ๋ณต์ œ ์˜์—ญ์„ ํŠน์ • ์ง€๋ฆฌ์  ์ง€์—ญ์œผ๋กœ ์ œํ•œํ•˜๋Š” ํด๋ผ์šฐ๋“œ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค.

    ๊ฐ ๋…ธ๋“œ์˜ ๊ฐ€์šฉ์„ฑ ์˜์—ญ์€ ํŠน์ˆ˜ ๋ ˆ์ด๋ธ”์„ ํ†ตํ•ด ์–ป์–ด์ง‘๋‹ˆ๋‹ค. failure-domain.beta.kubernetes.io/zoneํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ํผ๋ธ”๋ฆญ ํด๋ผ์šฐ๋“œ์—์„œ ์‹คํ–‰๋˜๋Š” ๊ฒฝ์šฐ ์ด ๋ ˆ์ด๋ธ”์€ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋˜๊ณ  ๊ฐ ๋…ธ๋“œ์˜ ๊ฐ€์šฉ์„ฑ ์˜์—ญ ์ด๋ฆ„์œผ๋กœ ์ฑ„์›Œ์ง‘๋‹ˆ๋‹ค.

    ๋ ˆ์ด๋ธ”์€ Kubernetes ๋ฆฌ์†Œ์Šค ์‚ฌ์–‘์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ ๋ ˆ์ด๋ธ”์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. API ๋งค๋‰ด์–ผ. ํ•˜์ง€๋งŒ 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 ํŒŒ์ผ์— ์ •ํ™•ํžˆ ๋ฌด์—‡์ด ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

kubectl์„ ๋ณด๋‹ค ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•: ์ž์„ธํ•œ ๊ฐ€์ด๋“œ
๋ณด์‹œ๋‹ค์‹œํ”ผ kubeconfig ํŒŒ์ผ์—๋Š” ์ปจํ…์ŠคํŠธ ์ง‘ํ•ฉ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ปจํ…์ŠคํŠธ๋Š” ๋‹ค์Œ ์„ธ ๊ฐ€์ง€ ์š”์†Œ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

  • ํด๋Ÿฌ์Šคํ„ฐ - ํด๋Ÿฌ์Šคํ„ฐ ์„œ๋ฒ„ API์˜ URL์ž…๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž - ํด๋Ÿฌ์Šคํ„ฐ์˜ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ž๊ฒฉ ์ฆ๋ช…์ž…๋‹ˆ๋‹ค.
  • ๋„ค์ž„์ŠคํŽ˜์ด์Šค - ํด๋Ÿฌ์Šคํ„ฐ์— ๊ฐ€์ž…ํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ๋Š” kubeconfig ํŒŒ์ผ์—์„œ ํด๋Ÿฌ์Šคํ„ฐ๋‹น ํ•˜๋‚˜์˜ ์ปจํ…์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์‚ฌ์šฉ์ž ๋˜๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ณ„๋กœ ํด๋Ÿฌ์Šคํ„ฐ๋‹น ์—ฌ๋Ÿฌ ์ปจํ…์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ๋‹ค์ค‘ ์ปจํ…์ŠคํŠธ ๊ตฌ์„ฑ์€ ํ”ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ผ๋ฐ˜์ ์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ์™€ ์ปจํ…์ŠคํŠธ ๊ฐ„์— ์ผ๋Œ€์ผ ๋งคํ•‘์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

์–ธ์ œ๋“ ์ง€ ๋‹ค์Œ ์ปจํ…์ŠคํŠธ ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ˜„์žฌ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

kubectl์„ ๋ณด๋‹ค ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•: ์ž์„ธํ•œ ๊ฐ€์ด๋“œ
kubectl์€ ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์ฝ์„ ๋•Œ ํ•ญ์ƒ ํ˜„์žฌ ์ปจํ…์ŠคํŠธ์—์„œ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์œ„ ์˜ˆ์—์„œ kubectl์€ Hare ํด๋Ÿฌ์Šคํ„ฐ์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋‹ค๋ฅธ ํด๋Ÿฌ์Šคํ„ฐ๋กœ ์ „ํ™˜ํ•˜๋ ค๋ฉด kubeconfig ํŒŒ์ผ์—์„œ ํ˜„์žฌ ์ปจํ…์ŠคํŠธ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

kubectl์„ ๋ณด๋‹ค ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•: ์ž์„ธํ•œ ๊ฐ€์ด๋“œ
์ด์ œ kubectl์ด Fox ํด๋Ÿฌ์Šคํ„ฐ์— ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

๋™์ผํ•œ ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋‹ค๋ฅธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋กœ ์ „ํ™˜ํ•˜๋ ค๋ฉด ํ˜„์žฌ ์ปจํ…์ŠคํŠธ์— ๋Œ€ํ•œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์š”์†Œ์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

kubectl์„ ๋ณด๋‹ค ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•: ์ž์„ธํ•œ ๊ฐ€์ด๋“œ
์œ„์˜ ์˜ˆ์—์„œ kubectl์€ Fox ํด๋Ÿฌ์Šคํ„ฐ์˜ Prod ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค(Test ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋Š” ์ด์ „์— ์„ค์ •๋จ).

kubectl๋„ ์˜ต์…˜์„ ์ œ๊ณตํ•œ๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜์„ธ์š”. --cluster, --user, --namespace ะธ --contextkubeconfig ํŒŒ์ผ์— ์„ค์ •๋œ ๋‚ด์šฉ๊ณผ ๊ด€๊ณ„์—†์ด ๊ฐœ๋ณ„ ์š”์†Œ์™€ ํ˜„์žฌ ์ปจํ…์ŠคํŠธ ์ž์ฒด๋ฅผ ๋ฎ์–ด์“ธ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. kubectl options.

์ด๋ก ์ ์œผ๋กœ๋Š” kubeconfig ํŒŒ์ผ์—์„œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ˆ˜๋™์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Š” ๋ถˆํŽธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ž‘์—…์„ ๊ฐ„์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ž๋™์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

kubectx๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”

ํด๋Ÿฌ์Šคํ„ฐ์™€ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์ „ํ™˜ํ•˜๋Š” ๋ฐ ๋งค์šฐ ์ธ๊ธฐ ์žˆ๋Š” ์œ ํ‹ธ๋ฆฌํ‹ฐ์ž…๋‹ˆ๋‹ค.

์ด ์œ ํ‹ธ๋ฆฌํ‹ฐ๋Š” ๋ช…๋ น์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค kubectx ะธ kubens ๊ฐ๊ฐ ํ˜„์žฌ ์ปจํ…์ŠคํŠธ์™€ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

์•ž์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด, ํด๋Ÿฌ์Šคํ„ฐ๋‹น ์ปจํ…์ŠคํŠธ๊ฐ€ ํ•˜๋‚˜๋งŒ ์žˆ๋Š” ๊ฒฝ์šฐ ํ˜„์žฌ ์ปจํ…์ŠคํŠธ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด ํด๋Ÿฌ์Šคํ„ฐ๋„ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ์ด๋Ÿฌํ•œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋Š” ์˜ˆ์ž…๋‹ˆ๋‹ค.

kubectl์„ ๋ณด๋‹ค ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•: ์ž์„ธํ•œ ๊ฐ€์ด๋“œ
๊ธฐ๋ณธ์ ์œผ๋กœ ์ด๋Ÿฌํ•œ ๋ช…๋ น์€ ์œ„์—์„œ ์„ค๋ช…ํ•œ ๋Œ€๋กœ kubeconfig ํŒŒ์ผ์„ ํŽธ์ง‘ํ•ฉ๋‹ˆ๋‹ค.

์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•ด์„œ kubectx, ์ง€์นจ์„ ๋”ฐ๋ฅด์„ธ์š” ๊ธฐ๋‘ฅ.

๋‘ ๋ช…๋ น ๋ชจ๋‘ ์ปจํ…์ŠคํŠธ ๋ฐ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์ด๋ฆ„ ์ž๋™ ์™„์„ฑ์„ ์ง€์›ํ•˜๋ฏ€๋กœ ์ด๋ฆ„์„ ๋ชจ๋‘ ์ž…๋ ฅํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ž๋™ ์™„์„ฑ ์„ค์ • ์ง€์นจ ์—ฌ๊ธฐ์—.

๋˜ ๋‹ค๋ฅธ ์œ ์šฉํ•œ ๊ธฐ๋Šฅ kubectx ์ด ๋Œ€ํ™”ํ˜• ๋ชจ๋“œ. ์œ ํ‹ธ๋ฆฌํ‹ฐ์™€ ํ•จ๊ป˜ โ€‹โ€‹์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. fzf, ๋ณ„๋„๋กœ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. fzf๋ฅผ ์„ค์น˜ํ•˜๋ฉด ์ž๋™์œผ๋กœ ๋Œ€ํ™”ํ˜• ๋ชจ๋“œ๊ฐ€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค. kubectx๋Œ€ํ™”ํ˜• ๋ชจ๋“œ์—์„œ๋Š” fzf๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋Œ€ํ™”ํ˜• ๋ฌด๋ฃŒ ๊ฒ€์ƒ‰ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ์ปจํ…์ŠคํŠธ์™€ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์…ธ ๋ณ„์นญ ์‚ฌ์šฉ

kubectl๋„ ํ•ด๋‹น ๋ช…๋ น์„ ์ œ๊ณตํ•˜๋ฏ€๋กœ ํ˜„์žฌ ์ปจํ…์ŠคํŠธ์™€ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด ๋ณ„๋„์˜ ๋„๊ตฌ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. kubectl config kubeconfig ํŒŒ์ผ์„ ํŽธ์ง‘ํ•˜๊ธฐ ์œ„ํ•œ ํ•˜์œ„ ๋ช…๋ น์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ๊ทธ ์ค‘ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค.

  • kubectl config get-contexts: ๋ชจ๋“  ์ปจํ…์ŠคํŠธ๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  • kubectl config current-context: ํ˜„์žฌ ์ปจํ…์ŠคํŠธ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
  • kubectl config use-context: ํ˜„์žฌ ์ปจํ…์ŠคํŠธ๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
  • kubectl config set-context: ์ปจํ…์ŠคํŠธ ์š”์†Œ๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ๋ช…๋ น์–ด๋Š” ๋„ˆ๋ฌด ๊ธธ์–ด์„œ ์ง์ ‘ ์‚ฌ์šฉํ•˜๊ธฐ ๋ถˆํŽธํ•ฉ๋‹ˆ๋‹ค. ์‹คํ–‰ํ•˜๊ธฐ ์‰ฌ์šด ์…ธ ๋ณ„์นญ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ช…๋ น๋“ค์„ ๊ธฐ๋ฐ˜์œผ๋กœ kubectx์™€ ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๋ณ„์นญ ์„ธํŠธ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ ๋™์ž‘์€ ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

kubectl์„ ๋ณด๋‹ค ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•: ์ž์„ธํ•œ ๊ฐ€์ด๋“œ
๋ณ„์นญ์€ fzf๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋Œ€ํ™”ํ˜• ์ž์œ  ๊ฒ€์ƒ‰ ์ธํ„ฐํŽ˜์ด์Šค(kubectx ๋Œ€ํ™”ํ˜• ๋ชจ๋“œ์™€ ์œ ์‚ฌ)๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋‹ค์Œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. fzf ์„ค์น˜์ด๋Ÿฌํ•œ ๋ณ„์นญ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋ณ„์นญ์˜ ์ •์˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

# ะŸะพะปัƒั‡ะธั‚ัŒ ั‚ะตะบัƒั‰ะธะน ะบะพะฝั‚ะตะบัั‚
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 ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

์ €๋Š” ์ด๋Ÿฐ ์ผ์„ ํ•˜๋Š” ๋‘ ๊ฐœ์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ผ์Šต๋‹ˆ๋‹ค.

ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์ด์ „ ์„น์…˜์˜ ๋ณ„์นญ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ž‘๋™ ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

kubectl์„ ๋ณด๋‹ค ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•: ์ž์„ธํ•œ ๊ฐ€์ด๋“œ
ํ”Œ๋Ÿฌ๊ทธ์ธ์€ fzf๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋Œ€ํ™”ํ˜• ์ž์œ  ๊ฒ€์ƒ‰ ์ธํ„ฐํŽ˜์ด์Šค(kubectx ๋Œ€ํ™”ํ˜• ๋ชจ๋“œ์™€ ์œ ์‚ฌ)๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋‹ค์Œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. fzf ์„ค์น˜์ด๋Ÿฌํ•œ ๋ณ„์นญ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์น˜ํ•˜๋ ค๋ฉด ์ด๋ฆ„์ด ์ง€์ •๋œ ์…ธ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. kubectl-ctx ะธ kubectl-ns ์˜ˆ๋ฅผ ๋“ค์–ด PATH ๋ณ€์ˆ˜์— ์žˆ๋Š” ๋ชจ๋“  ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™ํ•˜์—ฌ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. chmod +x๊ทธ ํ›„์—๋Š” ๋ฐ”๋กœ ์‚ฌ์šฉํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. kubectl ctx ะธ kubectl ns.

5. ์ž๋™ ๋ณ„์นญ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž…๋ ฅ์„ ๋‹จ์ถ•ํ•ฉ๋‹ˆ๋‹ค.

์…ธ ๋ณ„์นญ์€ ํƒ€์ดํ•‘ ์†๋„๋ฅผ ๋†’์ด๋Š” ์ข‹์€ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ kubectl ๋ณ„์นญ ๊ธฐ๋ณธ kubectl ๋ช…๋ น์— ๋Œ€ํ•œ ์•ฝ 800๊ฐœ์˜ ๋‹จ์ถ•ํ‚ค๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

800๊ฐœ์˜ ๋ณ„์นญ์„ ์–ด๋–ป๊ฒŒ ๊ธฐ์–ตํ•ด์•ผ ํ• ์ง€ ๊ถ๊ธˆํ•˜์‹ค ๊ฒ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ณ„์นญ์€ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฐ„๋‹จํ•œ ๊ตฌ์กฐ๋กœ ๋งŒ๋“ค์–ด์กŒ๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋‘ ๊ธฐ์–ตํ•  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค.

kubectl์„ ๋ณด๋‹ค ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•: ์ž์„ธํ•œ ๊ฐ€์ด๋“œ
์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค

  1. kgpooyaml - kubectl get pods oyaml
  2. ksysgsvcw โ€” kubectl -n kube-system svc w ๊ฐ€์ ธ์˜ค๊ธฐ
  3. ksysrmcm -kubectl -n kube-system rm cm
  4. kgdepallsl - kubectl๋กœ ๋ชจ๋“  sl ๋ฐฐํฌํ•˜๊ธฐ

๋ณด์‹œ๋‹ค์‹œํ”ผ ๋ณ„์นญ์€ kubectl ๋ช…๋ น์˜ ํŠน์ • ์š”์†Œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ตฌ์„ฑ ์š”์†Œ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๋ณ„์นญ์€ ๊ธฐ๋ณธ ๋ช…๋ น, ์ž‘์—… ๋ฐ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ๊ตฌ์„ฑ ์š”์†Œ ํ•˜๋‚˜์™€ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ๊ตฌ์„ฑ ์š”์†Œ ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ„ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋Ÿฌํ•œ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ "์ฑ„์šฐ๊ธฐ๋งŒ" ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ ์ƒ์„ธ ๋‹ค์ด์–ด๊ทธ๋žจ์€ ๋‹ค์Œ ์œ„์น˜์— ์žˆ์Šต๋‹ˆ๋‹ค. GitHub์˜. ๊ฑฐ๊ธฐ์—์„œ๋„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ๋ณ„๋ช… ์ „์ฒด ๋ชฉ๋ก.

์˜ˆ๋ฅผ ๋“ค์–ด, ๋ณ„์นญ kgpooyamlall์€ ๋‹ค์Œ ๋ช…๋ น๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. kubectl get pods -o yaml --all-namespaces.

์˜ต์…˜์˜ ์ƒ๋Œ€์  ์ˆœ์„œ๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ช…๋ น kgpooyamlall ๋ช…๋ น๊ณผ ๋™์ผํ•˜๋‹ค kgpoalloyaml.

๋ชจ๋“  ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋ณ„์นญ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด k, kg, klo, ksys, kgpo ๋˜ํ•œ, ๋ณ„์นญ๊ณผ ์ผ๋ฐ˜ ๋ช…๋ น ๋˜๋Š” ์˜ต์…˜์„ ๋ช…๋ น์ค„์—์„œ ๊ฒฐํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค

  1. ๋Œ€์‹ ์— kubectl proxy ๊ธ€์„ ์“ธ ์ˆ˜ ์žˆ๋‚˜์š”? k proxy.
  2. ๋Œ€์‹ ์— kubectl get roles ๊ธ€์„ ์“ธ ์ˆ˜ ์žˆ๋‚˜์š”? kg roles (ํ˜„์žฌ ์—ญํ•  ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ๋ณ„์นญ์€ ์—†์Šต๋‹ˆ๋‹ค).
  3. ํŠน์ • ํฌ๋“œ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์–ป์œผ๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. kgpo my-pod โ€” kubectl get pod my-pod.

์ผ๋ถ€ ๋ณ„์นญ์€ ๋ช…๋ น์ค„์—์„œ ์ธ์ˆ˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ณ„์นญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. kgpol ๋ฐฉ๋ฒ• kubectl get pods -l. ์˜ต์…˜ -l ์ธ์ˆ˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋ ˆ์ด๋ธ” ์ง€์ •์ž…๋‹ˆ๋‹ค. ๋ณ„์นญ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. kgpol app=ui.

์ผ๋ถ€ ๋ณ„์นญ์—๋Š” ์ธ์ˆ˜๊ฐ€ ํ•„์š”ํ•˜๋ฏ€๋กœ ๋ณ„์นญ a, f, l์€ ๋งˆ์ง€๋ง‰์— ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ์ด ๋ฐฉ์‹์„ ์ตํžˆ๋ฉด ์‹คํ–‰ํ•˜๋ ค๋Š” ๋ช…๋ น์—์„œ ๋ณ„์นญ์„ ์ง๊ด€์ ์œผ๋กœ ํŒŒ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์–ด ์ž…๋ ฅ ์‹œ๊ฐ„์„ ํฌ๊ฒŒ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„ค์น˜

kubectl-aliases๋ฅผ ์„ค์น˜ํ•˜๋ ค๋ฉด ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. .kubectl_aliases GitHub์—์„œ ๊ฐ€์ ธ์™€์„œ ํŒŒ์ผ์— ํฌํ•จ์‹œํ‚ต๋‹ˆ๋‹ค. ~/.bashrc ๋˜๋Š” ~/.zshrc:

source ~/.kubectl_aliases

์ž๋™ ์™„์„ฑ

์•ž์„œ ๋ง์”€๋“œ๋ ธ๋“ฏ์ด, ๋ช…๋ น์ค„์—์„œ ๋ณ„์นญ์— ์ถ”๊ฐ€ ๋‹จ์–ด๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

$ kgpooyaml test-pod-d4b77b989

kubectl ๋ช…๋ น์–ด ์™„์„ฑ์„ ์‚ฌ์šฉํ•˜์‹ ๋‹ค๋ฉด ๋ฆฌ์†Œ์Šค ์ด๋ฆ„ ๊ฐ™์€ ํ•ญ๋ชฉ์— ์ž๋™ ์™„์„ฑ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ด ๋ณด์…จ์„ ๊ฒ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋ณ„์นญ์„ ์‚ฌ์šฉํ•  ๋•Œ๋„ ์ž๋™ ์™„์„ฑ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”?

์ด๊ฒƒ์€ ๋งค์šฐ ์ค‘์š”ํ•œ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ž๋™ ์™„์„ฑ์ด ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ณ„์นญ์˜ ์ด์  ์ค‘ ์ผ๋ถ€๋ฅผ ์žƒ๊ฒŒ ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋‹ต๋ณ€์€ ์‚ฌ์šฉํ•˜๋Š” ์…ธ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

  1. Zsh์—์„œ๋Š” ๋ณ„์นญ์— ๋Œ€ํ•œ ์ž๋™ ์™„์„ฑ ๊ธฐ๋Šฅ์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
  2. ๋ถˆํ–‰ํžˆ๋„ Bash์˜ ๊ฒฝ์šฐ ์ž๋™ ์™„์„ฑ ๊ธฐ๋Šฅ์„ ์ž‘๋™์‹œํ‚ค๋ ค๋ฉด ๋ช‡ ๊ฐ€์ง€ ์ž‘์—…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

Bash์—์„œ ๋ณ„์นญ์— ๋Œ€ํ•œ ์ž๋™ ์™„์„ฑ ํ™œ์„ฑํ™”

Bash์˜ ๋ฌธ์ œ์ ์€ (Tab ํ‚ค๋ฅผ ๋ˆ„๋ฅผ ๋•Œ๋งˆ๋‹ค) ๋ณ„์นญ์ด ์ฐธ์กฐํ•˜๋Š” ๋ช…๋ น(์˜ˆ๋ฅผ ๋“ค์–ด Zsh์ฒ˜๋Ÿผ)์ด ์•„๋‹ˆ๋ผ ๋ณ„์นญ ์ž์ฒด๋ฅผ ์™„์„ฑํ•˜๋ ค ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. 800๊ฐœ์˜ ๋ณ„์นญ์— ๋Œ€ํ•œ ์™„์„ฑ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์™„์„ฑ์ด ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ณ„ํš ์™„์ „ํ•œ ๋ณ„์นญ ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ํ•ด๊ฒฐ์ฑ…์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ณ„์นญ ์™„์„ฑ ๋ฉ”์ปค๋‹ˆ์ฆ˜์— ์—ฐ๊ฒฐํ•˜์—ฌ ๋‚ด๋ถ€์ ์œผ๋กœ ๋ช…๋ น์˜ ๋ณ„์นญ์„ ์™„์„ฑํ•˜๊ณ , ์™„์„ฑ๋œ ๋ช…๋ น์— ๋Œ€ํ•œ ์™„์„ฑ ์˜ต์…˜์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ณ„์นญ ์™„์„ฑ์€ ์ „์ฒด ๋ช…๋ น ์™„์„ฑ๊ณผ ๋™์ผํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์œผ๋กœ, complete-alias๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•˜๊ณ , ๋ชจ๋“  kubectl ๋ณ„์นญ์— ๋Œ€ํ•ด ์™„์„ฑ์„ ํ™œ์„ฑํ™”ํ•˜๋„๋ก ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

complete-alias ์„ค์น˜

์šฐ์„ , complete-alias๋Š” ๋‹ค์Œ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. bash ์™„์„ฑ. ะŸะพัั‚ะพะผัƒ ะฟะตั€ะตะด ัƒัั‚ะฐะฝะพะฒะบะพะน 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๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค bash_completion.sh ์œผ๋กœ GitHub ์ €์žฅ์†Œ ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์„ ๋‹น์‹ ์˜ ํŒŒ์ผ์— ํฌํ•จ์‹œํ‚ค์„ธ์š” ~/.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 ํ™•์žฅ

~๋ถ€ํ„ฐ ์‹œ์ž‘ ๋ฒ„์ „ 1.12, kubectl ์ง€์› ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ถ”๊ฐ€ ๋ช…๋ น์œผ๋กœ ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹น์‹ ์ด ์ต์ˆ™ํ•œ ๊ฒฝ์šฐ Git ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ฉ”์ปค๋‹ˆ์ฆ˜๊ทธ๋Ÿฌ๋ฉด 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 ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์น˜์™€ ๊ฑฐ์˜ ๋™์ผํ•˜๊ฒŒ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ์ง€์นจ์€ ๋‹ค์Œ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. GitHub ํŽ˜์ด์ง€.

๊ฐ€์žฅ ์ค‘์š”ํ•œ 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-ํ”Œ๋Ÿฌ๊ทธ์ธ์—ฌ๊ธฐ์—์„œ๋Š” ํ™•์ธํ•  ๋งŒํ•œ ์ˆ˜์‹ญ ๊ฐœ์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋งŒ์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ž‘์„ฑํ•˜๊ธฐ

๋‹น์‹ ์€ ์Šค์Šค๋กœ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ƒ์„ฑํ•˜๋‹ค โ€” ์–ด๋ ต์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์›ํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์‹คํ–‰ ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ์ด๋ฆ„์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ง€์ •ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. 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๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. cli-๋Ÿฐํƒ€์ž„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌkubectl ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด ํŠน๋ณ„ํžˆ ๋งŒ๋“ค์–ด์ง„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ณต์œ ํ•˜๋Š” ๋ฐฉ๋ฒ•

์—ฌ๋Ÿฌ๋ถ„์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์œ ์šฉํ•˜๋‹ค๊ณ  ์ƒ๊ฐ๋˜์‹œ๋ฉด GitHub์— ๊ณต์œ ํ•ด ์ฃผ์„ธ์š”. ํ•ด๋‹น ์ฃผ์ œ์—๋„ ๊ผญ ์ถ”๊ฐ€ํ•ด ์ฃผ์„ธ์š”. kubectl-ํ”Œ๋Ÿฌ๊ทธ์ธ.

ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ถ”๊ฐ€ํ•˜๋„๋ก ์š”์ฒญํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํฌ๋ฃจ ๋ชฉ๋ก. ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ง€์นจ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. GitHub ์ €์žฅ์†Œ.

๋ช…๋ น ์™„๋ฃŒ

ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ํ˜„์žฌ ์ž๋™ ์™„์„ฑ์„ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ „์ฒด ํ”Œ๋Ÿฌ๊ทธ์ธ ์ด๋ฆ„๊ณผ ์ „์ฒด ์ธ์ˆ˜ ์ด๋ฆ„์„ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

GitHub ์ €์žฅ์†Œ์— ์ด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ kubectl ์ €์žฅ์†Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณต๊ฐœ ์š”์ฒญ๋”ฐ๋ผ์„œ ์ด ๊ธฐ๋Šฅ์ด ์–ธ์  ๊ฐ€๋Š” ๋ฏธ๋ž˜์— ๊ตฌํ˜„๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํ–‰์šด์„ ๋นŒ์–ด ์š” !!!

์ฃผ์ œ์— ๋Œ€ํ•ด ๋” ์ฝ์„ ๋‚ด์šฉ:

  1. Kubernetes์˜ ์„ธ ๊ฐ€์ง€ ์ˆ˜์ค€์˜ ์ž๋™ ํ™•์žฅ ๋ฐ ์ด๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•.
  2. ๊ตฌํ˜„์„ ์œ„ํ•œ ํ…œํ”Œ๋ฆฟ์„ ๊ฐ–์ถ˜ ๋ถˆ๋ฒ• ๋ณต์ œ ์ •์‹ ์˜ Kubernetes.
  3. Telegram์˜ Kubernetes ์ฃผ๋ณ€ ์ฑ„๋„.

์ถœ์ฒ˜ : habr.com

DDoS ๋ณดํ˜ธ, VPS VDS ์„œ๋ฒ„๊ฐ€ ์žˆ๋Š” ์‚ฌ์ดํŠธ๋ฅผ ์œ„ํ•œ ์•ˆ์ •์ ์ธ ํ˜ธ์ŠคํŒ… ๊ตฌ์ž… ๐Ÿ”ฅ DDoS ๊ณต๊ฒฉ ๋ฐฉ์ง€ ๊ธฐ๋Šฅ์ด ํƒ‘์žฌ๋œ ์•ˆ์ •์ ์ธ ์›น์‚ฌ์ดํŠธ ํ˜ธ์ŠคํŒ…, VPS ๋ฐ VDS ์„œ๋ฒ„๋ฅผ ๊ตฌ๋งคํ•˜์„ธ์š” | ProHoster