ΠΡΠΈΠΌ. ΠΏΠ΅ΡΠ΅Π².: Π‘ΡΠ°ΡΡΡ Π½Π°ΠΏΠΈΡΠ°Π» Scott Lowe β ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΡΡΠ°ΠΆΠ΅ΠΌ Π² ΠΠ’, ΡΠ²Π»ΡΡΡΠΈΠΉΡΡ Π°Π²ΡΠΎΡΠΎΠΌ/ΡΠΎΠ°Π²ΡΠΎΡΠΎΠΌ ΡΠ΅ΠΌΠΈ ΠΏΠ΅ΡΠ°ΡΠ½ΡΡ
ΠΊΠ½ΠΈΠ³ (ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΠΎ VMware vSphere). Π‘Π΅ΠΉΡΠ°Ρ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² Π΅Ρ Π΄ΠΎΡΠ΅ΡΠ½Π΅ΠΉ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ VMware β Heptio (ΠΏΠΎΠ³Π»ΠΎΡΠ΅Π½Π° Π² 2016 Π³ΠΎΠ΄Ρ), ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΡ Π½Π° ΠΎΠ±Π»Π°ΡΠ½ΡΡ
Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡΡ
ΠΈ Kubernetes. Π‘Π°ΠΌ ΠΆΠ΅ ΡΠ΅ΠΊΡΡ ΡΠ»ΡΠΆΠΈΡ ΡΠΌΠΊΠΈΠΌ ΠΈ ΠΏΡΠΎΡΡΡΠΌ Π΄Π»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ Π² ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠΌΠΈ Π΄Π»Ρ Kubernetes Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ
Kustomize β ΡΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ Β«Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΠΏΡΠΎΡΡΡΠ΅ ΠΈ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΠ΅ ΠΎΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² ΡΠ°ΠΉΠ»Ρ YAML ΠΏΠΎΠ΄ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠ΅Π»ΠΈ, ΠΎΡΡΠ°Π²Π»ΡΡ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ YAML Π½Π΅ΡΡΠΎΠ½ΡΡΡΠΌ ΠΈ ΠΏΡΠΈΠ³ΠΎΠ΄Π½ΡΠΌ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡΒ» (ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΠΎΠ·Π°ΠΈΠΌΡΡΠ²ΠΎΠ²Π°Π½ΠΎ ΠΏΡΡΠΌΠΎ ΠΈΠ· kubectl -k
Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π΅Π³ΠΎ ΡΡΠ½ΠΊΡΠΈΡΠΌ (Ρ
ΠΎΡΡ ΠΏΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π½Π° Kubernetes 1.15 ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ Π±ΠΈΠ½Π°ΡΠ½ΠΈΠΊ Π½ΠΎΠ²Π΅Π΅, ΡΠ΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ Π² kubectl). (ΠΡΠΈΠΌ. ΠΏΠ΅ΡΠ΅Π².: Π Ρ Π½Π΅Π΄Π°Π²Π½ΠΈΠΌ ΡΠ΅Π»ΠΈΠ·ΠΎΠΌ
Π ΡΠ²ΠΎΠ΅ΠΉ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅ΠΉ ΡΠΎΡΠΌΠ΅/ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ kustomize β ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ Π½Π°Π±ΠΎΡ ΡΠ΅ΡΡΡΡΠΎΠ² (YAML-ΡΠ°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ Kubernetes: Deployments, Services ΠΈ Ρ.Π΄.) ΠΏΠ»ΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΠΏΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π²Π½Π΅ΡΡΠΈ Π² ΡΡΠΈ ΡΠ΅ΡΡΡΡΡ. ΠΠΎΠ΄ΠΎΠ±Π½ΠΎ ΡΠΎΠΌΡ, ΠΊΠ°ΠΊ make ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π½Π°Π±ΠΎΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉΡΡ Π² Makefile
, Π° Docker ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΠΈΠ· Dockerfile
, kustomize ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ 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
. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π΅ΡΠ»ΠΈ Π² Deployment’Π΅ Π΅ΡΡΡname
ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌnginx-deployment
, kustomize ΡΠ΄Π΅Π»Π°Π΅Ρ ΠΈΠ· Π½Π΅Π³ΠΎdev-nginx-deployment
. - ΠΠΎΠ»Π΅
namespace
ΠΏΡΠ΅Π΄ΠΏΠΈΡΡΠ²Π°Π΅Ρ kustomize’Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½ ΠΊΠΎ Π²ΡΠ΅ΠΌ ΡΠ΅ΡΡΡΡΠ°ΠΌ. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Deployment ΠΈ Service ΠΏΠΎΠΏΠ°Π΄ΡΡ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½development
. - ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΏΠΎΠ»Π΅
commonLabels
ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π°Π±ΠΎΡ Π»Π΅ΠΉΠ±Π»ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΊΠΎ Π²ΡΠ΅ΠΌ ΡΠ΅ΡΡΡΡΠ°ΠΌ. Π Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ kustomize ΠΏΡΠΈΡΠ²ΠΎΠΈΡ ΡΠ΅ΡΡΡΡΠ°ΠΌ ΠΌΠ΅ΡΠΊΡ Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌenvironment
ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌdevelopment
.
ΠΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡ kustomize build .
Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ Ρ ΡΠ°ΠΉΠ»ΠΎΠΌ kustomization.yaml
ΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠΌΠΈ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ (Ρ.Π΅. ΡΠ°ΠΉΠ»Π°ΠΌΠΈ deployment.yaml
ΠΈ service.yaml
), ΡΠΎ Π½Π° Π²ΡΡ
ΠΎΠ΄Π΅ ΠΎΠ½ ΠΏΠΎΠ»ΡΡΠΈΡ ΡΠ΅ΠΊΡΡ Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ, ΠΏΡΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΌΠΈ Π² kustomization.yaml
.
ΠΡΠΈΠΌ. ΠΏΠ΅ΡΠ΅Π².: ΠΠ»Π»ΡΡΡΡΠ°ΡΠΈΡ ΠΈΠ· Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΏΠΎ Β«ΠΏΡΠΎΡΡΠΎΠΌΡΒ» ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ kustomize
ΠΡΠ²ΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²ΠΈΡΡ, Π΅ΡΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ:
kustomize build . > custom-config.yaml
ΠΡΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π΄Π΅ΡΠ΅ΡΠΌΠΈΠ½ΠΈΡΠΎΠ²Π°Π½Ρ (ΠΏΡΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ Π΄Π°Π½Π½ΡΡ Π½Π° Π²Ρ ΠΎΠ΄Π΅ Π±ΡΠ΄ΡΡ ΠΏΠΎΠ»ΡΡΠ°ΡΡΡΡ ΠΎΠ΄Π½ΠΈ ΠΈ ΡΠ΅ ΠΆΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π½Π° Π²ΡΡ ΠΎΠ΄Π΅), ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΡΠΎΡ ΡΠ°Π½ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π² ΡΠ°ΠΉΠ». ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ°Π·Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π² Π΄ΡΡΠ³ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
kustomize build . | kubectl apply -f -
ΠΠΎΡΡΡΠΏ ΠΊ ΡΡΠ½ΠΊΡΠΈΡΠΌ kustomize ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ΅ΡΠ΅Π· kubectl -k
(Π½Π°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ 1.14 Kubernetes). ΠΠ΄Π½Π°ΠΊΠΎ ΠΈΠΌΠ΅ΠΉΡΠ΅ Π² Π²ΠΈΠ΄Ρ, ΡΡΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ kustomize Π±ΡΡΡΡΠ΅Π΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΡΡΡ, Π½Π΅ΠΆΠ΅Π»ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π² kubectl (ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ ΠΌΠ΅ΡΠ΅, ΡΠ°ΠΊ ΠΎΠ±ΡΡΠΎΡΡ Π΄Π΅Π»Π° Ρ ΡΠ΅Π»ΠΈΠ·ΠΎΠΌ Kubernetes 1.15).
Π§ΠΈΡΠ°ΡΠ΅Π»ΠΈ ΠΌΠΎΠ³ΡΡ ΡΠΏΡΠΎΡΠΈΡΡ: Β«ΠΠ°ΡΠ΅ΠΌ Π½ΡΠΆΠ½Ρ Π²ΡΠ΅ ΡΡΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ, Π΅ΡΠ»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ»Ρ Π½Π°ΠΏΡΡΠΌΡΡ?Β». ΠΡΠ»ΠΈΡΠ½ΡΠΉ Π²ΠΎΠΏΡΠΎΡ. Π Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ»Ρ deployment.yaml
ΠΈ service.yaml
Π½Π°ΠΏΡΡΠΌΡΡ, Π½ΠΎ ΡΡΠΎ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡΡΡΡ ΡΠΎΡΠΊΠΎΠΌ ΡΡΠ΅Π³ΠΎ-Π»ΠΈΠ±ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°? ΠΠ΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² Π·Π°ΡΡΡΠ΄Π½ΡΠ΅Ρ (Π΅ΡΠ»ΠΈ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ) rebase ΡΠΎΡΠΊΠ°, ΠΊΠΎΠ³Π΄Π° Π²Π½ΠΎΡΡΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΈΡΡΠΎΡΠ½ΠΈΠΊ/ΠΈΡΡ
ΠΎΠ΄Π½ΠΈΠΊ. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ kustomize ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ°ΠΉΠ»Π΅ kustomization.yaml
, ΠΎΡΡΠ°Π²ΠΈΠ² ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π½Π΅ΡΡΠΎΠ½ΡΡΡΠΌΠΈ ΠΈ, ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΎΠ±Π»Π΅Π³ΡΠ°Ρ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ rebase ΠΈΡΡ
ΠΎΠ΄Π½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ².
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° kustomize ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠΌΠΈ Π² Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΡ
ΡΠ»ΡΡΠ°ΡΡ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ kustomization.yaml
ΠΈ ΡΠ΅ΡΡΡΡΡ Π½Π°Ρ
ΠΎΠ΄ΡΡΡΡ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ kustomize ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΡΠ΅Π½Π°ΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π΅ΡΡΡ Π±Π°Π·ΠΎΠ²Π°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π΅Π΅ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ², ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ
ΠΊΠ°ΠΊ overlays. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π·Π°Ρ
ΠΎΡΠ΅Π» Π²Π·ΡΡΡ Deployment ΠΈ Service Π΄Π»Ρ nginx, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ°, ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ development-, staging- ΠΈ production-Π²Π΅ΡΡΠΈΠΈ (ΠΈΠ»ΠΈ Π²Π°ΡΠΈΠ°Π½ΡΡ) ΡΠ΅Ρ
ΡΠ°ΠΉΠ»ΠΎΠ². ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π΅ΠΌΡ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΡΡΡΡ ΡΠΏΠΎΠΌΡΠ½ΡΡΡΠ΅ Π²ΡΡΠ΅ overlays ΠΈ, ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ, ΡΠ°ΠΌΠΈ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΡΠ΅ΡΡΡΡΡ.
Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΠΈΠ»Π»ΡΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ΄Π΅Ρ overlays ΠΈ Π±Π°Π·ΠΎΠ²ΡΡ ΡΠ΅ΡΡΡΡΠΎΠ² (base resources), ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΠΈΠΌΠ΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡΡΡΠΊΡΡΡΡ:
- 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 ΡΠ³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ Π²Π°ΡΠΈΠ°Π½Ρ development. ΠΡΠ»ΠΈ ΠΆΠ΅ Π·Π°ΠΏΡΡΡΠΈΡΡ kustomize build .
Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ overlays/prod
β ΠΏΠΎΠ»ΡΡΠΈΡΡΡ Π²Π°ΡΠΈΠ°Π½Ρ production. Π Π²ΡΠ΅ ΡΡΠΎ β Π±Π΅Π· Π²Π½Π΅ΡΠ΅Π½ΠΈΡ ΠΊΠ°ΠΊΠΈΡ
-Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΡΠ΅ (base) ΡΠ°ΠΉΠ»Ρ, ΠΈ Π²ΡΠ΅ ΡΡΠΎ β Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π½ΡΠΌ ΠΈ Π΄Π΅ΡΠ΅ΡΠΌΠΈΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ. ΠΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠΌΠΈΡΠΈΡΡ Π±Π°Π·ΠΎΠ²ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΈ ΠΎΠ²Π΅ΡΠ»Π΅ΠΉΠ½ΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΠΏΡΡΠΌΠΎ Π² ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²Π΅ΡΡΠΈΡΠΌΠΈ, Π·Π½Π°Ρ, ΡΡΠΎ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡΠΈΡ
ΡΠ°ΠΉΠ»ΠΎΠ² Π² Π»ΡΠ±ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ Π½ΡΠΆΠ½ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ.
ΠΡΠΈΠΌ. ΠΏΠ΅ΡΠ΅Π².: ΠΠ»Π»ΡΡΡΡΠ°ΡΠΈΡ ΠΈΠ· Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΏΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ overlays Π² kustomize
Kustomize ΡΠΌΠ΅Π΅Ρ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ ΡΠ°ΡΡΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅. ΠΠΏΡΠΎΡΠ΅ΠΌ, Π½Π°Π΄Π΅ΡΡΡ, ΠΎΠ½Π° ΠΏΠΎΡΠ»ΡΠΆΠΈΡ Ρ ΠΎΡΠΎΡΠΈΠΌ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡΡΡ
ΠΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Ρ ΠΎΡΠΎΡΠΈΡ ΡΡΠ°ΡΠ΅ΠΉ ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΉ ΠΎ kustomize. ΠΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΠΏΠΎΡΡΠΈΡΠ°Π» ΠΎΡΠΎΠ±ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌΠΈ:
-
Change base YAML config for different environments prod/test using Kustomize ; -
Kustomize β The right way to do templating in Kubernetes ; -
Declarative Management of Kubernetes Objects Using Kustomize ; -
Customizing Upstream Helm Charts with Kustomize .
ΠΡΠΈΠΌ. ΠΏΠ΅ΡΠ΅Π².: Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΎΠ²Π΅ΡΠΎΠ²Π°ΡΡ Π±Π»ΠΎΠΊ ΡΡΡΠ»ΠΎΠΊ, ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΡΡ
ΠΊΠ°ΠΊ
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ Π²ΠΎΠΏΡΠΎΡΡ ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π°, Ρ Π²ΡΠ΅Π³Π΄Π° ΠΎΡΠΊΡΡΡ ΠΊ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠ²ΡΠ·ΠΈ. Π‘Π²ΡΠ·Π°ΡΡΡΡ ΡΠΎ ΠΌΠ½ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π²
P.S. ΠΎΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΠΈΠΊΠ°
Π§ΠΈΡΠ°ΠΉΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ Π² Π½Π°ΡΠ΅ΠΌ Π±Π»ΠΎΠ³Π΅:
- Β«
ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌΡΡ Π² Kubernetes Β»; - Β«
Kubernetes 1.14: ΠΎΠ±Π·ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π½ΠΎΠ²ΡΠ΅ΡΡΠ² Β»; - Β«
ΠΡΡΡ Π³Π»Π°Π²Π½ΡΡ ΠΈΡΠΎΠ³ΠΎΠ² Helm Summit 2019 Π² ΠΠΌΡΡΠ΅ΡΠ΄Π°ΠΌΠ΅ Β»; - Β«
ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡΡΠ²ΠΎ Ρ ΠΏΠ°ΠΊΠ΅ΡΠ½ΡΠΌ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠΌ Π΄Π»Ρ Kubernetes β Helm Β».
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com