[Kubernetes - 2๋‹จ๊ณ„: ConfigMap & Secret]

์ด ๊ธ€์—์„œ ๋‹ค๋ฃจ๋Š” ๊ฒƒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค์ •๊ฐ’(ConfigMap)๊ณผ ๋ฏผ๊ฐ ์ •๋ณด(Secret)๋ฅผ ์ฝ”๋“œ์—์„œ ๋ถ„๋ฆฌํ•˜์—ฌ Kubernetes ๋ฆฌ์†Œ์Šค๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ์„ ์ˆ˜์ง€์‹ Kubernetes 1๋‹จ๊ณ„: Deployment & Service โ€” Pod ๋ฐฐํฌ์™€ Service ๊ธฐ๋ณธ ๊ฐœ๋… ์ด ๋‹จ๊ณ„์—์„œ ํ•ด๊ฒฐํ•˜๋ ค๋Š” ๋ฌธ์ œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ์— DB ๋น„๋ฐ€๋ฒˆํ˜ธ๋‚˜ ํ™˜๊ฒฝ ์„ค์ •์„ ํ•˜๋“œ์ฝ”๋”ฉํ•˜๋ฉด, ํ™˜๊ฒฝ๋ณ„ ๋ฐฐํฌ๊ฐ€ ์–ด๋ ต๊ณ  ๋ณด์•ˆ ์œ„ํ—˜์ด ์ƒ๊น๋‹ˆ๋‹ค. Kubernetes์˜ ConfigMap๊ณผ Secret์„ ์‚ฌ์šฉํ•˜๋ฉด ์„ค์ •๊ณผ ์ฝ”๋“œ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ , ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ Pod์— ์ฃผ์ž…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์Šต ์ฝ”๋“œ: GitHub (Configmap_and_Secret) ๐Ÿงญ ์ „์ฒด ํ๋ฆ„ ์š”์•ฝ โ‘  ConfigMap ์ƒ์„ฑ (์ผ๋ฐ˜ ์„ค์ •๊ฐ’) โ‘ก Secret ์ƒ์„ฑ (๋ฏผ๊ฐ ์ •๋ณด โ€“ base64 ์ธ์ฝ”๋”ฉ) โ‘ข Pod์— ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ์ฃผ์ž… โ‘ฃ ์ปจํ…Œ์ด๋„ˆ ์•ˆ์—์„œ ๊ฐ’ ํ™•์ธ (env ๋ช…๋ น์–ด) โ‘ค ์‹ค์ „ ์ ์šฉ ๋ฐ ๋ณด์•ˆ ์ฃผ์˜์‚ฌํ•ญ ํ•™์Šต ๐Ÿ“‚ ์‹ค์Šต์— ์‚ฌ์šฉ๋œ ํŒŒ์ผ ๊ตฌ์„ฑ k8s-configmap-secret/ โ”œโ”€โ”€ configmap.yaml # ์ผ๋ฐ˜ ์„ค์ •๊ฐ’ ์ •์˜ โ”œโ”€โ”€ secret.yaml # ๋ฏผ๊ฐ ์ •๋ณด (base64 ์ธ์ฝ”๋”ฉ) โ”œโ”€โ”€ pod-env.yaml # Pod ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ์ฃผ์ž… โ””โ”€โ”€ README.md ๐Ÿ“„ ์ฃผ์š” YAML ํŒŒ์ผ ์ •๋ฆฌ configmap.yaml apiVersion: v1 kind: ConfigMap metadata: name: app-config data: APP_MODE: "production" APP_PORT: "8080" secret.yaml apiVersion: v1 kind: Secret metadata: name: app-secret type: Opaque data: DB_PASSWORD: c3VwZXJzZWNyZXQ= # base64 โ†’ "supersecret" ์ธ์ฝ”๋”ฉ ๋ฐฉ๋ฒ•: echo -n "supersecret" | base64 ...

June 5, 2025 ยท 2 min

[Kubernetes - 1๋‹จ๊ณ„ : Deployment & Service]

์ด ๊ธ€์—์„œ ๋‹ค๋ฃจ๋Š” ๊ฒƒ Kubernetes์˜ ๊ฐ€์žฅ ๊ธฐ๋ณธ ๋‹จ์œ„์ธ Deployment์™€ Service๋ฅผ ์‚ฌ์šฉํ•ด Nginx๋ฅผ ๋ฐฐํฌํ•˜๊ณ  ์™ธ๋ถ€์—์„œ ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ์„ ์ˆ˜์ง€์‹ ์ด ๊ธ€๋ถ€ํ„ฐ ์‹œ์ž‘ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. Docker๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด ๋‹จ๊ณ„์—์„œ ํ•ด๊ฒฐํ•˜๋ ค๋Š” ๋ฌธ์ œ ์ปจํ…Œ์ด๋„ˆํ™”๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ Kubernetes ์œ„์— ๋ฐฐํฌํ•˜๋ ค๋ฉด, Pod๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” Deployment์™€ ๋„คํŠธ์›Œํฌ ์ ‘๊ทผ์„ ์ œ๊ณตํ•˜๋Š” Service์˜ ๊ด€๊ณ„๋ฅผ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” Minikube ๋กœ์ปฌ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ Nginx๋ฅผ ๋ฐฐํฌํ•˜๊ณ  kubectl ๋ช…๋ น์–ด๋ฅผ ์ฒด๋“ํ•ฉ๋‹ˆ๋‹ค. ์‹ค์Šต ์ฝ”๋“œ: GitHub (Deployment_and_Service) ๐Ÿงญ ์ „์ฒด ํ๋ฆ„ ์š”์•ฝ โ‘  Minikube ์„ค์น˜ ๋ฐ ํด๋Ÿฌ์Šคํ„ฐ ์‹œ์ž‘ โ‘ก kubectl ๋ช…๋ น์–ด ์‹ค์Šต โ‘ข Nginx Deployment + Service ๋ฐฐํฌ โ‘ฃ ์ƒํƒœ ํ™•์ธ / ํŒŒ๋“œ ์ ‘์† / ๋กœ๊ทธ ํ™•์ธ / ์ˆ˜ํ‰ ํ™•์žฅ โ‘ค ๋ธ”๋กœ๊ทธ ์ •๋ฆฌ โš™๏ธ 1๋‹จ๊ณ„ โ€“ Minikube & kubectl ์„ค์น˜ Docker ์„ค์น˜ & ๊ถŒํ•œ ๋ถ€์—ฌ sudo apt update && sudo apt install -y docker.io sudo usermod -aG docker $USER ์„ค์น˜ ํ›„ logout โ†’ login ๋˜๋Š” newgrp docker ์‹คํ–‰ ํ•„์š” ...

June 5, 2025 ยท 2 min