เบเบฒเบ™เปเบ™เบฐเบ™เบณเบชเบฑเป‰เบ™เป†เป€เบžเบทเปˆเบญเบ›เบฑเบšเปเบ•เปˆเบ‡

เบซเบกเบฒเบโ€‹เป€เบซเบ”โ€‹. เปเบ›.: เบšเบปเบ”เบ„เบงเบฒเบกเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบ–เบทเบเบ‚เบฝเบ™เป‚เบ”เบ Scott Lowe, เบงเบดเบชเบฐเบงเบฐเบเบญเบ™เบ—เบตเปˆเบกเบตเบ›เบฐเบชเบปเบšเบเบฒเบ™เบขเปˆเบฒเบ‡เบเบงเป‰เบฒเบ‡เบ‚เบงเบฒเบ‡เปƒเบ™เบ”เป‰เบฒเบ™เป„เบญเบ—เบต, เบœเบนเป‰เบ—เบตเปˆเป€เบ›เบฑเบ™เบœเบนเป‰เบ‚เบฝเบ™ / เบœเบนเป‰เบ‚เบฝเบ™เบฎเปˆเบงเบกเบ‚เบญเบ‡เป€เบˆเบฑเบ”เบ›เบทเป‰เบกเบ—เบตเปˆเบžเบดเบกเบญเบญเบ (เบชเปˆเบงเบ™เปƒเบซเบเปˆเปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™ VMware vSphere). เบ•เบญเบ™เบ™เบตเป‰เบฅเบฒเบงเป€เบฎเบฑเบ”เบงเบฝเบเปƒเบซเป‰เบšเปเบฅเบดเบชเบฑเบ”เบชเบฒเบ‚เบฒ VMware Heptio (เป„เบ”เป‰เบกเบฒเปƒเบ™เบ›เบต 2016), เบŠเปˆเบฝเบงเบŠเบฒเบ™เบ”เป‰เบฒเบ™เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเบ„เบฅเบฒเบง เปเบฅเบฐ Kubernetes. เบ‚เปเป‰เบ„เบงเบฒเบกเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡เป€เบฎเบฑเบ”เบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เบเบฒเบ™เปเบ™เบฐเบ™เปเบฒเบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เปเบฅเบฐเป€เบ‚เบปเป‰เบฒเปƒเบˆเบ‡เปˆเบฒเบเปƒเบ™เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบชเปเบฒเบฅเบฑเบš Kubernetes เป‚เบ”เบเปƒเบŠเป‰เป€เบ•เบฑเบเป‚เบ™เป‚เบฅเบขเบต เบ›เบฑเบšเปเบ•เปˆเบ‡, เป€เบŠเบดเปˆเบ‡เบšเปเปˆเบ”เบปเบ™เบกเบฒเบ™เบตเป‰เป„เบ”เป‰เบเบฒเบเป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡ K8s.

เบเบฒเบ™เปเบ™เบฐเบ™เบณเบชเบฑเป‰เบ™เป†เป€เบžเบทเปˆเบญเบ›เบฑเบšเปเบ•เปˆเบ‡

Kustomize เป€เบ›เบฑเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบตเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบœเบนเป‰เปƒเบŠเป‰เบชเบฒเบกเบฒเบ” "เบ›เบฑเบšเปเบ•เปˆเบ‡เป„เบŸเบฅเปŒ YAML เปเบšเบšเบ‡เปˆเบฒเบเบ”เบฒเบ, เบšเปเปˆเบกเบตเปเบกเปˆเปเบšเบšเบชเปเบฒเบฅเบฑเบšเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™, เป€เบฎเบฑเบ”เปƒเบซเป‰ YAML เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเบšเปเปˆเบชเบฐเบญเบฒเบ”เปเบฅเบฐเปƒเบŠเป‰เป„เบ”เป‰" (เบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเป„เบ”เป‰เบขเบทเบกเป‚เบ”เบเบเบปเบ‡เบˆเบฒเบ เบ›เบฑเบšเปเบ•เปˆเบ‡เบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™เปƒเบ™ GitHub). Kustomize เบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป‚เบ”เบเบเบปเบ‡เบซเบผเบท, เป€เบ›เบฑเบ™เบ‚เบญเบ‡ Kubernetes 1.14, เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰ kubectl -k เป€เบžเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบกเบฑเบ™ (เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเปƒเบ™ Kubernetes 1.15, binary เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเปเบกเปˆเบ™เปƒเบซเบกเปˆเบเบงเปˆเบฒเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เปƒเบ™ kubectl). (เบซเบกเบฒเบโ€‹เป€เบซเบ”โ€‹. เปเบ›.: เปเบฅเบฐเบกเบตเบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ เบ„เบนเป‚เบšเบ•เป‰เบฒ 1.16 เบ›เบฑเบšเปเบ•เปˆเบ‡ เบชเบฐ เปœเบฑเบš เบชเบฐ เปœเบนเบ™ เป‚เบ”เบ เบเบฑเบ‡เบขเบนเปˆเปƒเบ™เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ” kubeadm.) เปƒเบ™เบšเบปเบ”เบ‚เบฝเบ™เบ™เบตเป‰, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เปเบ™เบฐเบ™เปเบฒเบœเบนเป‰เบญเปˆเบฒเบ™เบเปˆเบฝเบงเบเบฑเบšเบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡ kustomize.

เปƒเบ™เบฎเบนเบšเปเบšเบš / เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเบชเบธเบ”, kustomize เปเบกเปˆเบ™เบžเบฝเบ‡เปเบ•เปˆเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™ (เป„เบŸเบฅเปŒ YAML เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เบงเบฑเบ”เบ–เบธ Kubernetes: เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡, เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™, เปเบฅเบฐเบญเบทเปˆเบ™เป†) เบšเบงเบเบเบฑเบšเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เบเบฑเบšเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™. เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบšเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบŠเบธเบ”เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ—เบตเปˆเบกเบตเบขเบนเปˆเปƒเบ™ Makefile, เปเบฅเบฐ Docker เบเปเปˆเบชเป‰เบฒเบ‡ container เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบˆเบฒเบ Dockerfile, เบ›เบฑเบšโ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹ kustomization.yaml เป€เบžเบทเปˆเบญเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰เบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบเบฑเบšเบŠเบธเบ”เบ‚เบญเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™.

เบ™เบตเป‰เปเบกเปˆเบ™เป„เบŸเบฅเปŒเบ•เบปเบงเบขเปˆเบฒเบ‡ kustomization.yaml:

resources:
- deployment.yaml
- service.yaml
namePrefix: dev-
namespace: development
commonLabels:
  environment: development

เบ‚เป‰เบญเบเบˆเบฐเบšเปเปˆเบžเบฐเบเบฒเบเบฒเบกเป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบŠเปˆเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบฑเบ‡เปเบปเบ”เปƒเบ™เป„เบŸเบฅเปŒ. kustomization.yaml (เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เบฅเบฒเบโ€‹เบฅเบฑเบโ€‹เบญเบฑเบโ€‹เบชเบญเบ™โ€‹เบ”เบตโ€‹เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹ เบ—เบตเปˆเบ™เบตเป‰), เปเบ•เปˆเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเปƒเบซเป‰เบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบชเบฑเป‰เบ™เป†เบเปˆเบฝเบงเบเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡เบชเบฐเป€เบžเบฒเบฐ:

  • เบžเบฒเบเบชเบฐเบซเบ™เบฒเบก resources เบŠเบตเป‰เบšเบญเบเบชเบดเปˆเบ‡เบ—เบตเปˆ (เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบญเบฑเบ™เปƒเบ”) เบ›เบฑเบšเปเบ•เปˆเบ‡เบˆเบฐเบ›เปˆเบฝเบ™เปเบ›เบ‡. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบกเบฑเบ™เบˆเบฐเบŠเบญเบเบซเบฒเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เปƒเบ™เป„เบŸเบฅเปŒ deployment.yaml ะธ service.yaml เปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ‚เบญเบ‡เบ—เปˆเบฒเบ™ (เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบฅเบฐเบšเบธเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป€เบ•เบฑเบกเบซเบผเบทเบžเบตเปˆเบ™เป‰เบญเบ‡เบ–เป‰เบฒเบˆเปเบฒเป€เบ›เบฑเบ™).
  • เบžเบฒเบเบชเบฐเบซเบ™เบฒเบก namePrefix เปเบ™เบฐเบ™เปเบฒ kustomize เป€เบžเบทเปˆเบญเป€เบžเบตเปˆเบกเบ„เปเบฒเบ™เปเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™ (เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰ - dev-) เป€เบžเบทเปˆเบญโ€‹เบ„เบธเบ™โ€‹เบฅเบฑเบโ€‹เบชเบฐโ€‹เบ™เบฐโ€‹ name เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เบขเบนเปˆเปƒเบ™เบžเบฒเบเบชเบฐเบซเบ™เบฒเบก resources. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ–เป‰เบฒ Deployment เบกเบต name เบ—เบตเปˆโ€‹เบกเบตโ€‹เบ„เบงเบฒเบกโ€‹เบซเบกเบฒเบโ€‹ nginx-deployment, เบ›เบฑเบšเปเบ•เปˆเบ‡เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™ dev-nginx-deployment.
  • เบžเบฒเบเบชเบฐเบซเบ™เบฒเบก namespace เปเบ™เบฐเบ™เบณเปƒเบซเป‰เบ›เบฑเบšเปเบ•เปˆเบ‡เป€เบžเบทเปˆเบญเป€เบžเบตเปˆเบก namespace เปƒเบซเป‰เบเบฑเบšเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบฑเบ‡เปเบปเบ”. เปƒเบ™โ€‹เบเปโ€‹เบฅเบฐโ€‹เบ™เบตโ€‹เบ™เบตเป‰โ€‹, เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เบšเปโ€‹เบฅเบดโ€‹เบเบฒเบ™โ€‹เบˆเบฐโ€‹เบ•เบปเบโ€‹เบขเบนเปˆโ€‹เปƒเบ™ namespace เป„เบ”เป‰โ€‹ development.
  • เบชเบธเบ”เบ—เป‰เบฒเบ, เบžเบฒเบเบชเบฐเบซเบ™เบฒเบก commonLabels เบกเบตเบŠเบธเบ”เบ›เป‰เบฒเบเบเบณเบเบฑเบšเบ—เบตเปˆเบˆเบฐเบ–เบทเบเป€เบžเบตเปˆเบกเปƒเบชเปˆเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบฑเบ‡เปเบปเบ”. เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, kustomize เบˆเบฐเบเปเบฒเบ™เบปเบ”เบ›เป‰เบฒเบเบŠเบทเปˆเปƒเบซเป‰เบเบฑเบšเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบตเปˆเบกเบตเบŠเบทเปˆ environment เปเบฅเบฐเบ„เบงเบฒเบกเบซเบกเบฒเบ development.

เบ–เป‰เบฒเบœเบนเป‰เปƒเบŠเป‰เป€เบฎเบฑเบ” kustomize build . เปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆเบกเบตเป„เบŸเบฅเปŒ kustomization.yaml เปเบฅเบฐเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™ (i.e. เป„เบŸเบฅเปŒ deployment.yaml ะธ service.yaml), เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบขเบนเปˆเบ—เบตเปˆเบœเบปเบ™เบœเบฐเบฅเบดเบ”เบกเบฑเบ™เบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™ kustomization.yaml.

เบเบฒเบ™เปเบ™เบฐเบ™เบณเบชเบฑเป‰เบ™เป†เป€เบžเบทเปˆเบญเบ›เบฑเบšเปเบ•เปˆเบ‡
เบซเบกเบฒเบโ€‹เป€เบซเบ”โ€‹. เปเบ›.: เบฎเบนเบšเบ›เบฐเบเบญเบšเบˆเบฒเบเป€เบญเบเบฐเบชเบฒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ "เบ‡เปˆเบฒเบเบ”เบฒเบ" เบ‚เบญเบ‡ kustomize

เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ›เปˆเบฝเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป„เบ”เป‰เบ–เป‰เบฒเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ•เป‰เบญเบ‡เบกเบตเบ„เบงเบฒเบกเบกเบธเปˆเบ‡เบซเบกเบฑเป‰เบ™:

kustomize build . > custom-config.yaml

เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบเบฒเบ™โ€‹เบœเบฐโ€‹เบฅเบดเบ”โ€‹เปเบกเปˆเบ™โ€‹เบเบฒเบ™โ€‹เบเปเบฒโ€‹เบ™เบปเบ” (เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบเบฒเบ™โ€‹เบ›เป‰เบญเบ™โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบ”เบฝเบงโ€‹เบเบฑเบ™โ€‹เบˆเบฐโ€‹เปƒเบซเป‰โ€‹เบœเบปเบ™โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบœเบปเบ™โ€‹เบœเบฐโ€‹เบฅเบดเบ”โ€‹เบ”เบฝเบงโ€‹เบเบฑเบ™โ€‹)โ€‹, เบ”เบฑเปˆเบ‡โ€‹เบ™เบฑเป‰เบ™โ€‹เบ—เปˆเบฒเบ™โ€‹เบšเปเปˆโ€‹เบˆเปเบฒโ€‹เป€เบ›เบฑเบ™โ€‹เบ•เป‰เบญเบ‡โ€‹เบšเบฑเบ™โ€‹เบ—เบถเบโ€‹เบœเบปเบ™โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เปƒเบ™โ€‹เป„เบŸเบฅโ€‹เปŒโ€‹. เปเบ—เบ™เบ—เบตเปˆเบˆเบฐ, เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบ–เบทเบเบชเบปเปˆเบ‡เป‚เบ”เบเบเบปเบ‡เป„เบ›เบซเบฒเบ„เปเบฒเบชเบฑเปˆเบ‡เบญเบทเปˆเบ™:

kustomize build . | kubectl apply -f -

เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ” customize เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป„เบ”เป‰เป‚เบ”เบเบœเปˆเบฒเบ™ kubectl -k (เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆ Kubernetes เบฎเบธเปˆเบ™ 1.14). เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบˆเบปเปˆเบ‡เบˆเบทเปˆเป„เบงเป‰เบงเปˆเบฒเบŠเบธเบ” kustomize เปเบšเบš standalone เป„เบ”เป‰เบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡เป„เบงเบเบงเปˆเบฒเบŠเบธเบ” kubectl เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™ (เบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบเบ™เบตเป‰เปเบกเปˆเบ™เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เปˆเบญเบ Kubernetes 1.15).

เบœเบนเป‰เบญเปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบ–เบฒเบกเบงเปˆเบฒ: "เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบ„เบงเบฒเบกเบชเบฑเบšเบชเบปเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เปเบเป‰เป„เบ‚เป„เบŸเบฅเปŒเป‚เบ”เบเบเบปเบ‡?" เบ„เปเบฒเบ–เบฒเบกเบ—เบตเปˆเบเบดเปˆเบ‡เปƒเบซเบเปˆ. เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เปเบ—เป‰เบˆเบดเบ‡เปเบฅเป‰เบง เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰ เปเบเป‰เป„เบ‚เป„เบŸเบฅเปŒ deployment.yaml ะธ service.yaml เป‚เบ”เบเบเบปเบ‡, เปเบ•เปˆเบˆเบฐเป€เบ›เบฑเบ™เปเบ™เบงเปƒเบ”เบ–เป‰เบฒเบžเบงเบเป€เบ‚เบปเบฒเป€เบ›เบฑเบ™เบ—เบฒเบ‡เปเบเบเบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เบœเบนเป‰เบญเบทเปˆเบ™? เบเบฒเบ™เบ›เปˆเบฝเบ™เป„เบŸเบฅเปŒเป‚เบ”เบเบเบปเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบเบฒเบ (เบ–เป‰เบฒเป€เบ›เบฑเบ™เป„เบ›เบšเปเปˆเป„เบ”เป‰) เบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เบชเป‰เบญเบกเบ„เบทเบ™เปƒเปเปˆเป€เบกเบทเปˆเบญเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบเบฑเบšเบ•เบปเป‰เบ™เบ—เบฒเบ‡/เปเบซเบผเปˆเบ‡เบ—เบตเปˆเบกเบฒ. เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ kustomize เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเบนเบ™เบเบฒเบ‡เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบขเบนเปˆเปƒเบ™เป„เบŸเบฅเปŒ kustomization.yaml, เป€เบฎเบฑเบ”เปƒเบซเป‰เป„เบŸเบฅเปŒเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš intact เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบ‡เปˆเบฒเบเบ•เปเปˆเบเบฒเบ™ rebase เป„เบŸเบฅเปŒเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบกเบตเบ„เบงเบฒเบกเบˆเปเบฒเป€เบ›เบฑเบ™.

เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบ‚เบญเบ‡ kustomize เบเบฒเบเป€เบ›เบฑเบ™เบ›เบฒเบเบปเบ”เบ‚เบทเป‰เบ™เปƒเบ™เบเปเบฅเบฐเบ™เบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™เบซเบผเบฒเบ. เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡ kustomization.yaml เปเบฅเบฐเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบขเบนเปˆเปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ”เบฝเบงเบเบฑเบ™. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, kustomize เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเปเบฅเบฐเบ™เบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ—เบตเปˆเบกเบตเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบžเบทเป‰เบ™เบ–เบฒเบ™เปเบฅเบฐเบซเบผเบฒเบ variants เบ‚เบญเบ‡เบกเบฑเบ™, เบŠเบถเปˆเบ‡เป€เบญเบตเป‰เบ™เบเบฑเบ™เบงเปˆเบฒ. เบเบฒเบ™เบŠเป‰เบญเบ™เบเบฑเบ™. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบœเบนเป‰เปƒเบŠเป‰เบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบŠเป‰ Deployment and Service เบชเปเบฒเบฅเบฑเบš nginx, เป€เบŠเบดเปˆเบ‡เบ‚เป‰เบญเบเปƒเบŠเป‰เป€เบ›เบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡, เปเบฅเบฐเบชเป‰เบฒเบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ, เบ‚เบฑเป‰เบ™เบ•เบญเบ™เปเบฅเบฐเบเบฒเบ™เบœเบฐเบฅเบดเบ” (เบซเบผเบทเบ•เบปเบงเปเบ›) เบ‚เบญเบ‡เป„เบŸเบฅเปŒเป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบฅเบฒเบงเบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เบŠเป‰เบญเบ™เบเบฑเบ™เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เปเบฅเบฐ, เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡.

เป€เบžเบทเปˆเบญเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ‚เบญเบ‡เบเบฒเบ™เบŠเป‰เบญเบ™เบเบฑเบ™เปเบฅเบฐเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบตเปˆเบ•เบดเบ”เบžเบฑเบ™ (เปเบซเบผเปˆเบ‡โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบžเบทเป‰เบ™โ€‹เบ–เบฒเบ™โ€‹), เปƒเบซเป‰เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบกเบตเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

- base
  - deployment.yaml
  - service.yaml
  - kustomization.yaml
- overlays
  - dev
    - kustomization.yaml
  - staging
    - kustomization.yaml
  - prod
    - kustomization.yaml

เปƒเบ™เป„เบŸเบฅเปŒ base/kustomization.yaml เบœเบนเป‰เปƒเบŠเป‰เบ—เบตเปˆเปƒเบŠเป‰เบžเบฒเบเบชเบฐเบซเบ™เบฒเบก resources เบžเบฝเบ‡เปเบ•เปˆเบ›เบฐเบเบฒเบ”เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบตเปˆ customize เบ„เบงเบ™เบ›เบฐเบเบญเบšเบกเบต.

เปƒเบ™เปเบ•เปˆเบฅเบฐเป„เบŸเบฅเปŒ 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, customize เบˆเบฐเบชเป‰เบฒเบ‡เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ. เบ–เป‰เบฒเป€เบˆเบปเป‰เบฒเปเบฅเปˆเบ™ kustomize build . เปƒเบ™เบฅเบฒเบเบเบฒเบ™ overlays/prod - เบ—เปˆเบฒเบ™เป„เบ”เป‰เบฎเบฑเบšเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบเบฒเบ™เบœเบฐเบฅเบดเบ”. เปเบฅเบฐเบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰ - เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ”เป†เบเบฑเบšเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš (เบ–เบฒเบ™) เป„เบŸเบฅเปŒ, เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™เบงเบดเบ—เบตเบเบฒเบ™เบ›เบฐเบเบฒเบ”เปเบฅเบฐเบเปเบฒเบ™เบปเบ”. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบ„เปˆเบฒเบžเบทเป‰เบ™เบ–เบฒเบ™เปเบฅเบฐ overlay เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเป‚เบ”เบเบเบปเบ‡เบเบฑเบšเบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบชเบฐเบšเบฑเบš, เป‚เบ”เบเบฎเบนเป‰เบงเปˆเบฒเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเป„เบŸเบฅเปŒเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบœเบฐเบฅเบดเบ”เปƒเบซเบกเปˆเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เป„เบ”เป‰เบ—เบธเบเป€เบงเบฅเบฒ.

เบเบฒเบ™เปเบ™เบฐเบ™เบณเบชเบฑเป‰เบ™เป†เป€เบžเบทเปˆเบญเบ›เบฑเบšเปเบ•เปˆเบ‡
เบซเบกเบฒเบโ€‹เป€เบซเบ”โ€‹. เปเบ›.: เบžเบฒเบšเบ›เบฐเบเบญเบšเบˆเบฒเบเป€เบญเบเบฐเบชเบฒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เปƒเบŠเป‰เบเบฒเบ™เบงเบฒเบ‡เบŠเป‰เบญเบ™เบเบฑเบ™เปƒเบ™ customize

เบชเบฒเบกเบฒเบ”เบ›เบฑเบšเปเบ•เปˆเบ‡เป„เบ”เป‰ เบซเบผเบฒเบ เบซเบผเบฒเบเบเปˆเบงเบฒเบชเบดเปˆเบ‡เบ—เบตเปˆเบเบงเบกเป€เบญเบปเบฒเปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบซเบงเบฑเบ‡เบงเปˆเบฒเบกเบฑเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เปเบ™เบฐเบ™เปเบฒเบ—เบตเปˆเบ”เบต.

เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบก

เบกเบตเบซเบผเบฒเบเบšเบปเบ”เบ„เบงเบฒเบก เปเบฅเบฐเบชเบดเปˆเบ‡เบžเบดเบกเบ—เบตเปˆเบ”เบตเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ›เบฑเบšเปเบ•เปˆเบ‡. เบ™เบตเป‰เปเบกเปˆเบ™เบšเบฒเบ‡เบญเบฑเบ™เบ—เบตเปˆเบ‚เป‰เบญเบเบžเบปเบšเบงเปˆเบฒเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ:

เบซเบกเบฒเบโ€‹เป€เบซเบ”โ€‹. เปเบ›.: เบ—เปˆเบฒเบ™เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เปเบ™เบฐเบ™เปเบฒเบšเบฅเบฑเบญเบเบ‚เบญเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ—เบตเปˆเบˆเบฑเบ”เบžเบตเบกเบกเบฒเป€เบ›เบฑเบ™ เบŠเบฑเบšโ€‹เบžเบฐโ€‹เบเบฒโ€‹เบเบญเบ™ เบขเบนเปˆโ€‹เปƒเบ™โ€‹เป€เบงเบฑเบšโ€‹เป„เบŠโ€‹เบ—โ€‹เปŒโ€‹เบ‚เบญเบ‡โ€‹เบญเบธโ€‹เบ›เบฐโ€‹เบเบญเบ™โ€‹, เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบ•เบฒเบกโ€‹เป‚เบ”เบโ€‹เบเบฒเบ™โ€‹เป€เบเบฑเบšโ€‹เบเปเบฒโ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบ‚เบญเบ‡โ€‹เบงเบดโ€‹เบ”เบตโ€‹เป‚เบญโ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เบฅเบฒเบโ€‹เบ‡เบฒเบ™โ€‹เบซเบฅเป‰เบฒโ€‹เบชเบธเบ”โ€‹เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹เบเบฒเบ™ customizeโ€‹.

เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบ—เปˆเบฒเบ™โ€‹เบกเบตโ€‹เบ„เปเบฒโ€‹เบ–เบฒเบกโ€‹เบซเบผเบทโ€‹เบ„เปเบฒโ€‹เปเบ™เบฐโ€‹เบ™เปเบฒโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ›เบฑเบšโ€‹เบ›เบธเบ‡โ€‹เบญเบธโ€‹เบ›เบฐโ€‹เบเบญเบ™โ€‹เบเบฒเบ™โ€‹เบ™เบตเป‰โ€‹, เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบชเบฐโ€‹เป€เบซเบกเบตโ€‹เป€เบ›เบตเบ”โ€‹เปƒเบซเป‰โ€‹เบ„เปเบฒโ€‹เบ„เบถเบ”โ€‹เบ„เปเบฒโ€‹เป€เบซเบฑเบ™โ€‹. เป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เบ•เบดเบ”เบ•เปเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบ—เบตเปˆ Twitter เบซเบผเบท เบŠเปˆเบญเบ‡ Kubernetes Slack. เบกเปˆเบงเบ™เบเบฑเบšเบเบฒเบ™เบ”เบฑเบ”เปเบ›เบ‡ manifests เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบ”เป‰เบงเบเบเบฒเบ™เบ›เบฑเบšเปเบ•เปˆเบ‡!

PS เบˆเบฒเบเบ™เบฑเบเปเบ›

เบญเปˆเบฒเบ™เบเบฑเบ‡เบขเบนเปˆเปƒเบ™ blog เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ:

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™