๋ฉ๋ชจ. ๋ฒ์ญ: ์ด ๊ธฐ์ฌ๋ IT ๋ถ์ผ์์ ํญ๋์ ๊ฒฝํ์ ๋ณด์ ํ ์์ง๋์ด์ด์ 2016๊ถ์ ์ธ์๋ณธ(์ฃผ๋ก VMware vSphere ๊ด๋ จ)์ ์ ์/๊ณต๋ ์ ์์ธ Scott Lowe๊ฐ ์์ฑํ์ต๋๋ค. ๊ทธ๋ ํ์ฌ ํด๋ผ์ฐ๋ ์ปดํจํ
๊ณผ Kubernetes๋ฅผ ์ ๋ฌธ์ผ๋ก ํ๋ VMware ์ํ์ฌ Heptio(XNUMX๋
์ธ์)์์ ๊ทผ๋ฌดํ๊ณ ์์ต๋๋ค. ํ
์คํธ ์์ฒด๋ ๊ธฐ์ ์ ์ฌ์ฉํ๋ Kubernetes์ ๊ตฌ์ฑ ๊ด๋ฆฌ์ ๋ํ ๊ฐ๊ฒฐํ๊ณ ์ดํดํ๊ธฐ ์ฌ์ด ์๊ฐ ์ญํ ์ ํฉ๋๋ค.
Kustomize๋ ์ฌ์ฉ์๊ฐ "์๋ณธ YAML์ ๊ทธ๋๋ก ์ ์งํ๊ณ ์ฌ์ฉ ๊ฐ๋ฅํ ์ํ๋ก ์ ์งํ๋ฉด์ ๋ค์ํ ๋ชฉ์ ์ผ๋ก ํ
ํ๋ฆฟ์ด ์๋ ๊ฐ๋จํ YAML ํ์ผ์ ์ฌ์ฉ์ ์ ์"ํ ์ ์๋ ๋๊ตฌ์
๋๋ค(์ค๋ช
์ ๋ค์์์ ์ง์ ์ฐจ์ฉํจ). kubectl -k
ํด๋น ๊ธฐ๋ฅ์ ์ก์ธ์คํฉ๋๋ค(Kubernetes 1.15๋ถํฐ ๋ณ๋์ ๋ฐ์ด๋๋ฆฌ๊ฐ kubectl์ ๋ด์ฅ๋ ๊ธฐ๋ฅ๋ณด๋ค ์ต์ ์). (๋ฉ๋ชจ. ๋ฒ์ญ: ๊ทธ๋ฆฌ๊ณ ์ต๊ทผ ์ถ์๋ก
๊ฐ์ฅ ๊ฐ๋จํ ํํ/์ ํ๋ฆฌ์ผ์ด์
์์ kustomize๋ ๋จ์ํ ๋ฆฌ์์ค ๋ชจ์(Kubernetes ๊ฐ์ฒด: ๋ฐฐํฌ, ์๋น์ค ๋ฑ์ ์ ์ํ๋ YAML ํ์ผ)๊ณผ ํด๋น ๋ฆฌ์์ค์ ์ ์ฉํด์ผ ํ๋ ๋ณ๊ฒฝ ์ฌํญ์ ๋ํ ์ง์นจ ๋ชฉ๋ก์
๋๋ค. make๊ฐ ๋ค์์ ํฌํจ๋ ๋ช
๋ น์ด ์ธํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ฒ๋ผ Makefile
, Docker๋ ๋ค์ ์ง์นจ์ ๋ฐ๋ผ ์ปจํ
์ด๋๋ฅผ ๋น๋ํฉ๋๋ค. Dockerfile
,์ฉ๋ ์ฌ์ฉ์ ์ ์ kustomization.yaml
์ฌ์ฉ์๊ฐ ๋ฆฌ์์ค ์ธํธ์ ์ ์ฉํ๋ ค๋ ๋ณ๊ฒฝ ์ฌํญ์ ๋ํ ์ง์นจ์ ์ ์ฅํฉ๋๋ค.
๋ค์์ ์์ ํ์ผ์
๋๋ค. kustomization.yaml
:
resources:
- deployment.yaml
- service.yaml
namePrefix: dev-
namespace: development
commonLabels:
environment: development
ํ์ผ์์ ๊ฐ๋ฅํ ๋ชจ๋ ํ๋์ ๋ํด ์ด์ผ๊ธฐํ์ง๋ ์๊ฒ ์ต๋๋ค. kustomization.yaml
(์ด๊ฒ์ ์ ์ฐ์ฌ์ก์ต๋๋ค.
- ๋ถ์ผ
resources
kustomize๊ฐ ๋ณ๊ฒฝํ ๋ด์ฉ(์ด๋ค ๋ฆฌ์์ค)์ ๋ํ๋ ๋๋ค. ์ด ๊ฒฝ์ฐ ํ์ผ์์ ๋ฆฌ์์ค๋ฅผ ์ฐพ์ต๋๋ค.deployment.yaml
ะธservice.yaml
๋๋ ํฐ๋ฆฌ์ ์์ต๋๋ค(ํ์ํ ๊ฒฝ์ฐ ์ ์ฒด ๋๋ ์๋ ๊ฒฝ๋ก๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค). - ๋ถ์ผ
namePrefix
kustomize์ ํน์ ์ ๋์ฌ๋ฅผ ์ถ๊ฐํ๋๋ก ์ง์ํฉ๋๋ค(์ด ๊ฒฝ์ฐ -dev-
) ์์ฑname
ํ๋์ ์ ์๋ ๋ชจ๋ ๋ฆฌ์์คresources
. ๋ฐ๋ผ์ ๋ฐฐํฌ๊ฐ ์๋ ๊ฒฝ์ฐname
์๋ฏธ๋ฅผ ๊ฐ์ง๊ณnginx-deployment
, ๋ง์ถค์ค์ ํ์ฌ ๋ง๋ค๊ฒ ์ต๋๋ค.dev-nginx-deployment
. - ๋ถ์ผ
namespace
kustomize์ ์ง์ ๋ ๋ค์์คํ์ด์ค๋ฅผ ๋ชจ๋ ๋ฆฌ์์ค์ ์ถ๊ฐํ๋๋ก ์ง์ํฉ๋๋ค. ์ด ๊ฒฝ์ฐ ๋ฐฐํฌ ๋ฐ ์๋น์ค๋ ๋ค์์คํ์ด์ค์ ์ํฉ๋๋ค.development
. - ๋ง์ง๋ง์ผ๋ก ํด๋น ๋ถ์ผ
commonLabels
๋ชจ๋ ๋ฆฌ์์ค์ ์ถ๊ฐ๋ ๋ผ๋ฒจ ์ธํธ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ์ด ์์์ kustomize๋ ์ด๋ฆ์ด ์๋ ๋ฆฌ์์ค์ ๋ผ๋ฒจ์ ํ ๋นํฉ๋๋ค.environment
๊ทธ๋ฆฌ๊ณ ์๋ฏธdevelopment
.
์ฌ์ฉ์๊ฐ ๊ทธ๋ฐ ๊ฒฝ์ฐ kustomize build .
ํ์ผ์ด ์๋ ๋๋ ํ ๋ฆฌ์ kustomization.yaml
๋ฐ ํ์ํ ๋ฆฌ์์ค(์: ํ์ผ deployment.yaml
ะธ service.yaml
), ๊ทธ๋ฌ๋ฉด ์ถ๋ ฅ ์์ ์ง์ ๋ ๋ณ๊ฒฝ ์ฌํญ์ด ํฌํจ๋ ํ
์คํธ๋ฅผ ๋ฐ๊ฒ ๋ฉ๋๋ค. kustomization.yaml
.
๋ฉ๋ชจ. ๋ฒ์ญ: kustomize์ "๊ฐ๋จํ" ์ฌ์ฉ์ ๊ดํ ํ๋ก์ ํธ ๋ฌธ์์ ๊ทธ๋ฆผ
๋ณ๊ฒฝ ์ฌํญ์ ์ปค๋ฐํด์ผ ํ๋ ๊ฒฝ์ฐ ์ถ๋ ฅ์ ๋ฆฌ๋๋ ์ ํ ์ ์์ต๋๋ค.
kustomize build . > custom-config.yaml
์ถ๋ ฅ ๋ฐ์ดํฐ๋ ๊ฒฐ์ ์ ์ด๋ฏ๋ก(๋์ผํ ์ ๋ ฅ ๋ฐ์ดํฐ๋ ๋์ผํ ์ถ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํจ) ๊ฒฐ๊ณผ๋ฅผ ํ์ผ์ ์ ์ฅํ ํ์๊ฐ ์์ต๋๋ค. ๋์ ๋ค๋ฅธ ๋ช ๋ น์ผ๋ก ์ง์ ์ ๋ฌํ ์ ์์ต๋๋ค.
kustomize build . | kubectl apply -f -
Kustomize ๊ธฐ๋ฅ์ ๋ค์์ ํตํด ์ก์ธ์คํ ์๋ ์์ต๋๋ค. kubectl -k
(Kubernetes ๋ฒ์ 1.14๋ถํฐ). ๊ทธ๋ฌ๋ ๋
๋ฆฝํ kustomize ํจํค์ง๋ ํตํฉ kubectl ํจํค์ง๋ณด๋ค ๋ ๋น ๋ฅด๊ฒ ์
๋ฐ์ดํธ๋๋ค๋ ์ ์ ๋ช
์ฌํ์ธ์(์ ์ด๋ Kubernetes 1.15 ๋ฆด๋ฆฌ์ค์ ๊ฒฝ์ฐ).
๋
์๋ค์ "ํ์ผ์ ์ง์ ํธ์งํ ์ ์๋ค๋ฉด ์ ์ด๋ ๊ฒ ๋ณต์กํฉ๋๊น?"๋ผ๊ณ ๋ฌผ์ ์ ์์ต๋๋ค. ์ข์ ์ง๋ฌธ์
๋๋ค. ์ฐ๋ฆฌ์ ์์์๋ ์ค์ ๋ก ํ๋๋ ์ ํ์ผ ์์ deployment.yaml
ะธ service.yaml
์ง์ ์ ์ผ๋ก, ๊ทธ๋ฌ๋ ๋ค๋ฅธ ์ฌ๋์ ํ๋ก์ ํธ์์ ํฌํฌ๋ ๊ฒ์ด๋ผ๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? ํ์ผ์ ์ง์ ๋ณ๊ฒฝํ๋ฉด ์๋ณธ/์์ค๊ฐ ๋ณ๊ฒฝ๋ ๋ ํฌํฌ๋ฅผ ๋ฆฌ๋ฒ ์ด์คํ๋ ๊ฒ์ด (๋ถ๊ฐ๋ฅํ์ง๋ ์๋๋ผ๋) ์ด๋ ต์ต๋๋ค. kustomize๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ฌํ ๋ณ๊ฒฝ ์ฌํญ์ ํ์ผ์ ์ค์ ์ง์คํํ ์ ์์ต๋๋ค. kustomization.yaml
, ์๋ณธ ํ์ผ์ ๊ทธ๋๋ก ์ ์งํ๋ฏ๋ก ํ์ํ ๊ฒฝ์ฐ ์๋ณธ ํ์ผ์ ๋ ์ฝ๊ฒ ๋ฆฌ๋ฒ ์ด์คํ ์ ์์ต๋๋ค.
Kustomize์ ์ด์ ์ ๋ณด๋ค ๋ณต์กํ ์ฌ์ฉ ์ฌ๋ก์์ ๋์ฑ ๋ถ๋ช
ํด์ง๋๋ค. ์์ ์์์ kustomization.yaml
๋ฆฌ์์ค๋ ๋์ผํ ๋๋ ํฐ๋ฆฌ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ kustomize๋ ๊ธฐ๋ณธ ๊ตฌ์ฑ๊ณผ ์ด์ ๋ํ ๋ค์ํ ๋ณํ์ด ์๋ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ง์ํฉ๋๋ค. ์ค๋ฒ๋ ์ด. ์๋ฅผ ๋ค์ด, ์ฌ์ฉ์๊ฐ ์ ๊ฐ ์๋ก ์ฌ์ฉํ nginx์ฉ ๋ฐฐํฌ ๋ฐ ์๋น์ค๋ฅผ ์ฌ์ฉํ์ฌ ํด๋น ํ์ผ์ ๊ฐ๋ฐ, ์ค๋น ๋ฐ ํ๋ก๋์
๋ฒ์ (๋๋ ๋ณํ)์ ๋ง๋ค๊ณ ์ถ์ดํ์ต๋๋ค. ์ด๋ฅผ ์ํด์๋ ์์์ ์ธ๊ธํ ์ค๋ฒ๋ ์ด์ ์ค์ ๋ก ๊ธฐ๋ณธ ๋ฆฌ์์ค ์์ฒด๊ฐ ํ์ํฉ๋๋ค.
์ค๋ฒ๋ ์ด ๋ฐ ๊ธฐ๋ณธ ๋ฆฌ์์ค์ ๋ํ ์์ด๋์ด๋ฅผ ์ค๋ช ํ๊ธฐ ์ํด (๊ธฐ๋ณธ ์์), ๋๋ ํ ๋ฆฌ์ ๊ตฌ์กฐ๊ฐ ๋ค์๊ณผ ๊ฐ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค.
- base
- deployment.yaml
- service.yaml
- kustomization.yaml
- overlays
- dev
- kustomization.yaml
- staging
- kustomization.yaml
- prod
- kustomization.yaml
ํ์ผ์์ base/kustomization.yaml
ํ๋๋ฅผ ์ฌ์ฉํ๋ ์ฌ์ฉ์ resources
kustomize์ ํฌํจํด์ผ ํ๋ ๋ฆฌ์์ค๋ฅผ ์ ์ธํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
๊ฐ ํ์ผ์๋ overlays/{dev,staging,prod}/kustomization.yaml
์ฌ์ฉ์๋ ํ์ฅ์์ ๊ธฐ๋ณธ ๊ตฌ์ฑ์ ์ฐธ์กฐํฉ๋๋ค. resources
์ ์ ํํ ๋ค์ ๋ค์์ ๋ํ ํน์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ํ๋
๋๋ค. ์ฃผ์ด์ง ํ๊ฒฝ. ์๋ฅผ ๋ค์ด, ํ์ผ overlays/dev/kustomization.yaml
์ด์ ์ ์ ๊ณต๋ ์์ ๊ฐ์ ์ ์์ต๋๋ค.
resources:
- ../../base
namePrefix: dev-
namespace: development
commonLabels:
environment: development
์ด ๊ฒฝ์ฐ ํ์ผ overlays/prod/kustomization.yaml
์์ ํ ๋ค๋ฅผ ์ ์์ต๋๋ค.
resources:
- ../../base
namePrefix: prod-
namespace: production
commonLabels:
environment: production
sre-team: blue
์ฌ์ฉ์๊ฐ ์คํํ ๋ kustomize build .
์นดํ๋ก๊ทธ์ overlays/dev
, kustomize๊ฐ ๊ฐ๋ฐ ์ต์
์ ์์ฑํฉ๋๋ค. ๋น์ ์ด ์คํํ๋ ๊ฒฝ์ฐ kustomize build .
์นดํ๋ก๊ทธ์ overlays/prod
- ์์ฐ ์ต์
์ ์ป์ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ๋ชจ๋ ๊ฒ - ์๋ณธ์ ๋ณ๊ฒฝํ์ง ์๊ณ (๋ฒ ์ด์ค) ๋ชจ๋ ํ์ผ์ ์ ์ธ์ ์ด๊ณ ๊ฒฐ์ ์ ์ธ ๋ฐฉ์์ผ๋ก ๊ด๋ฆฌํฉ๋๋ค. ๊ธฐ๋ณธ ๊ตฌ์ฑ ๋ฐ ์ค๋ฒ๋ ์ด ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ฒ์ ์ ์ด์ ์ง์ ์ปค๋ฐํ ์ ์์ผ๋ฉฐ ์ด๋ฌํ ํ์ผ์ ๊ธฐ๋ฐ์ผ๋ก ์ธ์ ๋ ์ง ์ํ๋ ๊ตฌ์ฑ์ ์ฌํํ ์ ์์ต๋๋ค.
๋ฉ๋ชจ. ๋ฒ์ญ: Kustomize์์ ์ค๋ฒ๋ ์ด ์ฌ์ฉ์ ๋ํ ํ๋ก์ ํธ ๋ฌธ์์ ๊ทธ๋ฆผ
์ฌ์ฉ์ ์ ์ํ ์ ์์ต๋๋ค ๋ง์ด ์ด ๊ธฐ์ฌ์์ ๋ค๋ฃจ๋ ๊ฒ๋ณด๋ค ๋ ๋ง์ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ด ์ข์ ์๊ฐ๊ฐ ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ถ๊ฐ ๋ฆฌ์์ค
Kustomize์ ๊ดํ ์ข์ ๊ธฐ์ฌ์ ์ถํ๋ฌผ์ด ๋ง์ด ์์ต๋๋ค. ํนํ ์ ์ฉํ๋ค๊ณ ์๊ฐ๋๋ ๋ช ๊ฐ์ง ์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
-
Kustomize๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ํ ํ๊ฒฝ ์์ฐ/ํ ์คํธ์ ๋ํ ๊ธฐ๋ณธ YAML ๊ตฌ์ฑ ๋ณ๊ฒฝ ; -
Kustomize โ Kubernetes์์ ํ ํ๋ฆฟ์ ์์ฑํ๋ ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ ; -
Customize๋ฅผ ์ฌ์ฉํ Kubernetes ๊ฐ์ฒด์ ์ ์ธ์ ๊ด๋ฆฌ ; -
Customize๋ฅผ ์ฌ์ฉํ์ฌ ์ ์คํธ๋ฆผ Helm ์ฐจํธ ์ฌ์ฉ์ ์ ์ .
๋ฉ๋ชจ. ๋ฒ์ญ: ๊ฒ์๋ ๋งํฌ ๋ธ๋ก์ ์ถ์ฒํ ์๋ ์์ต๋๋ค.
์ด ์๋ฃ๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํ ์ง๋ฌธ์ด๋ ์ ์ ์ฌํญ์ด ์๋ ๊ฒฝ์ฐ ์ธ์ ๋ ์ง ํผ๋๋ฐฑ์ ๋ฐ์ ์ ์์ต๋๋ค. ๋ค์ ์ฃผ์๋ก ์ ์๊ฒ ์ฐ๋ฝํ์ค ์ ์์ต๋๋ค.
๋ฒ์ญ๊ฐ์ ์ถ์
๋ธ๋ก๊ทธ์์๋ ์ฝ์ด๋ณด์ธ์.
- ยซ
Kubernetes์์ ์คํ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์๋ฅผ ์ํ ๋๊ตฌ "; - ยซ
Kubernetes 1.14: ์ฃผ์ ํ์ ๊ฐ์ "; - ยซ
์์คํ ๋ฅด๋ด์์ ์ด๋ฆฐ Helm Summit 2019์ XNUMX๊ฐ์ง ์ฃผ์ ๊ฒฐ๊ณผ "; - ยซ
Kubernetes์ฉ ํจํค์ง ๊ด๋ฆฌ์์ ๋ํ ์ค์ ์๊ฐ - Helm ".
์ถ์ฒ : habr.com