ื ืืืืฅ. ืืจืึทื ืกื.: ืืขืจ ืึทืจืืืงื ืืื ืืขืืืขื ืืขืฉืจืืื ืืืจื Scott Lowe, ืึทื ืื ืืฉืขื ืืจ ืืื ืืจืืื ืืขืจืคืึทืจืื ื ืืื IT, ืืืึธืก ืืื ืืขืจ ืืืืจ / ืงืึธ-ืืืืจ ืคืื ืืืื ืืขืืจืืงื ืืืืขืจ (ืืขืจ ืืืืคึผื ืืืืฃ VMware vSphere). ืขืจ ืืืฆื ืึทืจืืขื ืคึฟืึทืจ ืืืึทื VMware ืกืึทืืกืืืืขืจื Heptio (ืึทืงืืืืืขืจื ืืื 2016), ืกืคึผืขืฉืึทืืืืืื ื ืืื ืืืึธืืงื ืงืึทืืคึผืืืืื ื ืืื ืงืืืขืจื ืขืืขืก. ืืขืจ ืืขืงืกื ืืื ืกืขืจืืืขืก ืืื ืึท ืงืึทื ืกืืืก ืืื ืืจืื ื ืฆื ืคึฟืึทืจืฉืืืื ืืงืืื ืฆื ืงืึทื ืคืืืืขืจืืืฉืึทื ืคืึทืจืืืึทืืืื ื ืคึฟืึทืจ Kubernetes ื ืืฆื ืืขืื ืึธืืึธืืืข
Kustomize ืืื ืึท ืืขืฆืืึทื ืืืึธืก ืึทืืึทืื ืืืืขืจื ืฆื "ืงืึทืกืืึทืืืื ืคึผืฉืื, ืืขืืคึผืืึทืืข-ืคืจืื YAML ืืขืงืขืก ืคึฟืึทืจ ืคืึทืจืฉืืืขื ืข ืฆืืืขืงื, ืืื ืืึธืื ืื ืึธืจืืืื ืขื YAML ืืขืฉืึธืืขื ืืื ื ืืฆืืขื" (ืื ืืึทืฉืจืืึทืืื ื ืืึทืจืึธืื ืืืืึทื ืคึฟืื kubectl -k
ืฆื ืึทืงืกืขืก ืืืื ืคืึทื ืืงืฉืึทื ืึทืืืื (ืืึธืืฉ ืืื ืคืื Kubernetes 1.15, ืื ืืึทืืื ืืขืจ ืืืื ืขืจื ืืื ื ืืึทืขืจ ืืื ืื ืงืืืคึผืึทืืืืึทืืื ืืขืืืื ืืื kubectl). (ื ืืืืฅ. ืืจืึทื ืกื.: ืืื ืืื ืื ืืขืฆืืข ืืขืืืื ื
ืืื ืืืื ืกืืืคึผืืึทืกื ืคืึธืจืขื / ืึทืคึผืืึทืงืืืฉืึทื, 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
- ืืืจ ืืึทืงืืืขื ืื ืคึผืจืึธืืืงืฆืืข ืึธืคึผืฆืืข. ืืื ืึทืืข ืืขื - ืึธื ืืืื ืงืืื ืขื ืืขืจืื ืืขื ืฆื ืืขืจ ืึธืจืืืื ืขื (ืืึทืืข) ืืขืงืขืก, ืึทืืข ืืื ืึท ืืขืงืืึทืจืึทืืืืืข ืืื ืืืืขืจืืึทื ืืกืืืง ืืืขื. ืืืจ ืงืขื ืขื ืืืขืจืืขืื ืื ืืึทืืข ืงืึทื ืคืืืืขืจืืืฉืึทื ืืื ืึธืืืืขืจืืื ืืืืจืขืงืืขืจืื ืืืืึทื ืฆื ืืืขืจืกืืข ืงืึธื ืืจืึธื, ืืืืื ืืืจ ืืืืกื ืึทื ืืืืืจื ืืืืฃ ืื ืืขืงืขืก ืืืจ ืงืขื ืขื ืจืขืคึผืจืึธืืืฆืืจื ืื ืืขืืขืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืืื ืงืืื ืฆืืื.
ื ืืืืฅ. ืืจืึทื ืกื.: ืืืืืกืืจืืฆืืข ืคืื โโืื ืคึผืจืืืขืงื ืืึทืงืืืืขื ืืืืฉืึทื ืืืืฃ ื ืืฆื ืึธืืืืขืจืืืื ืืื ืงืืกืืึธืืืืข
ืงืึทืกืืึทืืืื ืงืขื ืขื ืคืื ืืขืจ ืืื ืืืึธืก ืืื ืืืืขืงื ืืื ืืขื ืึทืจืืืงื. ืึธืืขืจ, ืืื ืืึธืคึฟื ืขืก ืกืขืจืืืขืก ืืื ืึท ืืื ืืงืืื.
ื ืึธื ืจืขืกืืจืกื
ืขืก ืืขื ืขื ืคืืืข ืืืืข ืึทืจืืืงืืขื ืืื ืืืืกืืืืขืก ืืืขืื ืงืืกืืึธืืืืข. ืืึธ ืืขื ืขื ืขืืืขืืข ืืืึธืก ืืื ืืขืคึฟืื ืขื ืกืคึผืขืฆืืขื ื ืืฆืืง:
-
ืืืืฉื ืื ืืึทืืข YAML ืงืึทื ืคืืืืขืจืืืฉืึทื ืคึฟืึทืจ ืคืึทืจืฉืืืขื ืข ืื ืืืืืจืึทื ืืึทื ืฅ ืคึผืจืึธื / ืคึผืจืืืืจื ื ืืฆื Kustomize ; -
ืงืืกืืึธืืืืข - ืื ืจืขืื ืืืขื ืฆื ืืึธื ืืขืืคึผืืึทืืื ื ืืื Kubernetes ; -
ืืขืงืืึทืจืึทืืืืืข ืคืึทืจืืืึทืืืื ื ืคืื Kubernetes ืึทืืืืฉืขืงืฅ ื ืืฆื ืงืึทืกืืึทืืืื ; -
ืงืึทืกืืึทืืืื ืึทืคึผืกืืจืื ืืขืื ืืฉืึทืจืฅ ืืื ืงืึทืกืืึทืืืื .
ื ืืืืฅ. ืืจืึทื ืกื.: ืืืจ ืงืขื ืขื ืืืื ืจืขืงืึธืืขื ืืืจื ืึท ืืืึธืง ืคืื ืืื ืงืก ืืจืืืก ืืื
ืืืื ืืืจ ืืึธื ืคึฟืจืืื ืึธืืขืจ ืคึฟืืจืืืืื ืฆื ืคึฟืึทืจืืขืกืขืจื ืืขื ืืึทืืขืจืืึทื, ืืื ืืื ืฉืืขื ืืืง ืึธืคื ืคึฟืึทืจ ืืึทืืขืจืงืื ืืขื. ืืืจ ืงืขื ื ืงืึธื ืืึทืงื ืืืจ ืืื
ืคึผืก ืคืื ืืืืขืจืืขืฆืขืจ
ืืืืขื ืขื ืืืื ืืืืฃ ืืื ืืืขืจ ืืืึธื:
- ยซ
ืืืฉืืจืื ืคึฟืึทืจ ืืขืืืขืืึธืคึผืขืจืก ืคืื ืึทืคึผืืึทืงืืืฉืึทื ื ืคืืืกื ืืืง ืืืืฃ Kubernetes "; - ยซ
Kubernetes 1.14: ืืืืขืจืืืืง ืคืื ืื ืืืืคึผื ืื ืึธืืืืืืฉืึทื ื "; - ยซ
ืคืื ืฃ ืืืืคึผื ืจืขืืืืืึทืื ืคืื ืืขืื ืกืึทืืื 2019 ืืื ืืืกืืขืจืืื "; - ยซ
ืคึผืจืึทืงืืืฉืข ืืงืืื ืฆื ืื ืคึผืขืงื ืคืึทืจืืืึทืืืขืจ ืคึฟืึทืจ ืงืืืขืจื ืขืืขืก - ืืขืื '.
ืืงืืจ: www.habr.com