ΠΠ°Π±Π΅Π»Π΅ΠΆΠΊΠ°. ΠΏΡΠ΅Π²ΠΎΠ΄: Π‘ΡΠ°ΡΠΈΡΡΠ° Π΅ Π½Π°ΠΏΠΈΡΠ°Π½Π° ΠΎΡ Π‘ΠΊΠΎΡ ΠΠΎΡ, ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ Ρ Π±ΠΎΠ³Π°Ρ ΠΎΠΏΠΈΡ Π² ΠΠ’, ΠΊΠΎΠΉΡΠΎ Π΅ Π°Π²ΡΠΎΡ/ΡΡΠ°Π²ΡΠΎΡ Π½Π° ΡΠ΅Π΄Π΅ΠΌ ΠΏΠ΅ΡΠ°ΡΠ½ΠΈ ΠΊΠ½ΠΈΠ³ΠΈ (ΠΎΡΠ½ΠΎΠ²Π½ΠΎ Π·Π° VMware vSphere). Π‘Π΅Π³Π° ΡΠΎΠΉ ΡΠ°Π±ΠΎΡΠΈ Π·Π° Π½Π΅ΠΉΠ½ΠΎΡΠΎ Π΄ΡΡΠ΅ΡΠ½ΠΎ Π΄ΡΡΠΆΠ΅ΡΡΠ²ΠΎ Π½Π° VMware Heptio (ΠΏΡΠΈΠ΄ΠΎΠ±ΠΈΡ ΠΏΡΠ΅Π· 2016 Π³.), ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΎ Π² ΠΎΠ±Π»Π°ΡΠ½ΠΈ ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΈ Kubernetes. Π‘Π°ΠΌΠΈΡΡ ΡΠ΅ΠΊΡΡ ΡΠ»ΡΠΆΠΈ ΠΊΠ°ΡΠΎ ΠΊΡΠ°ΡΠΊΠΎ ΠΈ Π»Π΅ΡΠ½ΠΎ Π·Π° ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π²ΡΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π·Π° Kubernetes Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΡ
Kustomize Π΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ Π΄Π° βΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠ°Ρ ΠΏΡΠΎΡΡΠΈ YAML ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π±Π΅Π· ΡΠ°Π±Π»ΠΎΠ½ΠΈ Π·Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠ΅Π»ΠΈ, ΠΎΡΡΠ°Π²ΡΠΉΠΊΠΈ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈΡ YAML Π½Π΅ΠΏΠΎΠΊΡΡΠ½Π°Ρ ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π΅ΠΌβ (ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΡΠΎ Π΅ Π·Π°ΠΈΠΌΡΡΠ²Π°Π½ΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΡ kubectl -k
Π·Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π½Π΅Π³ΠΎΠ²Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ (Π²ΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΠΎΡ Kubernetes 1.15 ΠΎΡΠ΄Π΅Π»Π½ΠΈΡΡ Π΄Π²ΠΎΠΈΡΠ΅Π½ ΡΠ°ΠΉΠ» Π΅ ΠΏΠΎ-Π½ΠΎΠ² ΠΎΡ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅, Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ Π² kubectl). (ΠΠ°Π±Π΅Π»Π΅ΠΆΠΊΠ°. ΠΏΡΠ΅Π²ΠΎΠ΄: Π Ρ Π½Π΅ΠΎΡΠ΄Π°Π²Π½Π°ΡΠ½ΠΎΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅
Π ΡΠ²ΠΎΡΡΠ° Π½Π°ΠΉ-ΠΏΡΠΎΡΡΠ° ΡΠΎΡΠΌΠ°/ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, kustomize Π΅ ΠΏΡΠΎΡΡΠΎ ΠΊΠΎΠ»Π΅ΠΊΡΠΈΡ ΠΎΡ ΡΠ΅ΡΡΡΡΠΈ (YAML ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Ρ ΠΎΠ±Π΅ΠΊΡΠΈ Π½Π° Kubernetes: Π²Π½Π΅Π΄ΡΡΠ²Π°Π½ΠΈΡ, ΡΡΠ»ΡΠ³ΠΈ ΠΈ Ρ.Π½.) ΠΏΠ»ΡΡ ΡΠΏΠΈΡΡΠΊ Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π·Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΈ Π² ΡΠ΅Π·ΠΈ ΡΠ΅ΡΡΡΡΠΈ. Π’ΠΎΡΠ½ΠΎ ΠΊΠ°ΠΊΡΠΎ make ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π½Π°Π±ΠΎΡΠ° ΠΎΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, ΡΡΠ΄ΡΡΠΆΠ°Ρ ΡΠ΅ Π² Makefile
, Π° Docker ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΎΡ 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
ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠ° kustomize Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΏΡΠ΅ΡΠΈΠΊΡ (Π² ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ -dev-
) Π·Π° ΠΏΡΠΈΠΏΠΈΡΠ²Π°Π½Π΅name
Π²ΡΠΈΡΠΊΠΈ ΡΠ΅ΡΡΡΡΠΈ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ Π² ΠΏΠΎΠ»Π΅ΡΠΎresources
. ΠΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½, Π°ΠΊΠΎ Deployment ΠΈΠΌΠ°name
ΡΡΡ ΡΡΠΎΠΉΠ½ΠΎΡΡnginx-deployment
, ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ ΡΠ΅ Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈdev-nginx-deployment
. - ΠΠ±Π»Π°ΡΡ
namespace
ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠ° kustomize Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈ Π΄Π°Π΄Π΅Π½ΠΎΡΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΎΡ ΠΈΠΌΠ΅Π½Π° ΠΊΡΠΌ Π²ΡΠΈΡΠΊΠΈ ΡΠ΅ΡΡΡΡΠΈ. Π ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ Deployment and 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 -
Π€ΡΠ½ΠΊΡΠΈΠΈΡΠ΅ Π·Π° ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ ΡΡΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π΄ΠΎΡΡΡΠΏΠ½ΠΈ ΡΡΠ΅Π· 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. ΠΡΠΎ Π½ΡΠΊΠΎΠ»ΠΊΠΎ, ΠΊΠΎΠΈΡΠΎ Π½Π°ΠΌΠ΅ΡΠΈΡ Π·Π° ΠΎΡΠΎΠ±Π΅Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΈ:
-
ΠΡΠΎΠΌΠ΅Π½Π΅ΡΠ΅ Π±Π°Π·ΠΎΠ²Π°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π½Π° YAML Π·Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΡΠ΅Π΄ΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡ/ΡΠ΅ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Kustomize ; -
Kustomize β ΠΡΠ°Π²ΠΈΠ»Π½ΠΈΡΡ Π½Π°ΡΠΈΠ½ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΠ°Π±Π»ΠΎΠ½ΠΈ Π² Kubernetes ; -
ΠΠ΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π½ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ Π½Π° Kubernetes Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Customize ; -
ΠΠ΅ΡΡΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Upstream Helm Charts Ρ Customize .
ΠΠ°Π±Π΅Π»Π΅ΠΆΠΊΠ°. ΠΏΡΠ΅Π²ΠΎΠ΄: ΠΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠΎ Π΄Π° ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ°ΡΠ΅ Π±Π»ΠΎΠΊ ΠΎΡ Π²ΡΡΠ·ΠΊΠΈ, ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ ΠΊΠ°ΡΠΎ
ΠΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ Π²ΡΠΏΡΠΎΡΠΈ ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ Π·Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠΎΠ·ΠΈ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π», Π²ΠΈΠ½Π°Π³ΠΈ ΡΡΠΌ ΠΎΡΠ²ΠΎΡΠ΅Π½ Π·Π° ΠΎΠ±ΡΠ°ΡΠ½Π° Π²ΡΡΠ·ΠΊΠ°. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ ΡΠ²ΡΡΠΆΠ΅ΡΠ΅ Ρ ΠΌΠ΅Π½ Π½Π°
PS ΠΎΡ ΠΏΡΠ΅Π²ΠΎΠ΄Π°ΡΠ°
ΠΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΡΡΡΠΎ Π² Π½Π°ΡΠΈΡ Π±Π»ΠΎΠ³:
- Β«
ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ°Π±ΠΎΡΠ΅ΡΠΈ Π½Π° Kubernetes Β»; - Β«
Kubernetes 1.14: ΠΠΊΡΠ΅Π½ΡΠΈ ΠΎΡ Π½ΠΎΠ²ΠΈΡΠ΅ Π½Π΅ΡΠ° Β»; - Β«
ΠΠ΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΈ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ° ΠΎΡ Helm Summit 2019 Π² ΠΠΌΡΡΠ΅ΡΠ΄Π°ΠΌ Β»; - Β«
ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎ Π²ΡΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΈΡ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡ Π·Π° Kubernetes - Helm ".
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com