Kustomize рдЪрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдкрд░рд┐рдЪрдп

рдиреЛрдВрдж. рдЕрдиреБрд╡рд╛рдж: рд▓реЗрдЦ рд╕реНрдХреЙрдЯ рд▓реЛрд╡ рдпрд╛рдВрдиреА рд▓рд┐рд╣рд┐рд▓рд╛ рдЖрд╣реЗ, рдЬреЛ IT рдордзреНрдпреЗ рд╡реНрдпрд╛рдкрдХ рдЕрдиреБрднрд╡ рдЕрд╕рд▓реЗрд▓реЗ рдЕрднрд┐рдпрдВрддрд╛ рдЖрд╣реЗ, рдЬреЛ рд╕рд╛рдд рдЫрд╛рдкреАрд▓ рдкреБрд╕реНрддрдХрд╛рдВрдЪреЗ рд▓реЗрдЦрдХ/рд╕рд╣-рд▓реЗрдЦрдХ рдЖрд╣реЗ (рдореБрдЦреНрдпрддрдГ VMware vSphere рд╡рд░). рддреЛ рдЖрддрд╛ рддреНрдпрд╛рдЪреНрдпрд╛ VMware рдЙрдкрдХрдВрдкрдиреА Heptio (2016 рдордзреНрдпреЗ рд╡рд┐рдХрдд рдШреЗрддрд▓реЗ), рдХреНрд▓рд╛рдЙрдб рдХрдВрдкреНрдпреБрдЯрд┐рдВрдЧ рдЖрдгрд┐ Kubernetes рдордзреНрдпреЗ рд╡рд┐рд╢реЗрд╖ рдХрд╛рдо рдХрд░рддреЛ. рдордЬрдХреВрд░ рд╕реНрд╡рддрдГрдЪ рддрдВрддреНрд░рдЬреНрдЮрд╛рдирд╛рдЪрд╛ рд╡рд╛рдкрд░ рдХрд░реВрди рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рд╕рд╛рдареА рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдирд╛рдЪрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЖрдгрд┐ рд╕рдордЬрдгреНрдпрд╛рд╕ рд╕реБрд▓рдн рдкрд░рд┐рдЪрдп рдореНрд╣рдгреВрди рдХрд╛рдо рдХрд░рддреЛ рд╕рд╛рдиреБрдХреВрд▓ рдХрд░рд╛, рдЬреЗ рдЕрд▓реАрдХрдбреЗ K8s рдЪрд╛ рднрд╛рдЧ рдмрдирд▓реЗ рдЖрд╣реЗ.

Kustomize рдЪрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдкрд░рд┐рдЪрдп

Kustomize рд╣реЗ рдПрдХ рд╕рд╛рдзрди рдЖрд╣реЗ рдЬреЗ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдирд╛ "рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдЙрджреНрджреЗрд╢рд╛рдВрд╕рд╛рдареА рд╕рд╛рдзреНрдпрд╛, рдЯреЗрдореНрдкрд▓реЗрдЯ-рдореБрдХреНрдд YAML рдлрд╛рдпрд▓реА рд╕рд╛рдиреБрдХреВрд▓рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ, рдореВрд│ YAML рдЕрдЦрдВрдб рдЖрдгрд┐ рд╡рд╛рдкрд░рдгреНрдпрд╛рдпреЛрдЧреНрдп рд╕реЛрдбреВрди" (рд╡рд░реНрдгрди рдереЗрдЯ рдХрдбреВрди рдШреЗрддрд▓реЗрд▓реЗ GitHub рд╡рд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╕реНрдЯрдорд╛рдЗрдЭ рдХрд░рд╛). Kustomize рдереЗрдЯ рдЪрд╛рд▓рд╡рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ рдХрд┐рдВрд╡рд╛, Kubernetes 1.14 рдиреБрд╕рд╛рд░, рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ kubectl -k рддреНрдпрд╛рдЪреНрдпрд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА (рдЬрд░реА Kubernetes 1.15 рдиреБрд╕рд╛рд░, рд╕реНрд╡рддрдВрддреНрд░ рдмрд╛рдпрдирд░реА рдХреБрдмреЗрдХреНрдЯрд▓рдордзреНрдпреЗ рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдХреНрд╖рдорддрд╛рдВрдкреЗрдХреНрд╖рд╛ рдирд╡реАрди рдЖрд╣реЗ). (рдиреЛрдВрдж. рдЕрдиреБрд╡рд╛рдж: рдЖрдгрд┐ рдЕрд▓реАрдХрдбреАрд▓ рд░рд┐рд▓реАрдЭ рд╕рд╣ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ 1.16 рд╕рд╛рдиреБрдХреВрд▓рд┐рдд рдХрд░рд╛ рджреНрд╡рд╛рд░реЗ рд╕рдорд░реНрдерд┐рдд kubeadm рдпреБрдЯрд┐рд▓рд┐рдЯреАрдордзреНрдпреЗ рджреЗрдЦреАрд▓.) рдпрд╛ рдкреЛрд╕реНрдЯрдордзреНрдпреЗ, рдореА рд╡рд╛рдЪрдХрд╛рдВрдирд╛ kustomize рдЪреНрдпрд╛ рдореВрд▓рднреВрдд рдЧреЛрд╖реНрдЯреАрдВрдЪрд╛ рдкрд░рд┐рдЪрдп рдХрд░реВрди рджреЗрдК рдЗрдЪреНрдЫрд┐рддреЛ.

рддреНрдпрд╛рдЪреНрдпрд╛ рд╕рд░реНрд╡рд╛рдд рд╕реЛрдкреНрдпрд╛ рдлреЙрд░реНрдо/рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рдирдордзреНрдпреЗ, kustomize рд╣рд╛ рдлрдХреНрдд рд╕рдВрд╕рд╛рдзрдирд╛рдВрдЪрд╛ рд╕рдВрдЧреНрд░рд╣ рдЖрд╣реЗ (YAML рдлрд╛рдЗрд▓реНрд╕ рдЬреНрдпрд╛ Kubernetes рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕: рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯреНрд╕, рд╕рд░реНрд╡реНрд╣рд┐рд╕реЗрд╕ рдЗ. рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛рдд) рддрд╕реЗрдЪ рддреНрдпрд╛ рд╕рдВрд╕рд╛рдзрдирд╛рдВрдордзреНрдпреЗ рдХрд░рд╛рд╡рдпрд╛рдЪреНрдпрд╛ рдмрджрд▓рд╛рдВрд╕рд╛рдареА рд╕реВрдЪрдирд╛рдВрдЪреА рд╕реВрдЪреА рдЖрд╣реЗ. рдЬреНрдпрд╛рдкреНрд░рдорд╛рдгреЗ рдореЗрдХрдордзреНрдпреЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╕реВрдЪрдирд╛ рд╕рдВрдЪрд╛рдЪрд╛ рд╡рд╛рдкрд░ рдХреЗрд▓рд╛ рдЬрд╛рддреЛ Makefile, рдЖрдгрд┐ рдбреЙрдХрд░ рдХрдбреАрд▓ рд╕реВрдЪрдирд╛рдВрд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдХрдВрдЯреЗрдирд░ рддрдпрд╛рд░ рдХрд░рддреЛ 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 рдЪреНрдпрд╛ тАЬрд╕рд╛рдзреНрдпрд╛тАЭ рд╡рд╛рдкрд░рд╛рд╡рд░реАрд▓ рдкреНрд░рдХрд▓реНрдк рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдгрд╛рддреАрд▓ рдЙрджрд╛рд╣рд░рдг

рдмрджрд▓ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реНрдпрд╛рд╕ рдЖрдЙрдЯрдкреБрдЯ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ:

kustomize build . > custom-config.yaml

рдЖрдЙрдЯрдкреБрдЯ рдбреЗрдЯрд╛ рдирд┐рд░реНрдзрд╛рд░рдХ рдЖрд╣реЗ (рд╕рдорд╛рди рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рд╕рдорд╛рди рдЖрдЙрдЯрдкреБрдЯ рдкрд░рд┐рдгрд╛рдо рджреЗрдИрд▓), рддреНрдпрд╛рдореБрд│реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдирд┐рдХрд╛рд▓ рдлрд╛рдЗрд▓рдордзреНрдпреЗ рд╕реЗрд╡реНрд╣ рдХрд░рдгреНрдпрд╛рдЪреА рдЧрд░рдЬ рдирд╛рд╣реА. рддреНрдпрд╛рдРрд╡рдЬреА, рддреЗ рдереЗрдЯ рджреБрд╕рд░реНтАНрдпрд╛ рдХрдорд╛рдВрдбрд╡рд░ рдкрд╛рд╕ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ:

kustomize build . | kubectl apply -f -

рдХрд╕реНрдЯрдорд╛рдЗрдЭ рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдВрджреНрд╡рд╛рд░реЗ рджреЗрдЦреАрд▓ рдкреНрд░рд╡реЗрд╢ рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ 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 рдХрд╕реНрдЯрдорд╛рдЗрдЭрдордзреНрдпреЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЕрд╕рд▓реЗ рдкрд╛рд╣рд┐рдЬреЗрдд рдЕрд╢реА рд╕рдВрд╕рд╛рдзрдиреЗ рдлрдХреНрдд рдШреЛрд╖рд┐рдд рдХрд░рд╛.

рдкреНрд░рддреНрдпреЗрдХ рдлрд╛рдпрд▓реАрдордзреНрдпреЗ 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 рдмрджреНрджрд▓ рдмрд░реЗрдЪ рдЪрд╛рдВрдЧрд▓реЗ рд▓реЗрдЦ рдЖрдгрд┐ рдкреНрд░рдХрд╛рд╢рдиреЗ рдЖрд╣реЗрдд. рдпреЗрдереЗ рдХрд╛рд╣реА рдЖрд╣реЗрдд рдЬреЗ рдорд▓рд╛ рд╡рд┐рд╢реЗрд╖рддрдГ рдЙрдкрдпреБрдХреНрдд рд╡рд╛рдЯрд▓реЗ:

рдиреЛрдВрдж. рдЕрдиреБрд╡рд╛рдж: рддреБрдореНрд╣реА рдкреНрд░рдХрд╛рд╢рд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рд▓рд┐рдВрдХреНрд╕рдЪреНрдпрд╛ рдмреНрд▓реЙрдХрдЪреА рд╢рд┐рдлрд╛рд░рд╕ рджреЗрдЦреАрд▓ рдХрд░реВ рд╢рдХрддрд╛ рд╕рд╛рдзрдирд╕рдВрдкрддреНрддреА рдпреБрдЯрд┐рд▓рд┐рдЯреАрдЪреНрдпрд╛ рд╡реЗрдмрд╕рд╛рдЗрдЯрд╡рд░, рддреНрдпрд╛рдирдВрддрд░ kustomize рдмрджреНрджрд▓ рдирд╡реАрдирддрдо рдЕрд╣рд╡рд╛рд▓рд╛рдВрд╕рд╣ рд╡реНрд╣рд┐рдбрд┐рдУрдВрдЪрд╛ рд╕рдВрдЧреНрд░рд╣.

рд╣реА рд╕рд╛рдордЧреНрд░реА рд╕реБрдзрд╛рд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдкрд▓реНрдпрд╛рдХрдбреЗ рдкреНрд░рд╢реНрди рдХрд┐рдВрд╡рд╛ рд╕реВрдЪрдирд╛ рдЕрд╕рд▓реНрдпрд╛рд╕, рдореА рдиреЗрд╣рдореА рдЕрднрд┐рдкреНрд░рд╛рдпрд╛рд╕рд╛рдареА рддрдпрд╛рд░ рдЖрд╣реЗ. рддреБрдореНрд╣реА рдорд╛рдЭреНрдпрд╛рд╢реА рдпреЗрдереЗ рд╕рдВрдкрд░реНрдХ рд╕рд╛рдзреВ рд╢рдХрддрд╛ Twitter рдХрд┐рдВрд╡рд╛ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рд╕реНрд▓реЕрдХ рдЪреЕрдиреЗрд▓. рдХрд╕реНрдЯрдорд╛рдЗрдЭрд╕рд╣ рддреБрдордЪреЗ рдореЕрдирд┐рдлреЗрд╕реНрдЯ рд╕реБрдзрд╛рд░рдгреНрдпрд╛рдд рдордЬрд╛ рдХрд░рд╛!

рдЕрдиреБрд╡рд╛рджрдХрд╛рдХрдбреВрди рдкреБрдирд╢реНрдЪ

рдЖрдордЪреНрдпрд╛ рдмреНрд▓реЙрдЧрд╡рд░ рджреЗрдЦреАрд▓ рд╡рд╛рдЪрд╛:

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛