ื ืงื•ืจืฅ ื”ืงื“ืžื” ืฆื• ืงืึทืกื˜ืึทืžื™ื™ื–

ื ืื˜ื™ืฅ. ื˜ืจืึทื ืกืœ.: ื“ืขืจ ืึทืจื˜ื™ืงืœ ืื™ื– ื’ืขื•ื•ืขืŸ ื’ืขืฉืจื™ื‘ืŸ ื“ื•ืจืš Scott Lowe, ืึทืŸ ื™ื ื–ืฉืขื ื™ืจ ืžื™ื˜ ื‘ืจื™ื™ื˜ ื“ืขืจืคืึทืจื•ื ื’ ืื™ืŸ IT, ื•ื•ืึธืก ืื™ื– ื“ืขืจ ืžื—ื‘ืจ / ืงืึธ-ืžื—ื‘ืจ ืคื•ืŸ ื–ื™ื‘ืŸ ื’ืขื“ืจื•ืงื˜ ื‘ื™ื›ืขืจ (ื“ืขืจ ื”ื•ื™ืคึผื˜ ืื•ื™ืฃ VMware vSphere). ืขืจ ืื™ืฆื˜ ืึทืจื‘ืขื˜ ืคึฟืึทืจ ื–ื™ื™ึทืŸ VMware ืกืึทื‘ืกื™ื“ื™ืขืจื™ Heptio (ืึทืงื•ื•ื™ื™ืขืจื“ ืื™ืŸ 2016), ืกืคึผืขืฉืึทืœื™ื™ื–ื™ื ื’ ืื™ืŸ ื•ื•ืึธืœืงืŸ ืงืึทืžืคึผื™ื•ื˜ื™ื ื’ ืื•ืŸ ืงื•ื‘ืขืจื ืขื˜ืขืก. ื“ืขืจ ื˜ืขืงืกื˜ ื–ื™ืš ืกืขืจื•ื•ืขืก ื•ื•ื™ ืึท ืงืึทื ืกื™ื™ืก ืื•ืŸ ื’ืจื™ื ื’ ืฆื• ืคึฟืึทืจืฉื˜ื™ื™ืŸ ื”ืงื“ืžื” ืฆื• ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืคืึทืจื•ื•ืึทืœื˜ื•ื ื’ ืคึฟืึทืจ Kubernetes ื ื™ืฆืŸ ื˜ืขื›ื ืึธืœืึธื’ื™ืข ืงืึทืกื˜ืึทืžื™ื™ื–, ื•ื•ืึธืก ืœืขืฆื˜ื ืก ื’ืขื•ื•ืืจืŸ ืึท ื˜ื™ื™ืœ ืคื•ืŸ K8s.

ื ืงื•ืจืฅ ื”ืงื“ืžื” ืฆื• ืงืึทืกื˜ืึทืžื™ื™ื–

Kustomize ืื™ื– ืึท ื’ืขืฆื™ื™ึทื’ ื•ื•ืึธืก ืึทืœืึทื•ื– ื™ื•ื–ืขืจื– ืฆื• "ืงืึทืกื˜ืึทืžื™ื™ื– ืคึผืฉื•ื˜, ื˜ืขืžืคึผืœืึทื˜ืข-ืคืจื™ื™ YAML ื˜ืขืงืขืก ืคึฟืึทืจ ืคืึทืจืฉื™ื“ืขื ืข ืฆื•ื•ืขืงืŸ, ืื•ืŸ ืœืึธื–ืŸ ื“ื™ ืึธืจื™ื’ื™ื ืขืœ YAML ื‘ืขืฉืึธืœืขื ืื•ืŸ ื ื™ืฆืœืขืš" (ื“ื™ ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’ ื‘ืึทืจืึธื•ื“ ื’ืœื™ื™ึทืš ืคึฟื•ืŸ ืงื•ืกื˜ืึธืžื™ื–ืข ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืื•ื™ืฃ GitHub). ืงื•ืกื˜ืึธืžื™ื–ืข ืงืขื ืขืŸ ื–ื™ื™ืŸ ืœื•ื™ืคืŸ ื’ืœื™ื™ึทืš ืึธื“ืขืจ, ื•ื•ื™ ืคื•ืŸ Kubernetes 1.14, ื’ืขื•ื•ื™ื™ื ื˜ kubectl -k ืฆื• ืึทืงืกืขืก ื–ื™ื™ืŸ ืคืึทื ื’ืงืฉืึทื ืึทืœื™ื˜ื™ (ื›ืึธื˜ืฉ ื•ื•ื™ ืคื•ืŸ Kubernetes 1.15, ื“ื™ ื‘ืึทื–ื•ื ื“ืขืจ ื‘ื™ื™ื ืขืจื™ ืื™ื– ื ื™ื™ึทืขืจ ื•ื•ื™ ื“ื™ ืงื™ื™ืคึผืึทื‘ื™ืœืึทื˜ื™ื– ื’ืขื‘ื•ื™ื˜ ืื™ืŸ kubectl). (ื ืื˜ื™ืฅ. ื˜ืจืึทื ืกืœ.: ืื•ืŸ ืžื™ื˜ ื“ื™ ืœืขืฆื˜ืข ืžืขืœื“ื•ื ื’ ืงื•ื‘ืขืจื ืขื˜ืขืก 1.16 ืงืึทืกื˜ืึทืžื™ื™ื– ืฉื˜ื™ืฆื˜ ื“ื•ืจืš ืื•ื™ืš ืื™ืŸ ื“ื™ ืงื•ื‘ืขื“ื ื ื•ืฆืŸ.) ืื™ืŸ ื“ืขื ืคึผืึธืกื˜ืŸ, ืื™ืš ื•ื•ื™ืœืŸ ืฆื• ื‘ืึทืงืขื ืขืŸ ืœื™ื™ืขื ืขืจ ืฆื• ื“ื™ ื‘ืึทืกื™ืงืก ืคื•ืŸ ืงื•ืกื˜ืึธืžื™ื–ืข.

ืื™ืŸ ื–ื™ื™ืŸ ืกื™ืžืคึผืœืึทืกื˜ ืคืึธืจืขื / ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ, kustomize ืื™ื– ืคืฉื•ื˜ ืึท ื–ืึทืžืœื•ื ื’ ืคื•ืŸ ืจืขืกื•ืจืกืŸ (YAML ื˜ืขืงืขืก ื•ื•ืึธืก ื“ืขืคื™ื ื™ืจืŸ Kubernetes ืึทื‘ื“ื–ืฉืขืงืฅ: ื“ื™ืคึผืœื•ื™ืžืึทื ืฅ, ื‘ืึทื“ื™ื ื•ื ื’ืก, ืืื–"ื• ื•) ืคึผืœื•ืก ืึท ืจืฉื™ืžื” ืคื•ืŸ ื™ื ืกื˜ืจืึทืงืฉืึทื ื– ืคึฟืึทืจ ืขื ื“ืขืจื•ื ื’ืขืŸ ื•ื•ืึธืก ื“ืึทืจืคึฟืŸ ืฆื• ื–ื™ื™ืŸ ื’ืขืžืื›ื˜ ืฆื• ื“ื™ ืจืขืกื•ืจืกืŸ. ืคึผื•ื ืงื˜ ื•ื•ื™ ืžืึทื›ืŸ ื ื™ืฆื˜ ื“ื™ ืœื™ืžืขื“ ืฉื˜ืขืœืŸ ืงืึทื ื˜ื™ื™ื ื“ ืื™ืŸ Makefile, ืื•ืŸ ื“ืึธืงืขืจ ื‘ื•ื™ืขืŸ ื“ืขื ืงืึทื ื˜ื™ื™ื ืขืจ ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื™ื ืกื˜ืจืึทืงืฉืึทื ื– ืคื•ืŸ 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 ื™ื ืกื˜ืจืึทืงืฅ ืงื•ืกื˜ืึธืžื™ื–ืข ืฆื• ืœื™ื™ื’ืŸ ืึท ื–ื™ื›ืขืจ ืคึผืจืขืคื™ืงืก (ืื™ืŸ ื“ืขื ืคืึทืœ - dev-) ืฆื• ืึทื˜ืจื™ื‘ื™ื•ื˜ name ืึทืœืข ืจืขืกื•ืจืกืŸ ื“ื™ืคื™ื™ื ื“ ืื™ืŸ ื“ืขื ืคืขืœื“ resources. ืื–ื•ื™, ืื•ื™ื‘ ื“ื™ืคึผืœื•ื™ืžืึทื ื˜ ื”ืื˜ name ืžื™ื˜ ื˜ื™ื™ึทื˜ืฉ nginx-deployment, ืงืึทืกื˜ืึทืžื™ื™ื– ื•ื•ืขื˜ ืžืึทื›ืŸ ืขืก dev-nginx-deployment.
  • ืคืขืœื“ namespace ื™ื ืกื˜ืจืึทืงืฅ ืงื•ืกื˜ืึธืžื™ื–ืข ืฆื• ืœื™ื™ื’ืŸ ื“ื™ ื’ืขื’ืขื‘ืŸ ื ืึธืžืขืŸ ืกืคึผื™ื™ืก ืฆื• ืึทืœืข ืจืขืกื•ืจืกืŸ. ืื™ืŸ ื“ืขื ืคืึทืœ, ื“ื™ืคึผืœื•ื™ืžืึทื ื˜ ืื•ืŸ ืกืขืจื•ื•ื™ืก ื•ื•ืขื˜ ืคืึทืœืŸ ืื™ืŸ ื“ื™ ื ืึทืžืขืกืคึผืึทืกืข development.
  • ืฆื•ื ืกื•ืฃ, ื“ื™ ืคืขืœื“ commonLabels ื›ึผื•ืœืœ ืึท ืกื›ื•ื ืคื•ืŸ ืœืึทื‘ืขืœืก ื•ื•ืึธืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ืžื•ืกื™ืฃ ืฆื• ืึทืœืข ืจืขืกื•ืจืกืŸ. ืื™ืŸ ืื•ื ื“ื–ืขืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, kustomize ื•ื•ืขื˜ ื‘ืึทืฉื˜ื™ืžืขืŸ ืึท ืคื™ืจืžืข ืฆื• ื“ื™ ืจืขืกื•ืจืกืŸ ืžื™ื˜ ื“ืขื ื ืึธืžืขืŸ environment ืื•ืŸ ื“ื™ ื•ื•ืขืจื˜ development.

ืื•ื™ื‘ ื“ืขืจ ื‘ืึทื ื™ืฆืขืจ ื˜ื•ื˜ kustomize build . ืื™ืŸ ื“ืขืจ ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ ืžื™ื˜ ื“ืขืจ ื˜ืขืงืข kustomization.yaml ืื•ืŸ ื“ื™ ื ื™ื™ื˜ื™ืง ืจืขืกื•ืจืกืŸ (ื“"ื” ื˜ืขืงืขืก deployment.yaml ะธ service.yaml), ืื•ืŸ ืื™ืŸ ื“ืขืจ ืจืขื–ื•ืœื˜ืึทื˜ ืขืก ื•ื•ืขื˜ ื‘ืึทืงื•ืžืขืŸ ืึท ื˜ืขืงืกื˜ ืžื™ื˜ ื“ื™ ืขื ื“ืขืจื•ื ื’ืขืŸ ืกืคึผืขืกื™ืคื™ืขื“ ืื™ืŸ kustomization.yaml.

ื ืงื•ืจืฅ ื”ืงื“ืžื” ืฆื• ืงืึทืกื˜ืึทืžื™ื™ื–
ื ืื˜ื™ืฅ. ื˜ืจืึทื ืกืœ.: ืื™ืœื•ืกื˜ืจืืฆื™ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืคึผืจื•ื™ืขืงื˜ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ ืื•ื™ืฃ ื“ื™ "ืคึผืฉื•ื˜" ื ื•ืฆืŸ ืคื•ืŸ ืงื•ืกื˜ืึธืžื™ื–ืข

ื“ืขืจ ืจืขื–ื•ืœื˜ืึทื˜ ืงืขื ืขืŸ ื–ื™ื™ืŸ ืจื™ื“ืขืจืขืงื˜ื™ื“ ืื•ื™ื‘ ืขื ื“ืขืจื•ื ื’ืขืŸ ื“ืึทืจืคึฟืŸ ืฆื• ื–ื™ื™ืŸ ื‘ืื’ืื ื’ืขืŸ:

kustomize build . > custom-config.yaml

ื“ืขืจ ืจืขื–ื•ืœื˜ืึทื˜ ื“ืึทื˜ืŸ ืื™ื– ื“ื™ื˜ืขืจืžืึทื ื™ืกื˜ื™ืง (ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืึทืจื™ื™ึทื ืฉืจื™ื™ึทื‘ ื“ืึทื˜ืŸ ื•ื•ืขื˜ ืคึผืจืึธื“ื•ืฆื™ืจืŸ ื“ื™ ื–ืขืœื‘ืข ืจืขื–ื•ืœื˜ืึทื˜ ืจืขื–ื•ืœื˜ืึทื˜ืŸ), ืึทื–ื•ื™ ืื™ืจ ื˜ืึธืŸ ื ื™ื˜ ื”ืึธื‘ืŸ ืฆื• ืจืึทื˜ืขื•ื•ืขืŸ ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ ืื™ืŸ ืึท ื˜ืขืงืข. ืึทื ืฉื˜ืึธื˜, ืขืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ื“ื•ืจื›ื’ืขื’ืื ื’ืขืŸ ื’ืœื™ื™ึทืš ืฆื• ืืŸ ืื ื“ืขืจ ื‘ืึทืคึฟืขืœ:

kustomize build . | kubectl apply -f -

ื“ื™ ืงื•ืกื˜ืึธืžื™ื–ืข ืคึฟืขื™ึดืงื™ื™ื˜ืŸ ืงืขื ืขืŸ ืื•ื™ืš ื–ื™ื™ืŸ ืึทืงืกืขืกื˜ ื“ื•ืจืš kubectl -k (ื–ื™ื ื˜ Kubernetes ื•ื•ืขืจืกื™ืข 1.14). ืึธื‘ืขืจ, ื”ืึทืœื˜ืŸ ืื™ืŸ ืžื™ื™ื ื•ื ื’ ืึทื– ื“ื™ ืกื˜ืึทื ื“ืึทืœืึธื ืข ืงื•ืกื˜ืึธืžื™ื–ืข ืคึผืขืงืœ ืื™ื– ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงื˜ ืคืึทืกื˜ืขืจ ื•ื•ื™ ื“ื™ ื™ื ืึทื’ืจื™ื™ื˜ื™ื“ ืงื•ื‘ืขืงื˜ืœ ืคึผืขืงืœ (ื‘ื™ื™ึท ืžื™ื ื“ืกื˜ืขืจ ื“ืึธืก ืื™ื– ื“ืขืจ ืคืึทืœ ืžื™ื˜ ื“ื™ Kubernetes 1.15 ืžืขืœื“ื•ื ื’).

ืœื™ื™ืขื ืขืจ ืงืขืŸ ืคืจืขื’ืŸ: "ืคืืจื•ื•ืืก ืึทืœืข ื“ืขื ืงืึทืžืคึผืœืขืงืกื™ื˜ื™ ืื•ื™ื‘ ืื™ืจ ืงืขื ืขืŸ ืจืขื“ืึทื’ื™ืจืŸ ื“ื™ ื˜ืขืงืขืก ื’ืœื™ื™ึทืš?" ื’ืจื•ื™ืก ืงืฉื™ื. ืื™ืŸ ืื•ื ื“ื–ืขืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ื˜ืึทืงืข ืื™ื™ื ืขืจ ืงืขื ืขืŸ ืžืึธื“ื™ืคื™ืฆื™ืจืŸ ื˜ืขืงืขืก deployment.yaml ะธ service.yaml ื’ืœื™ื™ึทืš, ืึธื‘ืขืจ ื•ื•ืึธืก ืื•ื™ื‘ ื–ื™ื™ ื–ืขื ืขืŸ ืึท ื’ืึธืคึผืœ ืคื•ืŸ ืขืžืขืฆืขืจ ืึทื ื“ืขืจืฉ ืก ืคึผืจื•ื™ืขืงื˜? ื’ืœื™ื™ืš ื˜ืฉืึทื ื’ื™ื ื’ ื˜ืขืงืขืก ืžืื›ื˜ ืขืก ืฉื•ื•ืขืจ (ืื•ื™ื‘ ื ื™ื˜ ืื•ืžืžืขื’ืœืขืš) ืฆื• ืจืขื‘ืึทืกืข ืึท ื’ืึธืคึผืœ ื•ื•ืขืŸ ืขื ื“ืขืจื•ื ื’ืขืŸ ื–ืขื ืขืŸ ื’ืขืžืื›ื˜ ืฆื• ื“ื™ ืึธื ื”ื™ื™ื‘ / ืžืงื•ืจ. ื ื™ืฆืŸ ืงื•ืกื˜ืึธืžื™ื–ืข ืึทืœืึทื•ื– ืื™ืจ ืฆื• ืกืขื ื˜ืจืึทืœื™ื™ื– ื“ื™ ืขื ื“ืขืจื•ื ื’ืขืŸ ืื™ืŸ ืึท ื˜ืขืงืข kustomization.yaml, ืœืึธื–ืŸ ื“ื™ ืึธืจื™ื’ื™ื ืขืœ ื˜ืขืงืขืก ื‘ืขืฉืึธืœืขื ืื•ืŸ ืึทื–ื•ื™ ืžืึทื›ืŸ ืขืก ื’ืจื™ื ื’ืขืจ ืฆื• ืจื™ื‘ืึทืกืข ื“ื™ ืึธืจื™ื’ื™ื ืขืœ ื˜ืขืงืขืก ืื•ื™ื‘ ื ื™ื™ื˜ื™ืง.

ื“ื™ ื‘ืขื ืขืคื™ืฅ ืคื•ืŸ ืงื•ืกื˜ืึธืžื™ื–ืข ื•ื•ืขืจืŸ ืงืขื ื˜ื™ืง ืื™ืŸ ืžืขืจ ืงืึธืžืคึผืœื™ืฆื™ืจื˜ ื ื•ืฆืŸ ืงืึทืกืขืก. ืื™ืŸ ื“ื™ ืื•ื™ื‘ืŸ ื‘ื™ื™ึทืฉืคึผื™ืœ kustomization.yaml ืื•ืŸ ื“ื™ ืจืขืกื•ืจืกืŸ ื–ืขื ืขืŸ ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ. ืึธื‘ืขืจ, kustomize ืฉื˜ื™ืฆื˜ ื ื•ืฆืŸ ืงืึทืกืขืก ื•ื•ื• ืขืก ืื™ื– ืึท ื‘ืึทื–ืข ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืื•ืŸ ืคื™ืœืข ื•ื•ืขืจื™ืึทื ืฅ ืคื•ืŸ ืขืก, ืื•ื™ืš ื‘ืืงืื ื˜ ื•ื•ื™ overlays. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืึท ื‘ืึทื ื™ืฆืขืจ ื’ืขื•ื•ืืœื˜ ืฆื• ื ืขืžืขืŸ ื“ื™ืคึผืœื•ื™ืžืึทื ื˜ ืื•ืŸ ืกืขืจื•ื•ื™ืก ืคึฟืึทืจ nginx, ื•ื•ืึธืก ืื™ืš ื’ืขื•ื•ื™ื™ื ื˜ ื•ื•ื™ ืึท ื‘ื™ื™ืฉืคึผื™ืœ, ืื•ืŸ ืฉืึทืคึฟืŸ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’, ืกื˜ืึทื’ื™ื ื’ ืื•ืŸ ืคึผืจืึธื“ื•ืงืฆื™ืข ื•ื•ืขืจืกื™ืขืก (ืึธื“ืขืจ ื•ื•ืขืจื™ืึทื ืฅ) ืคื•ืŸ ื“ื™ ื˜ืขืงืขืก. ืฆื• ื˜ืึธืŸ ื“ืึธืก, ืขืจ ื•ื•ืขื˜ ื“ืึทืจืคึฟืŸ ื“ื™ ืื•ื™ื‘ืŸ-ื“ืขืจืžืื ื˜ ืึธื•ื•ื•ืขืจืœื™ื™ื– ืื•ืŸ, ืื™ืŸ ืคืึทืงื˜, ื“ื™ ื’ืจื•ื ื˜ ืจืขืกื•ืจืกืŸ ื–ื™ืš.

ืฆื• ืื™ืœื•ืกื˜ืจื™ืจืŸ ื“ืขื ื’ืขื“ืึทื ืง ืคื•ืŸ ืึธื•ื•ื•ืขืจืœื™ื™ื– ืื•ืŸ ืึทื ื“ืขืจืœื™ื™ื™ื ื’ ืจืขืกื•ืจืกืŸ (ื‘ืึทื–ืข ืจืขืกื•ืจืกืŸ), ืœืึธืžื™ืจ ื™ื‘ืขืจื ืขืžืขืŸ ืึทื– ื“ื™ ื“ื™ืจืขืงื˜ืขืจื™ื– ื”ืึธื‘ืŸ ื“ื™ ืคืืœื’ืขื ื“ืข ืกื˜ืจื•ืงื˜ื•ืจ:

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

ืื™ืŸ ื˜ืขืงืข base/kustomization.yaml ื ื™ืฆืขืจืก ื ื™ืฆืŸ ื“ืขื ืคืขืœื“ resources ืคืฉื•ื˜ ื“ืขืจืงืœืขืจืŸ ื“ื™ ืจืขืกื•ืจืกืŸ ืึทื– ืงื•ืกื˜ืึธืžื™ื–ืข ื–ืึธืœ ืึทืจื™ื™ึทื ื ืขืžืขืŸ.

ืื™ืŸ ื™ืขื“ืขืจ ืคื•ืŸ ื“ื™ ื˜ืขืงืขืก 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 build . ืื™ืŸ ื“ืขื ืงืึทื˜ืึทืœืึธื’ overlays/prod - ืื™ืจ ื‘ืึทืงื•ืžืขืŸ ื“ื™ ืคึผืจืึธื“ื•ืงืฆื™ืข ืึธืคึผืฆื™ืข. ืื•ืŸ ืึทืœืข ื“ืขื - ืึธืŸ ืžืื›ืŸ ืงื™ื™ืŸ ืขื ื“ืขืจื•ื ื’ืขืŸ ืฆื• ื“ืขืจ ืึธืจื™ื’ื™ื ืขืœ (ื‘ืึทื–ืข) ื˜ืขืงืขืก, ืึทืœืข ืื™ืŸ ืึท ื“ืขืงืœืึทืจืึทื˜ื™ื•ื•ืข ืื•ืŸ ื“ื™ื˜ืขืจืžืึทื ื™ืกื˜ื™ืง ื•ื•ืขื’. ืื™ืจ ืงืขื ืขืŸ ื™ื‘ืขืจื’ืขื‘ืŸ ื“ื™ ื‘ืึทื–ืข ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืื•ืŸ ืึธื•ื•ื•ืขืจืœื™ื™ ื“ื™ื™ืจืขืงื˜ืขืจื™ื– ื’ืœื™ื™ึทืš ืฆื• ื•ื•ืขืจืกื™ืข ืงืึธื ื˜ืจืึธืœ, ื•ื•ื™ื™ืœ ืื™ืจ ื•ื•ื™ืกืŸ ืึทื– ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื“ื™ ื˜ืขืงืขืก ืื™ืจ ืงืขื ืขืŸ ืจืขืคึผืจืึธื“ื•ืฆื™ืจืŸ ื“ื™ ื’ืขื‘ืขื˜ืŸ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืื™ืŸ ืงื™ื™ืŸ ืฆื™ื™ื˜.

ื ืงื•ืจืฅ ื”ืงื“ืžื” ืฆื• ืงืึทืกื˜ืึทืžื™ื™ื–
ื ืื˜ื™ืฅ. ื˜ืจืึทื ืกืœ.: ืื™ืœื•ืกื˜ืจืืฆื™ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืคึผืจื•ื™ืขืงื˜ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ ืื•ื™ืฃ ื ื™ืฆืŸ ืึธื•ื•ื•ืขืจืœื™ื™ื– ืื™ืŸ ืงื•ืกื˜ืึธืžื™ื–ืข

ืงืึทืกื˜ืึทืžื™ื™ื– ืงืขื ืขืŸ ืคื™ืœ ืžืขืจ ื•ื•ื™ ื•ื•ืึธืก ืื™ื– ื‘ืื“ืขืงื˜ ืื™ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ. ืึธื‘ืขืจ, ืื™ืš ื”ืึธืคึฟืŸ ืขืก ืกืขืจื•ื•ืขืก ื•ื•ื™ ืึท ื’ื•ื˜ ื”ืงื“ืžื”.

ื ืึธืš ืจืขืกื•ืจืกืŸ

ืขืก ื–ืขื ืขืŸ ืคื™ืœืข ื’ื•ื˜ืข ืึทืจื˜ื™ืงืœืขืŸ ืื•ืŸ ืื•ื™ืกื’ืื‘ืขืก ื•ื•ืขื’ืŸ ืงื•ืกื˜ืึธืžื™ื–ืข. ื“ืึธ ื–ืขื ืขืŸ ืขื˜ืœืขื›ืข ื•ื•ืึธืก ืื™ืš ื’ืขืคึฟื•ื ืขืŸ ืกืคึผืขืฆื™ืขืœ ื ื•ืฆื™ืง:

ื ืื˜ื™ืฅ. ื˜ืจืึทื ืกืœ.: ืื™ืจ ืงืขื ืขืŸ ืื•ื™ืš ืจืขืงืึธืžืขื ื“ื™ืจืŸ ืึท ื‘ืœืึธืง ืคื•ืŸ ืœื™ื ืงืก ืืจื•ื™ืก ื•ื•ื™ ืจืขืกืึธื•ืจืกืขืก ืื•ื™ืฃ ื“ื™ ื•ื•ืขื‘ื–ื™ื™ื˜ืœ ืคื•ืŸ ื“ื™ ื™ื•ื˜ื™ืœืึทื˜ื™ื–, ื ืื›ื’ืขื’ืื ื’ืขืŸ ื“ื•ืจืš ืึท ื–ืึทืžืœื•ื ื’ ืคื•ืŸ ื•ื•ื™ื“ื™ืืก ืžื™ื˜ ื“ื™ ืœืขืฆื˜ืข ืจื™ืคึผืึธืจืฅ ื•ื•ืขื’ืŸ ืงื•ืกื˜ืึธืžื™ื–ืข.

ืื•ื™ื‘ ืื™ืจ ื”ืึธื˜ ืคึฟืจืื’ืŸ ืึธื“ืขืจ ืคึฟื™ืจืœื™ื™ื’ืŸ ืฆื• ืคึฟืึทืจื‘ืขืกืขืจืŸ ื“ืขื ืžืึทื˜ืขืจื™ืึทืœ, ืื™ืš ื‘ื™ืŸ ืฉื˜ืขื ื“ื™ืง ืึธืคืŸ ืคึฟืึทืจ ื‘ืึทืžืขืจืงื•ื ื’ืขืŸ. ืื™ืจ ืงืขื ื˜ ืงืึธื ื˜ืึทืงื˜ ืžื™ืจ ืื™ืŸ ื˜ื•ื•ื™ื˜ื˜ืขืจ ืึธื“ืขืจ ืื™ืŸ ืงื•ื‘ืขืจื ืขื˜ืขืก ืกืœืึทืงืง ืงืึทื ืึทืœ. ื”ืึธื‘ืŸ ืฉืคึผืึทืก ืฆื• ืžืึธื“ื™ืคื™ืฆื™ืจืŸ ื“ื™ื™ืŸ ืžืึทื ื™ืคืขืกืฅ ืžื™ื˜ ืงื•ืกื˜ืึธืžื™ื–ืข!

ืคึผืก ืคื•ืŸ ืื™ื‘ืขืจื–ืขืฆืขืจ

ืœื™ื™ืขื ืขืŸ ืื•ื™ืš ืื•ื™ืฃ ืื•ื ื“ื–ืขืจ ื‘ืœืึธื’:

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’