- ΠΠΈΠΏΠ»ΠΎΠΌΠ½ΡΠΉ ΠΏΡΠ°ΠΊΡΠΈΠΊΡΠΌ Π² Yandex.Cloud
- Π¦Π΅Π»ΠΈ
- ΠΡΠ°ΠΏΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ
- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±Π»Π°ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ
- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Kubernetes ΠΊΠ»Π°ΡΡΠ΅ΡΠ°
- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
- ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° cΠΈΡΡΠ΅ΠΌΡ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° CI/CD
- Π§ΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π»Ρ ΡΠ΄Π°ΡΠΈ Π·Π°Π΄Π°Π½ΠΈΡ?
- ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π·Π°Π΄Π°Π²Π°ΡΡ Π²ΠΎΠΏΡΠΎΡΡ Π΄ΠΈΠΏΠ»ΠΎΠΌΠ½ΠΎΠΌΡ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΠΈΡΠ΅Π»Ρ?
- Π Π΅ΡΠ΅Π½ΠΈΠ΅
- ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΡ ΠΎΠ±Π»Π°ΡΠ½ΡΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ Π½Π° Π±Π°Π·Π΅ ΠΎΠ±Π»Π°ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠ° Π―Π½Π΄Π΅ΠΊΡ.ΠΠ±Π»Π°ΠΊΠΎ.
- ΠΠ°ΠΏΡΡΡΠΈΡΡ ΠΈ ΡΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°ΡΡ Kubernetes ΠΊΠ»Π°ΡΡΠ΅Ρ.
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΈ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π°.
- ΠΠ°ΡΡΡΠΎΠΈΡΡ ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ±ΠΎΡΠΊΡ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Docker-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ².
- ΠΠ°ΡΡΡΠΎΠΈΡΡ CI Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
- ΠΠ°ΡΡΡΠΎΠΈΡΡ CD Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΡ ΠΎΠ±Π»Π°ΡΠ½ΡΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ Π² Π―Π ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Terraform.
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ:
- ΠΡΠ΄ΠΆΠ΅Ρ ΠΊΡΠΏΠΎΠ½Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½, ΡΡΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π² Π²ΠΈΠ΄Ρ ΠΏΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ΅ΡΡΡΡΠΎΠ²;
- Π‘Π»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΡ Π²Π΅ΡΡΠΈΡ Terraform.
ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° ΠΊ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΠΈ Π·Π°ΠΏΡΡΠΊΡ Kubernetes ΠΊΠ»Π°ΡΡΠ΅ΡΠ°.
- Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠ½ΡΠΉ Π°ΠΊΠΊΠ°ΡΠ½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Terraform Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠΎΠΉ Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΌΠΈ ΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΠΌΠΈ ΠΏΡΠ°Π²Π°ΠΌΠΈ. ΠΠ΅ ΡΡΠΎΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠ°Π²Π° ΡΡΠΏΠ΅ΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
- ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΡΡΠ΅ backend Π΄Π»Ρ Terraform:
Π°. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ: Terraform Cloud
Π±. ΠΠ»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ: S3 bucket Π² ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΌ Π―Π Π°ΠΊΠΊΠ°ΡΠ½ΡΠ΅ - ΠΠ°ΡΡΡΠΎΠΉΡΠ΅ workspaces
Π°. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ: ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π΄Π²Π° workspace: stage ΠΈ prod. Π ΡΠ»ΡΡΠ°Π΅ Π²ΡΠ±ΠΎΡΠ° ΡΡΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ° Π²ΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°Π³ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΡΠΈΡΡΠ²Π°ΡΡ ΡΠ°ΠΊΡ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ workspace.
Π±. ΠΠ»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ: ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΎΠ΄ΠΈΠ½ workspace, Π½Π°Π·Π²Π°Π² Π΅Π³ΠΎ stage. ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ workspace, ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΠΉ Terraform-ΠΎΠΌ ΠΏΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (default). - Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ VPC Ρ ΠΏΠΎΠ΄ΡΠ΅ΡΡΠΌΠΈ Π² ΡΠ°Π·Π½ΡΡ Π·ΠΎΠ½Π°Ρ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΠΈ.
- Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΡΠ΅ΠΏΠ΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
terraform destroy
ΠΈterraform apply
Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΡΡΠ½ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ. - Π ΡΠ»ΡΡΠ°Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Terraform Cloud Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ backend ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ web-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Terraform cloud.
ΠΠΆΠΈΠ΄Π°Π΅ΠΌΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ:
- Terraform ΡΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°Π½ ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ Terraform Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΡΡΠ½ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ.
- ΠΠΎΠ»ΡΡΠ΅Π½Π½Π°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ, ΠΏΠΎΡΡΠΎΠΌΡ Π² Ρ ΠΎΠ΄Π΅ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅Π³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°Π΄Π°Π½ΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ.
ΠΠ° ΡΡΠΎΠΌ ΡΡΠ°ΠΏΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Kubernetes ΠΊΠ»Π°ΡΡΠ΅Ρ Π½Π° Π±Π°Π·Π΅ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΉ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ. Π’ΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ΅ΡΡΡΡΠ°ΠΌ ΠΈΠ· ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°.
ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π΄Π²ΡΠΌΡ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ:
- Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ: ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Kubernetes ΠΊΠ»Π°ΡΡΠ΅ΡΠ°.
Π°. ΠΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Terraform ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΡ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ 3 Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΠΌΠ°ΡΠΈΠ½Ρ Compute Cloud Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Kubernetes-ΠΊΠ»Π°ΡΡΠ΅ΡΠ°. Π’ΠΈΠΏ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²ΡΠ±ΡΠ°ΡΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ Ρ ΡΡΡΡΠΎΠΌ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ ΡΡΠΎΠΈΠΌΠΎΡΡΠΈ. ΠΡΠ»ΠΈ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ ΠΏΠΎΠΉΠΌΠ΅ΡΠ΅, ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΌΠ΅Π½ΠΈΡΡ ΡΠΈΠΏ ΠΈΠ½ΡΡΠ°Π½ΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Terraform Π΄Π»Ρ Π²Π½Π΅ΡΠ΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
Π±. ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΡ ansible ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Kubespray
Π². ΠΠ°Π΄Π΅ΠΏΠ»ΠΎΠΈΡΡ Kubernetes Π½Π° ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Π½ΡΠ΅ ΡΠ°Π½Π΅Π΅ ΠΈΠ½ΡΡΠ°Π½ΡΡ, Π² ΡΠ»ΡΡΠ°Π΅ Π½Π΅Ρ Π²Π°ΡΠΊΠΈ ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ ΡΠ΅ΡΡΡΡΠΎΠ² Π²Ρ Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΠΈΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Terraform. - ΠΠ»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ: Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠΌ Yandex Managed Service forΒ Kubernetes
Π°. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ terraform resource Π΄Π»Ρ kubernetes ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ΅Π³ΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠ΅Ρ kubernetes Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π½ΠΎΠ΄ Π² ΡΠ°Π·Π½ΡΡ 3 ΠΏΠΎΠ΄ΡΠ΅ΡΡΡ Π±. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ terraform resource Π΄Π»Ρ kubernetes node group
ΠΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
- Π Π°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΡΠΉ Kubernetes ΠΊΠ»Π°ΡΡΠ΅Ρ.
- Π ΡΠ°ΠΉΠ»Π΅
~/.kube/config
Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π΄Π°Π½Π½ΡΠ΅ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΊΠ»Π°ΡΡΠ΅ΡΡ. - ΠΠΎΠΌΠ°Π½Π΄Π°
kubectl get pods --all-namespaces
ΠΎΡΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π±Π΅Π· ΠΎΡΠΈΠ±ΠΎΠΊ.
ΠΠ»Ρ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ ΡΡΠ°ΠΏΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΡ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΠΌΡΠ»ΠΈΡΡΡΡΠ΅Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΠΎΠ΅ Π²Π°ΡΠ΅ΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ.
Π‘ΠΏΠΎΡΠΎΠ± ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ:
- Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ:
Π°. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ git ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Ρ ΠΏΡΠΎΡΡΡΠΌ nginx ΠΊΠΎΠ½ΡΠΈΠ³ΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ΄Π°Π²Π°ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅.
Π±. ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΡΡΠ΅ Dockerfile Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±ΡΠ°Π·Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. - ΠΠ»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ:
Π°. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠΎΠ΄, Π³Π»Π°Π²Π½ΠΎΠ΅, ΡΡΠΎΠ±Ρ Π±ΡΠ» ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π½ Dockerfile.
ΠΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
- Git ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Ρ ΡΠ΅ΡΡΠΎΠ²ΡΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ Dockerfile.
- Π Π΅Π³ΠΈΡΡΡ Ρ ΡΠΎΠ±ΡΠ°Π½Π½ΡΠΌ docker image. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ΅Π³ΠΈΡΡΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ DockerHub ΠΈΠ»ΠΈ Yandex Container Registry, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΡΠ°ΠΊΠΆΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ terraform.
Π£ΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π³ΠΎΡΠΎΠ²Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±Π»Π°ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ ΠΈ ΠΏΠΎΠ΄Π½ΡΡΠΈΡ Kubernetes ΠΊΠ»Π°ΡΡΠ΅ΡΠ°.
Π’Π΅ΠΏΠ΅ΡΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π΄Π»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π½Π°ΡΠ΅Π³ΠΎ Kubernetes ΠΊΠ»Π°ΡΡΠ΅ΡΠ°.
Π¦Π΅Π»Ρ:
- ΠΠ°Π΄Π΅ΠΏΠ»ΠΎΠΈΡΡ Π² ΠΊΠ»Π°ΡΡΠ΅Ρ prometheus, grafana, alertmanager, ΡΠΊΡΠΏΠΎΡΡΠ΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΌΠ΅ΡΡΠΈΠΊ Kubernetes.
- ΠΠ°Π΄Π΅ΠΏΠ»ΠΎΠΈΡΡ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, nginx ΡΠ΅ΡΠ²Π΅Ρ ΠΎΡΠ΄Π°ΡΡΠΈΠΉ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ ΡΡΡΠ°Π½ΠΈΡΡ.
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ:
- ΠΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠΌ kube-prometheus, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΆΠ΅ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ Kubernetes ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π΄Π»Ρ grafana, prometheus, alertmanager ΠΈ node_exporter. ΠΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ±ΡΠ°ΡΡ Π²ΡΠ΅ ΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ.
- ΠΠ»Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ qbec, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π° jsonnet. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΈΠΌΠ΅ΡΡΠΈΠ΅ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ helm ΠΊΠΎΠ½ΡΠΈΠ³ΠΎΠ² ΠΈ helm charts
- ΠΡΠ»ΠΈ Π½Π° ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΡΠ°ΠΏΠ΅ Π²Ρ Π½Π΅ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈΡΡ Terraform Cloud, ΡΠΎ Π·Π°Π΄Π΅ΠΏΠ»ΠΎΠΉΡΠ΅ Π² ΠΊΠ»Π°ΡΡΠ΅Ρ atlantis Π΄Π»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ.
ΠΠ»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ:
- ΠΠ»Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ helm charts
ΠΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
- Git ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΌΠΈ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ Π΄Π»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Kubernetes.
- Http Π΄ΠΎΡΡΡΠΏ ΠΊ web ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ grafana.
- ΠΠ°ΡΠ±ΠΎΡΠ΄Ρ Π² grafana ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΠΈΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Kubernetes ΠΊΠ»Π°ΡΡΠ΅ΡΠ°.
- Http Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ΅ΡΡΠΎΠ²ΠΎΠΌΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΡΡΠ°Π»ΠΎΡΡ Π½Π°ΡΡΡΠΎΠΈΡΡ ci/cd ΡΠΈΡΡΠ΅ΠΌΡ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ docker image ΠΈ Π΄Π΅ΠΏΠ»ΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠ΄Π°.
Π¦Π΅Π»Ρ:
- ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ±ΠΎΡΠΊΠ° docker ΠΎΠ±ΡΠ°Π·Π° ΠΏΡΠΈ ΠΊΠΎΠΌΠΌΠΈΡΠ΅ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Ρ ΡΠ΅ΡΡΠΎΠ²ΡΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ.
- ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π΄Π΅ΠΏΠ»ΠΎΠΉ Π½ΠΎΠ²ΠΎΠ³ΠΎ docker ΠΎΠ±ΡΠ°Π·Π°.
ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ teamcity, jenkins Π»ΠΈΠ±ΠΎ gitlab ci
ΠΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
- ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ci/cd ΡΠ΅ΡΠ²ΠΈΡΠ° Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΏΠΎ http.
- ΠΡΠΈ Π»ΡΠ±ΠΎΠΌ ΠΊΠΎΠΌΠΌΠΈΡΠ΅ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅ Ρ ΡΠ΅ΡΡΠΎΠ²ΡΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠ±ΠΎΡΠΊΠ° ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠ° Π² ΡΠ΅Π³ΠΈΡΡΡ Docker ΠΎΠ±ΡΠ°Π·Π°.
- ΠΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠ΅Π³Π° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, v1.0.0) ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠ±ΠΎΡΠΊΠ° ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠ° Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ label Π² ΡΠ΅Π³ΠΈΡΡΡ, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄Π΅ΠΏΠ»ΠΎΠΉ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ Docker ΠΎΠ±ΡΠ°Π·Π° Π² ΠΊΠ»Π°ΡΡΠ΅Ρ Kubernetes.
- Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΌΠΈ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ Terraform ΠΈ Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡΡ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π²ΡΠ΅Ρ ΡΠ΅ΡΡΡΡΠΎΠ² Ρ Π½ΡΠ»Ρ.
- ΠΡΠΈΠΌΠ΅Ρ pull request Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌΠΈ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΌΠΈ atlantis'ΠΎΠΌ ΠΈΠ»ΠΈ ΡΠ½ΠΈΠΌΠΊΠΈ ΡΠΊΡΠ°Π½Π° ΠΈΠ· Terraform Cloud.
- Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ ansible, Π΅ΡΠ»ΠΈ Π±ΡΠ» Π²ΡΠ±ΡΠ°Π½ ΡΠΏΠΎΡΠΎΠ± ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Kubernetes ΠΊΠ»Π°ΡΡΠ΅ΡΠ° ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ansible.
- Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Ρ Dockerfile ΡΠ΅ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΡΡΠ»ΠΊΠ° Π½Π° ΡΠΎΠ±ΡΠ°Π½Π½ΡΠΉ docker image.
- Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ Kubernetes ΠΊΠ»Π°ΡΡΠ΅ΡΠ°.
- Π‘ΡΡΠ»ΠΊΠ° Π½Π° ΡΠ΅ΡΡΠΎΠ²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π²Π΅Π± ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Grafana Ρ Π΄Π°Π½Π½ΡΠΌΠΈ Π΄ΠΎΡΡΡΠΏΠ°.
- ΠΡΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ Ρ ΡΠ°Π½ΠΈΡΡ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΡΠ΅ΡΡΡΡΠ΅ (github, gitlab)
ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π·Π°Π΄Π°Π²Π°ΡΡ Π²ΠΎΠΏΡΠΎΡΡ Π΄ΠΈΠΏΠ»ΠΎΠΌΠ½ΠΎΠΌΡ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΠΈΡΠ΅Π»Ρ?
Π§ΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΡΠ΅ΡΠΈΡΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΠ°ΡΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ:
- ΠΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Π½Π°ΠΉΡΠΈ ΠΎΡΠ²Π΅Ρ ΡΠ½Π°ΡΠ°Π»Π° ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅ ΠΈΠ»ΠΈ Π² ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π°Ρ ΠΊΡΡΡΠ° ΠΈ ΠΠ ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΡΠΏΡΠ°ΡΠΈΠ²Π°ΡΡ Ρ Π΄ΠΈΠΏΠ»ΠΎΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΠΈΡΠ΅Π»Ρ. Π‘ΠΊΠΈΠ»Π» ΠΏΠΎΠΈΡΠΊΠ° ΠΎΡΠ²Π΅ΡΠΎΠ² ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡ Π²Π°ΠΌ Π² ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΉ Π΄Π΅ΡΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
- ΠΡΠ»ΠΈ Π²ΠΎΠΏΡΠΎΡΠΎΠ² Π±ΠΎΠ»ΡΡΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ, ΡΠΎ ΠΏΡΠΈΡΡΠ»Π°ΠΉΡΠ΅ ΠΈΡ Π² Π²ΠΈΠ΄Π΅ Π½ΡΠΌΠ΅ΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ°. Π’Π°ΠΊ Π΄ΠΈΠΏΠ»ΠΎΠΌΠ½ΠΎΠΌΡ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΠΈΡΠ΅Π»Ρ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΡΠ΅ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· Π½ΠΈΡ .
- ΠΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΠ΅ ΠΊ Π²ΠΎΠΏΡΠΎΡΡ ΡΠΊΡΠΈΠ½ΡΠΎΡΡ ΠΈ ΡΡΡΠ΅Π»ΠΎΡΠΊΠΎΠΉ ΠΏΠΎΠΊΠ°ΠΆΠΈΡΠ΅, Π³Π΄Π΅ Π½Π΅ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ.
Π§ΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°ΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌ:
- ΠΠΎΠΏΡΠΎΡΡ Π²ΠΈΠ΄Π° Β«ΠΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. ΠΠ΅ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ. ΠΡΡ ΡΠ»ΠΎΠΌΠ°Π»ΠΎΡΡΒ». ΠΠΈΠΏΠ»ΠΎΠΌΠ½ΡΠΉ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΠΈΡΠ΅Π»Ρ Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠ²Π΅ΡΠΈΡΡ Π½Π° ΡΠ°ΠΊΠΎΠΉ Π²ΠΎΠΏΡΠΎΡ Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΡΠΎΡΠ½Π΅Π½ΠΈΠΉ. Π¦Π΅Π½ΠΈΡΠ΅ ΡΠ²ΠΎΡ Π²ΡΠ΅ΠΌΡ ΠΈ Π²ΡΠ΅ΠΌΡ Π΄ΡΡΠ³ΠΈΡ .
- ΠΡΠΊΠ»Π°Π΄ΡΠ²Π°Π½ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΡΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ.
- ΠΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΡΠ²Π΅ΡΠ° Π½Π° ΡΠ²ΠΎΠΉ Π²ΠΎΠΏΡΠΎΡ. ΠΠΈΠΏΠ»ΠΎΠΌΠ½ΡΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΠΈΡΠ΅Π»ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ, ΠΊΡΠΎΠΌΠ΅ ΠΏΡΠ΅ΠΏΠΎΠ΄Π°Π²Π°Π½ΠΈΡ, ΡΠ²ΠΎΠΈΠΌΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌΠΈ. ΠΡ Π²ΡΠ΅ΠΌΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΠΎΡΡΠ°ΡΠ°ΠΉΡΠ΅ΡΡ Π·Π°Π΄Π°Π²Π°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π±ΡΡΡΡΡΠ΅ ΠΎΡΠ²Π΅ΡΡ :)
ΠΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π±ΡΠ΄ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡΡ Π½Π° Π΄ΠΎΠΌΠ°ΡΠ½Π΅ΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ Ρ ArchLinux.
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΠΌ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π΄Π»Ρ Yandex Cloud ΠΈ Gitlab:
export YC_STORAGE_ACCESS_KEY="XXXXXXXXXXXXXX-XXXXXXXXXX"
export YC_STORAGE_SECRET_KEY="XXXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
export YC_SERVICE_ACCOUNT_KEY_FILE="/home/wizard/.yckey.json"
export GITLAB_PRIVATE_TOKEN="xxxxx-XXXXXXXXXXXXXXXXXXXX"
export GITLAB_AGENT_TOKEN="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΡΠΊΠ°ΠΌΠΈ ΡΠ΅ΡΠ΅Π· web-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ YC s3 backet ΠΈ ΠΏΡΠΎΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ terraform backend:
terraform init -backend-config "access_key=$YC_STORAGE_ACCESS_KEY" -backend-config "secret_key=$YC_STORAGE_SECRET_KEY"
ΠΠ°ΠΏΠΈΡΠ΅ΠΌ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΡ Π΄Π»Ρ terraform
ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΠΌΡΡ ΠΊ app.terraform.io
ΡΠ΅ΡΠ΅Π· Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΠΉ ΠΏΡΠΎΠΊΡΠΈ, Π½Π°ΡΡΡΠΎΠΈΠΌ ΡΠ°ΠΌ Π½Π°Ρ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Ρ ΡΠ΅ΡΡΠ°ΡΠΎΡΠΌΠΎΠΌ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ ΠΊΠ°ΠΊ Π²ΡΡ ΡΠ°ΠΌΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ:
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ kubespray ΠΈ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΠΊΡΠΈΠΏΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ hosts.yaml (ΠΈΠ½Π²Π΅Π½ΡΠΎΡΠΈ Π΄Π»Ρ kubespray) ΠΈΠ· ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΠΎΠΉ terraform-ΠΎΠΌ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ.
ΠΠ°ΠΏΠΈΡΠ΅ΠΌ ΡΠΊΡΠΈΠΏΡΡ (1, 2), ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ:
- ΠΏΠΎΠ΄Π³ΠΎΡΠ°Π²Π»ΠΈΠ²Π°ΡΡ ΠΈΠ½Π²Π΅Π½ΡΠΎΡΠΈ Π΄Π»Ρ kubespray ΠΈΠ· ΡΠ°Π±Π»ΠΎΠ½Π°,
- ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ
hosts.yaml
Π² ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΈΠ½Π²Π΅Π½ΡΠΎΡΠΈ, - Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ingress-controller,
- ΠΌΠ΅Π½ΡΡΡ ΠΈΠΌΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°,
- ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΊΠ»Π°ΡΡΠ΅Ρ K8S Ρ ΠΏΠΎΠΌΠΎΡΡΡ kubespray,
- ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ
.kube/config
Ρ control plane ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ kubespray ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Ρ kubectl, - ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ
.kube/config
Ρ control plane ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ kubespray ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π² gitlab Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² pipeline Ρ qbec ΠΈ kubectl, - ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΊ ΠΊΠ»Π°ΡΡΠ΅ΡΡ K8S, ΡΠΌΠΎΡΡΠ΅ΡΡ, ΡΡΠΎ Π²ΡΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΏΠΎΠ΄Ρ Π΅ΡΡΡ,
- ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ
kube-prometheus
, - ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ
gitlab agent
Π² ΠΊΠ»Π°ΡΡΠ΅Ρ, - ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ qbec ΠΌΠ°Π½ΠΈΡΠ΅ΡΡ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠ· ΡΠ°Π±Π»ΠΎΠ½Π°,
- ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ namespace Π² K8S Ρ ΡΠ΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡΡΠΎ ΠΈ
terraform workspace
, - ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡ
qbec
Π² ΠΊΠ»Π°ΡΡΠ΅Ρ K8S Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅namespace
, - ΡΠΌΠΎΡΡΠ΅ΡΡ, ΡΡΠΎ
pod
Ρ ΡΠ΅ΡΡΠΎΠ²ΡΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π·Π°Π΄Π΅ΠΏΠ»ΠΎΠΈΠ»ΡΡ, - Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ Π² ΡΠΈΠ½Π°Π»Π΅ Π°Π΄ΡΠ΅ΡΠ° ΡΠ΅ΡΡΡΡΠΎΠ² ΠΊΠ»Π°ΡΡΠ΅ΡΠ°.
ΠΠ°ΠΏΡΡΡΠΈΠΌ ΡΡΠ°ΡΡΠΎΠ²ΡΠΉ ΡΠΊΡΠΈΠΏΡ setup_k8s.sh, Π±ΡΠ΄Π΅ΠΌ ΠΆΠ΄Π°ΡΡ ΠΈ Π»ΡΠ±ΠΎΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Π΅ΡΡΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°, ΠΊΠ»Π°ΡΡΠ΅Ρ, Π΄Π΅ΠΏΠ»ΠΎΡΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Ρ.Π΄.:
Π‘Ρ ΠΎΠ΄ΠΈΠΌ Π½Π° Yandex Cloud, ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΠΏΠΎΠ΄Π½ΡΠ²ΡΡΡΡΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ:
ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΠΌΡΡ ΠΊ ΡΠ²Π΅ΠΆΠ΅ΠΏΠΎΠ΄Π½ΡΡΠΎΠΌΡ K8S ΠΊΠ»Π°ΡΡΠ΅ΡΡ (Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΊΡΠΈΠΏΡ Π»ΡΠ±Π΅Π·Π½ΠΎ Π΄ΠΎΡΡΠ°Π» .kube/config
ΠΈ ΡΠΊΠ°Π·Π°Π» Π΅Π³ΠΎ ΠΊΠ°ΠΊ KUBECONFIG
ΡΡΠΎΠ±Ρ Ρ Π½Π°Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΠ»ΠΎ ΠΊΡΠ΄Π° Π½ΡΠΆΠ½ΠΎ) ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° Π½Π΅Π³ΠΎ:
Π£ Π½Π°Ρ Π² ΠΊΠ»Π°ΡΡΠ΅Ρ ΠΈ Π½Π°ΡΠ΅ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π΅ΠΏΠ»ΠΎΠΈΠ»ΠΎΡΡ:
Π kube-prometheus
ΡΠΆΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ:
ΠΠΎΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ Ρ Π½Π°ΡΠΈΠΌ ΡΠ΅ΡΡΠΎΠ²ΡΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ Π½Π° gitlab
ΠΎΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ pipeline
, ΡΠΎΠ±Π΅ΡΠ΅Ρ Π½ΠΎΠ²ΡΠΉ docker image
ΠΈ Π·Π°Π΄Π΅ΠΏΠ»ΠΎΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΠ»Π°ΡΡΠ΅Ρ:
Π’Π΅ΡΡΠΎΠ²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ: http://pirozhkov-aa.ru
Π Grafana
ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΡΡ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅: http://k8s.pirozhkov-aa.ru Ρ Π»ΠΎΠ³ΠΈΠ½ΠΎΠΌ: admin
ΠΈ ΠΏΠ°ΡΠΎΠ»Π΅ΠΌ: ADMIN123456!
Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ: https://gitlab.com/tabwizard/nginxn
Docker image Π΄Π»Ρ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΈ Docker image Π΄Π»Ρ Π΄Π΅ΠΏΠ»ΠΎΡ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² gitlab pipeline
Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ qbec
Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌΠΈ Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°: webtestapp
Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Terraform
Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ kubespray
ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π΄Π΅ΡΠΎΠ»ΡΠ½ΡΠΉ Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠ½Π²Π΅Π½ΡΠΎΡΠΈ Π΄Π»Ρ kubespray