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

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

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

Kustomize рдПрдЙрдЯрд╛ рдЙрдкрдХрд░рдг рд╣реЛ рдЬрд╕рд▓реЗ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓рд╛рдИ "рд╡рд┐рднрд┐рдиреНрди рдЙрджреНрджреЗрд╢реНрдпрдХрд╛ рд▓рд╛рдЧрд┐ рд╕рд░рд▓, рдЯреЗрдореНрдкреНрд▓реЗрдЯ-рд░рд╣рд┐рдд YAML рдлрд╛рдЗрд▓рд╣рд░реВ рдЕрдиреБрдХреВрд▓рди рдЧрд░реНрди, рдореВрд▓ YAML рд▓рд╛рдИ рдЕрдХреНрд╖реБрдгреНрдг рд░ рдкреНрд░рдпреЛрдЧрдпреЛрдЧреНрдп рдЫреЛрдбреЗрд░" (рд╡рд┐рд╡рд░рдг рд╕реАрдзреИ рдмрд╛рдЯ рдЙрдзрд╛рд░реЛ GitHub рдорд╛ рднрдгреНрдбрд╛рд░ рдЕрдиреБрдХреВрд▓рди рдЧрд░реНрдиреБрд╣реЛрд╕реН)ред Kustomize рд╕рд┐рдзреИ рдЪрд▓рд╛рдЙрди рд╕рдХрд┐рдиреНрдЫ рд╡рд╛, Kubernetes 1.14 рдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ kubectl -k рдпрд╕рдХреЛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкрд╣реБрдБрдЪ рдЧрд░реНрди (рдпрджреНрдпрдкрд┐ Kubernetes 1.15 рдХреЛ рд░реВрдкрдорд╛, рдЕрд▓рдЧ рдмрд╛рдЗрдирд░реА kubectl рдорд╛ рдирд┐рд░реНрдорд┐рдд рдХреНрд╖рдорддрд╛рд╣рд░реВ рднрдиреНрджрд╛ рдирдпрд╛рдБ рдЫ)ред (рдиреЛрдЯред рдЕрдиреБрд╡рд╛рджред: рд░ рднрд░реНрдЦрд░реИ рд░рд┐рд▓реАрдЬ рд╕рдВрдЧ рдХреБрдмрд░реНрдиреЗрдЯ рез.рез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 рдХреЗрд╡рд▓ 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 рдХреЛ рдмрд╛рд░реЗрдорд╛ рдзреЗрд░реИ рд░рд╛рдореНрд░реЛ рд▓реЗрдЦ рд░ рдкреНрд░рдХрд╛рд╢рдирд╣рд░реВ рдЫрдиреНред рдпрд╣рд╛рдБ рдХреЗрд╣рд┐ рдЫрдиреН рдЬреБрди рдореИрд▓реЗ рд╡рд┐рд╢реЗрд╖ рдЧрд░реА рдЙрдкрдпреЛрдЧреА рдкрд╛рдПрдБ:

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

рдпрджрд┐ рддрдкрд╛рдЗрдБрд╕рдБрдЧ рдпреЛ рд╕рд╛рдордЧреНрд░реА рд╕реБрдзрд╛рд░ рдЧрд░реНрди рдкреНрд░рд╢реНрди рд╡рд╛ рд╕реБрдЭрд╛рд╡рд╣рд░реВ рдЫрдиреН рднрдиреЗ, рдо рд╕рдзреИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЦреБрд▓рд╛ рдЫреБред рдорд╛ рд╕рдореНрдкрд░реНрдХ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ twitter рд╡рд╛ Kubernetes Slack рдЪреНрдпрд╛рдирд▓ред kustomize рдХреЛ рд╕рд╛рде рдЖрдлреНрдиреЛ manifests рдкрд░рд┐рдорд╛рд░реНрдЬрди рдЧрд░реНрди рдордЬрд╛ рд▓рд┐рдиреБрд╣реЛрд╕реН!

рдЕрдиреБрд╡рд╛рджрдХрдмрд╛рдЯ PS

рд╣рд╛рдореНрд░реЛ рдмреНрд▓рдЧрдорд╛ рдкрдирд┐ рдкрдвреНрдиреБрд╣реЛрд╕реН:

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди