• ABOUT
  • PORTFOLIO
  • POSTS
  • GUESTBOOK

ยฉ 2025-2026 BlueCool12 All rights reserved.

2026.07.26Kubernetes

๐Ÿ—๏ธ ์‹œํฌ๋ฆฟ์œผ๋กœ ๋ฏผ๊ฐ ์ •๋ณด ๊ด€๋ฆฌํ•˜๊ธฐ

1. ์ปจํ”ผ๊ทธ๋งต๋งŒ์œผ๋กœ ๋‹ค๋ฃจ๊ธฐ ์–ด๋ ค์šด ๋ฏผ๊ฐ ์ •๋ณด

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋‹ค๋ฃจ๋Š” ์„ค์ •๊ฐ’ ์ค‘์—๋Š” SSH ํ‚ค, ๋น„๋ฐ€๋ฒˆํ˜ธ, ์ธ์ฆ ํ† ํฐ์ฒ˜๋Ÿผ ์™ธ๋ถ€์— ๋…ธ์ถœ๋˜์–ด์„œ๋Š” ์•ˆ ๋˜๋Š” ๊ฐ’๋“ค์ด ์žˆ๋‹ค. ์ปจํ”ผ๊ทธ๋งต๋„ ๋ฌธ์ž์—ด ๊ฐ’์„ ๋‹ด์•„ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋‚˜ ๋ณผ๋ฅจ ํŒŒ์ผ๋กœ ํŒŒ๋“œ์— ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ปจํ”ผ๊ทธ๋งต์€ ์• ์ดˆ์— ๋…ธ์ถœ๋˜์–ด๋„ ๋ฌธ์ œ์—†๋Š” ์ผ๋ฐ˜ ์„ค์ •์„ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•œ ์˜ค๋ธŒ์ ํŠธ๋‹ค.

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ์ด๋Ÿฐ ๋ฏผ๊ฐ ์ •๋ณด๋ฅผ ๋ณ„๋„๋กœ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด ์‹œํฌ๋ฆฟ(Secret)์ด๋ผ๋Š” ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋‘”๋‹ค. ์‹œํฌ๋ฆฟ์€ ์ปจํ”ผ๊ทธ๋งต๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์†ํ•˜๊ณ , ํŒŒ๋“œ์— ๊ฐ’์„ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹๋„ ํ™˜๊ฒฝ ๋ณ€์ˆ˜์™€ ๋ณผ๋ฅจ ํŒŒ์ผ ๋‘ ๊ฐ€์ง€๋กœ ๋™์ผํ•˜๋‹ค.

๋‹ค๋งŒ ์ปจํ”ผ๊ทธ๋งต๊ณผ ๋‹ค๋ฅธ ๋ถ€๋ถ„์€ ์‹œํฌ๋ฆฟ์˜ ๊ฐ’์„ ์กฐํšŒํ•˜๋ฉด base64๋กœ ์ธ์ฝ”๋”ฉ๋˜์–ด ๋…ธ์ถœ๋œ๋‹ค๋Š” ์ ์ด๊ณ , ์‚ฌ์šฉ ๋ชฉ์ ์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ํƒ€์ž…์œผ๋กœ ๋‚˜๋‰œ๋‹ค๋Š” ์ ์ด๋‹ค.


2. ์‹œํฌ๋ฆฟ ์ƒ์„ฑํ•˜๊ธฐ

์ปจํ”ผ๊ทธ๋งต๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ช…๋ น ํ•œ ์ค„๋กœ ์‹œํฌ๋ฆฟ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ๋‹จ์ˆœ ๋ฌธ์ž์—ด ๊ฐ’์€ --from-literal ์˜ต์…˜์œผ๋กœ ํ‚ค-๊ฐ’์„ ์ง€์ •ํ•œ๋‹ค.

kubectl create secret generic password \
--from-literal=password=1q2w3e4r

--from-file, --from-env-file ์˜ต์…˜๋„ ์ปจํ”ผ๊ทธ๋งต๊ณผ ๋™์ผํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ํŒŒ์ผ ํ•˜๋‚˜๋ฅผ ํ†ต์งธ๋กœ ๊ฐ’์œผ๋กœ ๋‹ด๊ณ  ์‹ถ์œผ๋ฉด --from-file์„, key=value ํ˜•์‹์˜ ์ค„์ด ์—ฌ๋Ÿฌ ๊ฐœ ๋‹ด๊ธด ํŒŒ์ผ์„ ์—ฌ๋Ÿฌ ํ‚ค-๊ฐ’์œผ๋กœ ํ’€์–ด ๋„ฃ๊ณ  ์‹ถ์œผ๋ฉด --from-env-file์„ ์“ฐ๋ฉด ๋œ๋‹ค.

์—ฌ๊ธฐ์„œ ์“ด generic์€ ์‹œํฌ๋ฆฟ์˜ ์ข…๋ฅ˜๋ฅผ ๋œปํ•œ๋‹ค. ์ปจํ”ผ๊ทธ๋งต๊ณผ ๋‹ฌ๋ฆฌ ์‹œํฌ๋ฆฟ์€ ์‚ฌ์šฉ ๋ชฉ์ ์— ๋”ฐ๋ผ ๋ช‡ ๊ฐ€์ง€ ํƒ€์ž…์œผ๋กœ ๋‚˜๋‰˜๋Š”๋ฐ, generic์œผ๋กœ ๋งŒ๋“  ์‹œํฌ๋ฆฟ์€ ํŠน์ • ๋ชฉ์  ์—†์ด ์ผ๋ฐ˜์ ์œผ๋กœ ์“ฐ๋Š” Opaque ํƒ€์ž…์œผ๋กœ ์ž๋™ ์„ค์ •๋œ๋‹ค.


3. ์ƒ์„ฑํ•œ ์‹œํฌ๋ฆฟ ํ™•์ธํ•˜๊ธฐ

์‹œํฌ๋ฆฟ๋„ ๋‹ค๋ฅธ ๋ฆฌ์†Œ์Šค์ฒ˜๋Ÿผ get์œผ๋กœ ๋ชฉ๋ก์„ ์กฐํšŒํ•œ๋‹ค.

kubectl get secrets

๋ชฉ๋ก์„ ํ™•์ธํ•˜๋ฉด ์ƒ์„ฑํ•œ password ์™ธ์— default-token-...์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์‹œํฌ๋ฆฟ๋„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋Š” ServiceAccount์— ์˜ํ•ด ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋งˆ๋‹ค ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ์‹œํฌ๋ฆฟ์ด๋‹ค.

์‹œํฌ๋ฆฟ์— ๋‹ด๊ธด ๊ฐ’์€ describe๋‚˜ -o yaml๋กœ ํ™•์ธํ•œ๋‹ค.

kubectl describe secret password
kubectl get secret password -o yaml

์ปจํ”ผ๊ทธ๋งต๊ณผ ๋‹ฌ๋ฆฌ, ํ‚ค-๊ฐ’ ์Œ์—์„œ ๊ฐ’์ด base64๋กœ ์ธ์ฝ”๋”ฉ๋˜์–ด ์ถœ๋ ฅ๋œ๋‹ค. base64๋Š” ์•”ํ˜ธํ™”๊ฐ€ ์•„๋‹ˆ๋ผ ์ธ์ฝ”๋”ฉ์ด๋ฏ€๋กœ ๋ˆ„๊ตฌ๋‚˜ ๋””์ฝ”๋”ฉํ•ด ์›๋ž˜ ๊ฐ’์„ ๋ณต์›ํ•  ์ˆ˜ ์žˆ๋‹ค.

์‹œํฌ๋ฆฟ์„ ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ์ด ์ธ์ฝ”๋”ฉ์ด ์•„๋‹ˆ๋ผ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ RBAC์™€ ๊ฐ™์€ ์ ‘๊ทผ ์ œ์–ด์ด๋ฉฐ, base64๋Š” ๊ฐ’์— ๊ฐœํ–‰์ด๋‚˜ ํŠน์ˆ˜๋ฌธ์ž๊ฐ€ ์„ž์—ฌ ์žˆ์–ด๋„ YAML ์•ˆ์— ์•ˆ์ „ํ•˜๊ฒŒ ๋‹ด๊ธฐ ์œ„ํ•œ ์žฅ์น˜์— ๊ฐ€๊น๋‹ค.


4. ์‹œํฌ๋ฆฟ์„ ํŒŒ๋“œ์— ์ „๋‹ฌํ•˜๊ธฐ

์‹œํฌ๋ฆฟ๋„ ์ปจํ”ผ๊ทธ๋งต์ฒ˜๋Ÿผ YAML๋กœ ์ •์˜ํ•˜๊ณ  ํŒŒ๋“œ์—์„œ ์ฐธ์กฐํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ํŽธ์ด ๋‚ซ๋‹ค.

apiVersion: v1
kind: Secret
metadata:
name: password
type: Opaque
data:
password: ...

data ์•„๋ž˜์˜ ๊ฐ’์€ base64๋กœ ์ธ์ฝ”๋”ฉ๋œ ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ์ ์–ด ๋„ฃ๋Š”๋‹ค. ์ด ์‹œํฌ๋ฆฟ์„ ํŒŒ๋“œ์—์„œ ๋ณผ๋ฅจ ํŒŒ์ผ๋กœ ๋งˆ์šดํŠธํ•˜๋ ค๋ฉด, ์ปจํ”ผ๊ทธ๋งต๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ spec.volumes์— ์‹œํฌ๋ฆฟ์„ ์ฐธ์กฐํ•˜๋Š” ๋ณผ๋ฅจ์„ ์ •์˜ํ•˜๊ณ  volumeMounts๋กœ ๋งˆ์šดํŠธ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•œ๋‹ค.

apiVersion: v1
kind: Pod
metadata:
name: secret-volume-pod
spec:
containers:
- name: my-container
image: busybox
args: ['tail', '-f', '/dev/null']
volumeMounts:
- name: secret-volume
mountPath: /etc/secret
volumes:
- name: secret-volume
secret:
secretName: password

์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ์ ์€, YAML์— base64๋กœ ์ธ์ฝ”๋”ฉํ•œ ๊ฐ’์„ ์ž…๋ ฅํ•ด ์‹œํฌ๋ฆฟ์„ ๋งŒ๋“ค์—ˆ๋”๋ผ๋„ ํŒŒ๋“œ๊ฐ€ ์ด ๊ฐ’์„ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋‚˜ ๋ณผ๋ฅจ ํŒŒ์ผ๋กœ ๊ฐ€์ ธ์˜ค๋ฉด ๋””์ฝ”๋”ฉ๋œ ์›๋ž˜ ๊ฐ’์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์œ„ ์˜ˆ์—์„œ /etc/secret/password ํŒŒ์ผ์„ ์—ด์–ด ๋ณด๋ฉด 1q2w3e4r์ด ๊ทธ๋Œ€๋กœ ๋“ค์–ด ์žˆ๋‹ค.


5. ํ”„๋ผ์ด๋น— ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์ธ์ฆ์„ ์œ„ํ•œ ์‹œํฌ๋ฆฟ

๋””ํ”Œ๋กœ์ด๋จผํŠธ ๋“ฑ์œผ๋กœ ํŒŒ๋“œ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ, YAML์— ์ •์˜๋œ ์ด๋ฏธ์ง€๊ฐ€ ๋…ธ๋“œ ๋กœ์ปฌ์— ์—†์œผ๋ฉด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ์ž๋™์œผ๋กœ ์ด๋ฏธ์ง€๋ฅผ ๋ฐ›์•„์˜จ๋‹ค. ์ด๋ฏธ์ง€๊ฐ€ ํ”„๋ผ์ด๋น— ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ์žˆ๋‹ค๋ฉด ์ธ์ฆ ์ ˆ์ฐจ๊ฐ€ ํ•„์š”ํ•œ๋ฐ, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ์ด๋•Œ docker login ๋ช…๋ น์–ด ๋Œ€์‹  ์‹œํฌ๋ฆฟ์„ ์‚ฌ์šฉํ•œ๋‹ค.

*๋„์ปค ์—”์ง„์€ docker login์— ์„ฑ๊ณตํ•˜๋ฉด ์ธ์ฆ ์ •๋ณด๋ฅผ ~/.docker/config.json ํŒŒ์ผ์— ์ €์žฅํ•ด ๋’€๋‹ค๊ฐ€ ์ดํ›„ ์ด๋ฏธ์ง€๋ฅผ ๋ฐ›์•„์˜ฌ ๋•Œ ์ž๋™์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ์ด ์ธ์ฆ ์ •๋ณด๋ฅผ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€๊ฐ€ ์•„๋‹ˆ๋ผ ์‹œํฌ๋ฆฟ์ด๋ผ๋Š” ํด๋Ÿฌ์Šคํ„ฐ ์˜ค๋ธŒ์ ํŠธ๋กœ ์˜ฎ๊ฒจ์„œ ๊ด€๋ฆฌํ•œ๋‹ค๋Š” ์ ์ด ๋‹ค๋ฅด๋‹ค.

๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์ธ์ฆ ์‹œํฌ๋ฆฟ์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ ๋‘ ๊ฐ€์ง€๋‹ค.

๊ธฐ์กด ๋„์ปค ๋กœ๊ทธ์ธ ์ •๋ณด๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

์ด๋ฏธ docker login์œผ๋กœ ๋กœ๊ทธ์ธํ•ด ~/.docker/configs.json์ด ๋งŒ๋“ค์–ด์ ธ ์žˆ๋‹ค๋ฉด, ๊ทธ ํŒŒ์ผ์„ ๊ทธ๋Œ€๋กœ ์‹œํฌ๋ฆฟ์˜ ๋ฐ์ดํ„ฐ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

kubectl create secret generic registry-auth \
--from-file=.dockerconfigjson=/root/.docker/config.json \
--type=kubernetes.io/dockerconfigjson


๋ช…๋ น์–ด๋กœ ์ง์ ‘ ์ธ์ฆ ์ •๋ณด๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•

docker-registry๋ผ๋Š” ์ „์šฉ ์ข…๋ฅ˜๋ฅผ ์“ฐ๋ฉด ์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ช…๋ น์–ด์— ์ง์ ‘ ๋ช…์‹œํ•ด ์‹œํฌ๋ฆฟ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

kubectl create secret docker-registry registry-auth-by-cmd \
--docker-username=admin \
--docker-password=1q2w3e4r

--docker-server๋Š” ํ•„์ˆ˜ ์˜ต์…˜์ด ์•„๋‹ˆ๋ฉฐ, ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ๊ฐ’์ธ ๋„์ปค ํ—ˆ๋ธŒ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์‚ฌ์„ค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ ์“ด๋‹ค๋ฉด ์„œ๋ฒ„ ์ฃผ์†Œ๋ฅผ ํ•จ๊ป˜ ์ง€์ •ํ•œ๋‹ค.

kubectl create secret docker-registry registry-auth-registry \
--docker-username=admin \
--docker-password=1q2w3e4r \
--docker-server=bluecool.registry.com

๋‘ ๋ฐฉ๋ฒ• ์ค‘ ์–ด๋А ์ชฝ์„ ์“ฐ๋“ , ์ƒ์„ฑ๋œ ์‹œํฌ๋ฆฟ์€ kubernetes.io/dockerconfigjson์ด๋ผ๋Š” ๋™์ผํ•œ ํƒ€์ž…์œผ๋กœ ์„ค์ •๋œ๋‹ค.

kubectl get secrets

๋งŒ๋“ค์–ด์ง„ ์‹œํฌ๋ฆฟ์€ ํŒŒ๋“œ YAML์˜ imagePullSecrets์— ์ด๋ฆ„์„ ์ง€์ •ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.

spec:
containers:
- name: my-app
image: bluecool.registry.com/my-app:1.0
imagePullSecrets:
- name: registry-auth-registry

์ด๋ฏธ์ง€๋ฅผ ๋ฐ›์•„์˜ค๋Š” ์‹œ์ ์€ imagePullPolicy๋กœ ์กฐ์ ˆํ•œ๋‹ค. Always๋Š” ํŒŒ๋“œ๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ๋งˆ๋‹ค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์‹œ ํ™•์ธํ•ด ๋ฐ›์•„์˜ค๊ณ , IfNotPresent๋Š” ๋…ธ๋“œ์— ๊ฐ™์€ ์ด๋ฏธ์ง€๊ฐ€ ์—†์„ ๋•Œ๋งŒ ๋ฐ›์•„์˜จ๋‹ค. Never๋Š” ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์กฐํšŒ ์—†์ด ๋…ธ๋“œ์— ์žˆ๋Š” ์ด๋ฏธ์ง€๋งŒ ์‚ฌ์šฉํ•˜๋ฉฐ, ์—†์œผ๋ฉด ์‹คํŒจํ•œ๋‹ค.

ํƒœ๊ทธ๋ฅผ latest๋กœ ์ง€์ •ํ•˜๋ฉด ๊ธฐ๋ณธ๊ฐ’์ด Always๊ฐ€ ๋˜๊ณ , ๊ทธ ์™ธ์˜ ํƒœ๊ทธ๋ฅผ ๋ช…์‹œํ•˜๋ฉด IfNotPresent๊ฐ€ ๊ธฐ๋ณธ๊ฐ’์ด ๋œ๋‹ค.


6. TLS ์ธ์ฆ์„œ๋ฅผ ๋‹ด๋Š” ์‹œํฌ๋ฆฟ

์ธ์ฆ์„œ์™€ ๊ฐœ์ธ ํ‚ค ์Œ์„ ๋‹ค๋ฃจ๋Š” kubernetes.io/tls ํƒ€์ž…๋„ ์žˆ๋‹ค. ํ…Œ์ŠคํŠธ์šฉ์œผ๋กœ ์ž์ฒด ์„œ๋ช… ์ธ์ฆ์„œ๋ฅผ ๋งŒ๋“ค์–ด ๋ณด์ž.

openssl req -new -newKey rsa:4096 -days 365 -nodes \
-x509 -subj "/CN=example.com" -keyout cert.key -out cert.crt

์ƒ์„ฑ๋œ cert.crt, cert.key ํŒŒ์ผ๋กœ TLS ์‹œํฌ๋ฆฟ์„ ๋งŒ๋“ ๋‹ค.

kubectl create secret tls my-tls-secret \
--cert cert.crt --key cert.key

cert.crt์™€ cert.key ํŒŒ์ผ์˜ ๋‚ด์šฉ์€ ๊ฐ๊ฐ tls.crt, tls.key๋ผ๋Š” ํ‚ค๋กœ ์‹œํฌ๋ฆฟ์— ์ €์žฅ๋˜๋ฉฐ, ๋‹ค๋ฅธ ์‹œํฌ๋ฆฟ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ฐ’์€ base64๋กœ ์ธ์ฝ”๋”ฉ๋œ๋‹ค.

kubectl get secrets my-tls-secret

์ด๋ ‡๊ฒŒ ๋ช…๋ น์–ด๋กœ ๋งŒ๋“  ์‹œํฌ๋ฆฟ์„ YAML๋กœ ๋ฐฐํฌํ•˜๋ ค๋ฉด, ์ธ์ฆ์„œ์™€ ํ‚ค ๋ฐ์ดํ„ฐ๋ฅผ YAML ํŒŒ์ผ์— ํ•จ๊ป˜ ์ €์žฅํ•ด ๋‘ฌ์•ผ ํ•œ๋‹ค. ์ปจํ”ผ๊ทธ๋งต์„ ๋งŒ๋“ค ๋•Œ์ฒ˜๋Ÿผ --dry-run=client -o yaml๋กœ ์‹œํฌ๋ฆฟ ์ •์˜๋ฅผ ๋ฝ‘์•„๋‚ด ํŒŒ์ผ๋กœ ์ €์žฅํ•ด ๋‘๋ฉด ๋œ๋‹ค.


7. ์‹œํฌ๋ฆฟ์„ kustomize๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ

์‹œํฌ๋ฆฟ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก base64๋กœ ์ธ์ฝ”๋”ฉ๋œ ๊ฐ’์„ YAML ํŒŒ์ผ์— ์ง์ ‘ ์ €์žฅํ•ด ๋‘๋Š” ๋ฐฉ์‹์€ ๋‹ค๋ฃจ๊ธฐ ๋ฒˆ๊ฑฐ๋กœ์›Œ์ง„๋‹ค. ์ด๋Ÿด ๋•Œ๋Š” kubectl์— ๋‚ด์žฅ๋œ kustomize ๊ธฐ๋Šฅ์„ ์“ธ ์ˆ˜ ์žˆ๋‹ค.

kustomize๋Š” ์ž์ฃผ ์“ฐ๋Š” YAML ์†์„ฑ์„ ๋ณ„๋„๋กœ ์ •์˜ํ•ด ์žฌ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, ์—ฌ๋Ÿฌ YAML ํŒŒ์ผ์„ ํ•˜๋‚˜๋กœ ๋ฌถ๋Š” ๋“ฑ ๋‹ค์–‘ํ•œ ์šฉ๋„๋กœ ์“ฐ์ด๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.

์‹œํฌ๋ฆฟ์€ kustomization.yaml์—์„œ secretGenerator๋กœ ์ •์˜ํ•œ๋‹ค.

secretGenerator:
- name: password
literals:
- password=1q2w3e4r

์ปจํ”ผ๊ทธ๋งต์„ kustomize๋กœ ์ƒ์„ฑํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด configMapGenerator๋ฅผ ์“ด๋‹ค. ๋‹ค๋งŒ ์ปจํ”ผ๊ทธ๋งต์€ ์‹œํฌ๋ฆฟ๊ณผ ๋‹ฌ๋ฆฌ ์ข…๋ฅ˜๊ฐ€ ์—†์œผ๋ฏ€๋กœ type์„ ์ •์˜ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.

์ƒ์„ฑ๋  ๊ฒฐ๊ณผ๋ฌผ์€ ์ ์šฉ ์ „์— ๋ฏธ๋ฆฌ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

kubectl kustomize ./

kustomization.yaml์ด ์œ„์น˜ํ•œ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ๋Š” apply -k ๋ช…๋ น์–ด๋กœ ์ •์˜๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ํ•œ ๋ฒˆ์— ๋ฐฐํฌํ•œ๋‹ค.

kubectl apply -k ./
kubectl delete -k ./

kustomize๋กœ ์ƒ์„ฑ๋œ ์ปจํ”ผ๊ทธ๋งต์ด๋‚˜ ์‹œํฌ๋ฆฟ์˜ ์ด๋ฆ„ ๋’ค์—๋Š” ๋‚ด์šฉ์„ ํ•ด์‹œํ•œ ๊ฐ’์ด ์ž๋™์œผ๋กœ ๋ถ™๋Š”๋‹ค. kubectl create configmap์ด๋‚˜ kubectl create secret์— --append-hash ์˜ต์…˜์„ ์ค˜๋„ ๊ฐ™์€ ํšจ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

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


8. ์‹œํฌ๋ฆฟ ๋ณ€๊ฒฝ์ด ํŒŒ๋“œ์— ๋ฐ˜์˜๋˜๋Š” ๋ฐฉ์‹

์ด๋ฏธ ๋ฐฐํฌ๋œ ์‹œํฌ๋ฆฟ์˜ ๊ฐ’์„ ๋ฐ”๊พธ๋Š” ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€๋‹ค. kubectl edit์œผ๋กœ ๋ฐ”๋กœ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜, YAML ํŒŒ์ผ์„ ๊ณ ์นœ ๋’ค kubectl apply๋กœ ๋ฐ˜์˜ํ•˜๊ฑฐ๋‚˜, kubectl patch๋กœ ์ผ๋ถ€ ํ•„๋“œ๋งŒ ๋ฐ”๊ฟ€ ์ˆ˜๋„ ์žˆ๋‹ค.

๋ฌธ์ œ๋Š” ์ด๋ ‡๊ฒŒ ๊ฐ’์„ ๋ฐ”๊ฟ”๋„ ํŒŒ๋“œ์— ํ•ญ์ƒ ์ฆ‰์‹œ ๋ฐ˜์˜๋˜์ง€๋Š” ์•Š๋Š”๋‹ค๋Š” ์ ์ด๋‹ค. ์‹œํฌ๋ฆฟ์ด๋‚˜ ์ปจํ”ผ๊ทธ๋งต์„ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ํŒŒ๋“œ์— ์ œ๊ณตํ•œ ๊ฒฝ์šฐ, ๊ฐ’์„ ๋ฐ”๊ฟ”๋„ ์ด๋ฏธ ๋–  ์žˆ๋Š” ํŒŒ๋“œ์˜ ํ™˜๊ฒฝ ๋ณ€์ˆ˜์—๋Š” ๋ฐ˜์˜๋˜์ง€ ์•Š๋Š”๋‹ค. ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋Š” ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹œ์ž‘๋  ๋•Œ ํ•œ ๋ฒˆ ์ฃผ์ž…๋˜๊ณ  ๋์ด๊ธฐ ๋•Œ๋ฌธ์—, ์ƒˆ ๊ฐ’์„ ์ ์šฉํ•˜๋ ค๋ฉด ํŒŒ๋“œ๋ฅผ ์žฌ์‹œ์ž‘ํ•ด์•ผ ํ•œ๋‹ค.

๋ฐ˜๋ฉด ๋ณผ๋ฅจ ํŒŒ์ผ๋กœ ๋งˆ์šดํŠธํ•œ ๊ฒฝ์šฐ์—๋Š” ๊ฐ’์ด ๋ฐ”๋€Œ๋ฉด ๋งˆ์šดํŠธ๋œ ํŒŒ์ผ์˜ ๋‚ด์šฉ๋„ ์ž๋™์œผ๋กœ ๊ฐฑ์‹ ๋œ๋‹ค. ๋‹ค๋งŒ ํŒŒ์ผ ๋‚ด์šฉ์ด ๊ฐฑ์‹ ๋๋‹ค๊ณ  ํ•ด์„œ ํŒŒ๋“œ ๋‚ด๋ถ€์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ด๋ฅผ ์ž๋™์œผ๋กœ ๋‹ค์‹œ ์ฝ์–ด ๋“ค์ด๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.

ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ฐฑ์‹ ๋œ ๊ฐ’์„ ์‹ค์ œ๋กœ ๋ฐ˜์˜ํ•˜๋ ค๋ฉด ๋ณ„๋„์˜ ๋กœ์ง์ด ํ•„์š”ํ•˜๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํŒŒ์ผ ๋ณ€๊ฒฝ์„ ๊ฐ์ง€ํ•ด ์›๋ž˜ ํ”„๋กœ์„ธ์Šค์— ๋ฆฌ๋กœ๋“œ ์‹œ๊ทธ๋„์„ ๋ณด๋‚ด๋Š” ์‚ฌ์ด๋“œ์นด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํŒŒ๋“œ์— ํ•จ๊ป˜ ๋‘๊ฑฐ๋‚˜, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ ์ˆ˜์ค€์—์„œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค API๋กœ ์ปจํ”ผ๊ทธ๋งต, ์‹œํฌ๋ฆฟ ๋ณ€๊ฒฝ ์•Œ๋ฆผ(Watch)์„ ๋ฐ›์•„ ์Šค์Šค๋กœ ๋‹ค์‹œ ์ฝ์–ด ๋“ค์ด๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

์ฐธ๊ณ ๋กœ ์•ž์„œ ์‚ดํŽด๋ณธ default-token-... ์‹œํฌ๋ฆฟ์ฒ˜๋Ÿผ ServiceAccount์™€ ์—ฐ๊ฒฐ๋œ ์‹œํฌ๋ฆฟ์€ ์กฐ๊ธˆ ํŠน๋ณ„ํ•˜๊ฒŒ ๋™์ž‘ํ•œ๋‹ค. ์ด๋Ÿฐ ์‹œํฌ๋ฆฟ์€ ์‹ค์ˆ˜๋กœ ์‚ญ์ œํ•˜๋”๋ผ๋„ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ ๊ฐ์ง€ํ•ด ์ž๋™์œผ๋กœ ๋‹ค์‹œ ๋งŒ๋“ค์–ด ์ค€๋‹ค.

ServiceAccount๊ฐ€ ํด๋Ÿฌ์Šคํ„ฐ API์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ํ•„์ˆ˜ ์ธ์ฆ ์ˆ˜๋‹จ์ด๋ฏ€๋กœ, ์ด๋ฅผ ์žƒ์–ด๋ฒ„๋ฆฌ์ง€ ์•Š๋„๋ก ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ ์ง์ ‘ ๋ณด์žฅํ•ด ์ฃผ๋Š” ์…ˆ์ด๋‹ค.

ๅ‰ใฎ่จ˜ไบ‹
๐Ÿ“œ ์—ญ์‚ฌ์˜ ์“ธ๋ชจ | ์ตœํƒœ์„ฑ
ๆฌกใฎ่จ˜ไบ‹
ๆฌกใฎ่จ˜ไบ‹ใฏใ‚ใ‚Šใพใ›ใ‚“ ( ยท . ยท)
่ฃ…้ฃพใƒญใ‚ด