ΠΡΠΈΠΌ. ΠΏΡΠ΅Π².: ΠΠ΄Π°ΠΏΡΠ°ΡΠΈΡ Π½Π° Kubernetes Π² GitLab ΡΠ΅ ΡΠΌΡΡΠ° Π·Π° Π΅Π΄ΠΈΠ½ ΠΎΡ Π΄Π²Π°ΡΠ° ΠΎΡΠ½ΠΎΠ²Π½ΠΈ ΡΠ°ΠΊΡΠΎΡΠ°, ΠΊΠΎΠΈΡΠΎ Π΄ΠΎΠΏΡΠΈΠ½Π°ΡΡΡ Π·Π° ΡΠ°ΡΡΠ΅ΠΆΠ° Π½Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ°. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, Π΄ΠΎ Π½Π΅ΠΎΡΠ΄Π°Π²Π½Π° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° ΠΎΠ½Π»Π°ΠΉΠ½ ΡΡΠ»ΡΠ³Π°ΡΠ° GitLab.com Π±Π΅ΡΠ΅ ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½Π° Π½Π° Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ, Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΡΠ° Ρ ΠΊΡΠΌ K8s Π·Π°ΠΏΠΎΡΠ½Π° ΠΏΡΠ΅Π΄ΠΈ ΠΎΠΊΠΎΠ»ΠΎ Π³ΠΎΠ΄ΠΈΠ½Π° ΠΈ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ Π΅ Π·Π°Π²ΡΡΡΠ΅Π½Π°. Π‘ ΡΠ°Π΄ΠΎΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠΌΠ΅ ΠΏΡΠ΅Π²ΠΎΠ΄ Π½Π° Π½Π΅ΠΎΡΠ΄Π°Π²Π½Π°ΡΠ½Π° ΡΡΠ°ΡΠΈΡ Π½Π° SRE ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠ° Π½Π° GitLab ΠΎΡΠ½ΠΎΡΠ½ΠΎ ΡΠΎΠ²Π° ΠΊΠ°ΠΊ ΡΠ΅ ΠΎΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° ΠΈ ΠΊΠ°ΠΊΠ²ΠΈ ΠΈΠ·Π²ΠΎΠ΄ΠΈ ΠΏΡΠ°Π²ΡΡ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΈΡΠ΅, ΡΡΠ°ΡΡΠ²Π°ΡΠΈ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ°.

ΠΡ ΠΎΠΊΠΎΠ»ΠΎ Π³ΠΎΠ΄ΠΈΠ½Π° Π½Π°ΡΠ΅ΡΠΎ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ½ΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π²Π° Ρ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ Π½Π° Π²ΡΠΈΡΠΊΠΈΡΠ΅ ΡΡΠ»ΡΠ³ΠΈ, ΡΠ°Π±ΠΎΡΠ΅ΡΠΈ Π½Π° GitLab.com, Π² Kubernetes. ΠΡΠ΅Π· ΡΠΎΠ²Π° Π²ΡΠ΅ΠΌΠ΅ ΡΠ΅ ΡΠ±Π»ΡΡΠΊΠ°Ρ
ΠΌΠ΅ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Π½Π΅ ΡΠ°ΠΌΠΎ Ρ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ»ΡΠ³ΠΈΡΠ΅ Π² Kubernetes, Π½ΠΎ ΠΈ Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Ρ
ΠΈΠ±ΡΠΈΠ΄Π΅Π½ deployment ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΏΡΠ΅Ρ
ΠΎΠ΄Π°. ΠΠ° ΡΠ΅Π½Π½ΠΈΡΠ΅ ΡΡΠΎΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΡ
ΠΌΠ΅, ΡΠ΅ ΡΠ΅ Π³ΠΎΠ²ΠΎΡΠΈ Π² ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ.
ΠΡ ΡΠ°ΠΌΠΎΡΠΎ Π½Π°ΡΠ°Π»ΠΎ GitLab.com Π½Π΅Π³ΠΎΠ²ΠΈΡΠ΅ ΡΡΡΠ²ΡΡΠΈ ΡΠ°Π±ΠΎΡΠ΅Ρ Π° Π² ΠΎΠ±Π»Π°ΠΊΠ° Π½Π° Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ. Π’Π΅Π·ΠΈ Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ ΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΠ²Π°Ρ ΠΎΡ Chef, Π° ΡΡΡ Π½ΠΎΡΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ ΡΡΠ°Π²Π° ΡΡΠ΅Π· Π½Π°ΡΠΈΡ . Π² ΡΠ»ΡΡΠ°ΠΉ, ΡΠ΅ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, ΡΠ΅ ΡΡΡΡΠΎΠΈ Π² ΠΏΡΠΎΡΡΠΎΡΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΡΠΊΠ° ΡΡΡΠ²ΡΡΠΈ ΠΏΠΎ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½ΠΈΡΠ°Π½ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π΅Π½ Π½Π°ΡΠΈΠ½ ΡΡΠ΅Π· CI pipeline. Π’ΠΎΠ·ΠΈ ΠΌΠ΅ΡΠΎΠ΄ β ΠΌΠ°ΠΊΠ°Ρ ΠΈ Π±Π°Π²Π΅Π½ ΠΈ ΠΌΠ°Π»ΠΊΠΎ β Π³Π°ΡΠ°Π½ΡΠΈΡΠ°, ΡΠ΅ GitLab.com ΠΏΡΠΈΠ»Π°Π³Π° ΡΡΡΠΈΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π·Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π΅, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ Π½Π° Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΠΈΡΠ΅ (self-managed) ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΠΈ Π½Π° GitLab, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π½Π°ΡΠΈΡΠ΅ Linux ΠΏΠ°ΠΊΠ΅ΡΠΈ.
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΠΎΠ·ΠΈ ΠΌΠ΅ΡΠΎΠ΄, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π΅ ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π²Π°ΠΆΠ½ΠΎ Π΄Π° ΡΡΠ΅ΡΠΈΠΌ Π²ΡΠΈΡΠΊΠΈ ΠΏΠ΅ΡΠ°Π»ΠΈ ΠΈ ΡΠ°Π΄ΠΎΡΡΠΈ, Ρ ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΡΠ±Π»ΡΡΠΊΠ²Π°Ρ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡΠ΅ ΡΠ»Π΅Π½ΠΎΠ²Π΅ Π½Π° ΠΎΠ±ΡΠ½ΠΎΡΡΡΠ°, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Ρ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Ρ ΡΠ²ΠΎΠΈΡΠ΅ ΠΊΠΎΠΏΠΈΡ Π½Π° GitLab. Π’ΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΡΠ°Π±ΠΎΡΠΈ Π΄ΠΎΠ±ΡΠ΅ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ Π²ΡΠ΅ΠΌΠ΅, Π½ΠΎ ΠΊΠΎΠ³Π°ΡΠΎ Π±ΡΠΎΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ΅ Π² GitLab Π½Π°Π΄Ρ Π²ΡΡΠ»ΠΈ 10 ΠΌΠΈΠ»ΠΈΠΎΠ½Π°, ΠΎΡΡΠ·Π½Π°Ρ ΠΌΠ΅, ΡΠ΅ ΡΠΎΠΉ Π²Π΅ΡΠ΅ Π½Π΅ ΠΎΡΠ³ΠΎΠ²Π°ΡΡ Π½Π° Π½Π°ΡΠΈΡΠ΅ Π½ΡΠΆΠ΄ΠΈ Π·Π° ΠΌΠ°ΡΠ°Π±ΠΈΡΠ°Π½Π΅ ΠΈ ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π°Π½Π΅.
ΠΡΡΠ²ΠΈ ΡΡΡΠΏΠΊΠΈ ΠΊΡΠΌ Kubernetes ΠΈ ΠΎΠ±Π»Π°ΡΠ½ΠΎ-Π½Π°ΡΠΈΠ²Π΅Π½ GitLab
ΠΡΠ΅Π· 2017 Π³. Π±Π΅ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½ ΠΏΡΠΎΠ΅ΠΊΡ Π·Π° ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ°ΡΠ° Π½Π° GitLab Π·Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π² ΠΎΠ±Π»Π°ΠΊΠ°, ΠΊΠ°ΠΊΡΠΎ ΠΈ Π·Π° Π΄Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΠΌ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Ρ GitLab Π² Kubernetes ΠΊΠ»ΡΡΡΠ΅ΡΠΈ. Π’ΠΎΠ³Π°Π²Π° Π·Π½Π°Π΅Ρ ΠΌΠ΅, ΡΠ΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° GitLab Π² Kubernetes ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π·Π° ΠΌΠ°ΡΠ°Π±ΠΈΡΠ°Π½Π΅ Π½Π° SaaS ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ°, ΡΠ΅ ΠΎΠΏΡΠΎΡΡΠΈ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½ΠΈΡΡΠ° ΠΈ ΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±ΡΠΈ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΠ° Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΡΠ½ΠΈΡΠ΅ ΡΠ΅ΡΡΡΡΠΈ. Π ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ Π½Π° Π½Π°ΡΠ΅ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΡΡ Π° ΠΎΡ ΠΌΠΎΠ½ΡΠΈΡΠ°Π½ΠΈ NFS Π΄ΡΠ»ΠΎΠ²Π΅, ΠΊΠΎΠ΅ΡΠΎ Π·Π°Π±Π°Π²ΡΡΠ΅ ΠΏΡΠ΅Ρ ΠΎΠ΄Π° ΠΎΡ Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ.
Π‘ΡΡΠ΅ΠΌΠ΅ΠΆΡΡ ΠΊΡΠΌ ΠΎΠ±Π»Π°ΡΠ½ΠΎ ΡΠΎΠ΄Π½ΠΈ ΠΈ Kubernetes ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π½Π° Π½Π°ΡΠΈΡΠ΅ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΈ Π΄Π° ΠΏΠ»Π°Π½ΠΈΡΠ°Ρ ΠΏΡΠ΅Ρ ΠΎΠ΄Π°, Π² Ρ ΠΎΠ΄Π° Π½Π° ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΎΡΠΊΠ°Π·Π°Ρ ΠΌΠ΅ ΠΎΡ Π½ΡΠΊΠΎΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΎΡ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°, ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π°ΠΉΠΊΠΈ Π΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°ΠΌΠ΅ Π½ΠΎΠ²ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΠΊΠ°ΠΊΡΠΎ Π·Π°ΠΏΠΎΡΠ½Π°Ρ ΠΌΠ΅ Π΄Π° ΠΏΠ»Π°Π½ΠΈΡΠ°ΠΌΠ΅ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΡΠ° ΠΏΡΠ΅Π· Π»ΡΡΠΎΡΠΎ Π½Π° 2019 Π³., ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ ΡΠ΅Π·ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π±ΡΡ Π° ΠΏΡΠ΅ΠΎΠ΄ΠΎΠ»Π΅Π½ΠΈ, Π° ΠΏΡΠΎΡΠ΅ΡΡΡ Π½Π° ΠΏΡΠ΅Ρ Π²ΡΡΠ»ΡΠ½Π΅ Π½Π° GitLab.com Π½Π° Kubernetes Π²Π΅ΡΠ΅ Π²ΡΡΠ²ΠΈ Ρ ΠΏΡΠ»Π½Π° ΡΠΈΠ»Π°!
ΠΡΠΎΠ±Π΅Π½ΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° GitLab.com Π² Kubernetes
ΠΠ° GitLab.com ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π΅Π΄ΠΈΠ½Π΅Π½ ΡΠ΅Π³ΠΈΠΎΠ½Π°Π»Π΅Π½ GKE ΠΊΠ»ΡΡΡΠ΅Ρ, ΠΊΠΎΠΉΡΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° ΡΠ΅Π»ΠΈΡ ΡΡΠ°ΡΠΈΠΊ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ. ΠΠ° Π΄Π° ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΠ° (Π²Π΅ΡΠ΅ ΠΌΡΠ΄ΡΠ΅Π½Π°) Π½Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΡΠ°, ΡΠ΅ ΡΠΎΠΊΡΡΠΈΡΠ°ΠΌΠ΅ Π²ΡΡΡ Ρ ΡΡΠ»ΡΠ³ΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ Π»ΠΎΠΊΠ°Π»Π½ΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° ΠΈΠ»ΠΈ NFS. GitLab.com ΠΏΡΠ΅Π΄ΠΈΠΌΠ½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠ½Π° ΠΊΠΎΠ΄ΠΎΠ²Π° Π±Π°Π·Π° Π½Π° Rails ΠΈ Π½Π°ΡΠΎΡΠ²Π°ΠΌΠ΅ ΡΡΠ°ΡΠΈΠΊΠ° Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈΡΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ½Π°ΡΠ° Π½Π°ΡΠΎΠ²Π°ΡΠ΅Π½ΠΎΡΡ ΠΊΡΠΌ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΊΡΠ°ΠΉΠ½ΠΈ ΡΠΎΡΠΊΠΈ, ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½ΠΈ Π² ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈΡΠ΅ ΡΠΈ ΠΏΡΠ»ΠΎΠ²Π΅ ΠΎΡ Π²ΡΠ·Π»ΠΈ.
Π ΡΠ»ΡΡΠ°ΠΉ Π½Π° ΡΡΠΎΠ½ΡΠ΅Π½Π΄Π° ΡΠ΅Π·ΠΈ ΡΠΈΠΏΠΎΠ²Π΅ ΡΠ΅ Π΄Π΅Π»ΡΡ Π½Π° Π·Π°ΡΠ²ΠΊΠΈ ΠΊΡΠΌ web, API, Git SSH/HTTPS ΠΈ Registry. Π ΡΠ»ΡΡΠ°ΠΉ Π½Π° Π±Π΅ΠΊΠ΅Π½Π΄Π° ΡΠ°Π·Π΄Π΅Π»ΡΠΌΠ΅ job-ΠΎΠ²Π΅ΡΠ΅ Π² ΠΎΠΏΠ°ΡΠΊΠΈΡΠ΅ ΠΏΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ , ΠΊΠΎΠΈΡΠΎ Π½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π΄Π° ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ ΡΠ΅Π»Π΅Π²ΠΈ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π·Π° Π½ΠΈΠ²ΠΎΡΠΎ Π½Π° ΠΎΠ±ΡΠ»ΡΠΆΠ²Π°Π½Π΅ (Service-Level Objectives, SLOs) Π·Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½ΠΈΡ.
ΠΡΠΈΡΠΊΠΈ ΡΠ΅Π·ΠΈ ΡΡΠ»ΡΠ³ΠΈ Π½Π° GitLab.com ΡΠ° Π½Π°ΡΡΡΠΎΠ΅Π½ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π½Π΅ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠ°Π½ Helm Π³ΡΠ°Ρ Π½Π° GitLab. ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° Π² ΡΡΠ±Π³ΡΠ°ΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΠΎ ΠΈΠ·Π±ΠΎΡ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈ, Π΄ΠΎΠΊΠ°ΡΠΎ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ ΠΏΡΠ΅Ρ Π²ΡΡΠ»ΡΠΌΠ΅ ΡΡΠ»ΡΠ³ΠΈΡΠ΅ Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ°. ΠΠΎΡΠΈ Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π΄Π° Π½Π΅ Π²ΠΊΠ»ΡΡΠ²Π°ΠΌΠ΅ Π² ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΡΠ° Π½ΡΠΊΠΎΠΈ ΠΎΡ Π½Π°ΡΠΈΡΠ΅ stateful ΡΡΠ»ΡΠ³ΠΈ, ΠΊΠ°ΡΠΎ Redis, Postgres, GitLab Pages ΠΈ Gitaly, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Kubernetes ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΡΠ°Π΄ΠΈΠΊΠ°Π»Π½ΠΎ Π΄Π° ΡΠ΅ Π½Π°ΠΌΠ°Π»ΠΈ Π±ΡΠΎΡΡ Π½Π° VM, ΡΠΏΡΠ°Π²Π»ΡΠ²Π°Π½ΠΈ ΠΎΡ Chef Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ°.
ΠΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π² Kubernetes
ΠΡΠΈΡΠΊΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΠ²Π°Ρ ΠΎΡ ΡΠ°ΠΌΠΈΡ GitLab. ΠΠ° ΡΠ΅Π»ΡΠ° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΡΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½Π° Π±Π°Π·Π° Terraform ΠΈ Helm. Π‘ΡΡΠ΅ΠΌΠΈΠΌ ΡΠ΅ Π½Π°Π²ΡΡΠΊΡΠ΄Π΅, ΠΊΡΠ΄Π΅ΡΠΎ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΠ°ΠΌΠΈΡ GitLab Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° GitLab, Π½ΠΎ Π·Π° Π΅ΠΊΡΠΏΠ»ΠΎΠ°ΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ Π·Π°Π΄Π°ΡΠΈ ΠΈΠΌΠ°ΠΌΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ°ΡΠ° ΠΎΡΠ΄Π΅Π»Π½Π° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡ Π½Π° GitLab. Π’Ρ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ°, Π·Π° Π΄Π° Π½Π΅ Π·Π°Π²ΠΈΡΠΈΠΌ ΠΎΡ Π½Π°Π»ΠΈΡΠ½ΠΎΡΡΡΠ° Π½Π° GitLab.com ΠΏΡΠΈ ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π·Π³ΡΡΡΠ°Π½ΠΈΡ ΠΈ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° GitLab.com.
ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ Π½Π°ΡΠΈΡΠ΅ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ΠΈ Π·Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Kubernetes ΡΠ°Π±ΠΎΡΡΡ Π½Π° ΠΎΡΠ΄Π΅Π»Π½Π° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡ Π½Π° GitLab, ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π²Π΅ΡΠ΅ Π½Π° ΠΊΠΎΠ΄Π° ΠΈΠΌΠ°Ρ ΠΎΠ³Π»Π΅Π΄Π°Π»Π°, ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΠΈ Π½Π° ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ Π°Π΄ΡΠ΅ΡΠΈ:
- β ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ° Π½Π° GitLab.com Π·Π° Helm-ΡΠ°ΡΡΠ° Π½Π° GitLab;
- β ΡΡΠ΄ΡΡΠΆΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π·Π° ΡΡΠ»ΡΠ³ΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΡΠ° ΡΠ²ΡΡΠ·Π°Π½ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° GitLab. Π ΡΡΡ Π²Π»ΠΈΠ·Π°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π·Π° Π²ΠΎΠ΄Π΅Π½Π΅ Π½Π° Π»ΠΎΠ³ΠΎΠ²Π΅ ΠΈ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΡΠ΅, Π° ΡΡΡΠΎ ΠΈ Π·Π° ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°Π½ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ ΠΊΠ°ΡΠΎ PlantUML;
- β ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π½Π° Terraform Π·Π° Kubernetes ΠΈ ΡΡΠ°ΡΠ° (legacy) VM-ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°. Π’ΡΠΊ ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠ²Π°Ρ Π²ΡΠΈΡΠΊΠΈ ΡΠ΅ΡΡΡΡΠΈ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠ»Π°ΡΡΠ΅Ρ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠ°ΠΌΠΈΡ ΠΊΠ»Π°ΡΡΠ΅Ρ, ΠΏΡΠ»ΠΎΠ²Π΅ Π½Π° Π²ΡΠ·Π»ΠΈ, ΡΠ»ΡΠΆΠ΅Π±Π½ΠΈ Π°ΠΊΠ°ΡΠ½ΡΠΈ, ΡΠ΅Π·Π΅ΡΠ²Π°ΡΠΈΠΈ Π½Π° IP Π°Π΄ΡΠ΅ΡΠΈ.

ΠΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π°Ρ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ, ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎ Ρ Π»ΠΈΠ½ΠΊ ΠΊΡΠΌ ΠΏΠΎΠ΄ΡΠΎΠ±Π΅Π½ diff, ΠΊΠΎΠΉΡΠΎ SRE Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ° ΠΏΡΠ΅Π΄ΠΈ Π²ΡΠ²Π΅ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ°.
ΠΠ° SRE Π»ΠΈΠ½ΠΊΡΡ Π²ΠΎΠ΄ΠΈ ΠΊΡΠΌ ΠΏΠΎΠ΄ΡΠΎΠ±Π΅Π½ diff Π² ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΡΠ° Π½Π° GitLab, ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Π΅ΠΊΡΠΏΠ»ΠΎΠ°ΡΠ°ΡΠΈΡ ΠΈ Π΄ΠΎΡΡΡΠΏΡΡ Π΄ΠΎ ΠΊΠΎΡΡΠΎ Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½. Π’ΠΎΠ²Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° ΡΠ»ΡΠΆΠΈΡΠ΅Π»ΠΈΡΠ΅ ΠΈ ΠΎΠ±ΡΠ½ΠΎΡΡΡΠ° Π±Π΅Π· Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π΅ΠΊΡΠΏΠ»ΠΎΠ°ΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡ (ΠΊΠΎΠΉΡΠΎ Π΅ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΡΠ°ΠΌΠΎ Π·Π° SRE) Π΄Π° ΠΏΡΠ΅Π³Π»Π΅ΠΆΠ΄Π°Ρ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ°. ΠΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°ΠΉΠΊΠΈ ΠΏΡΠ±Π»ΠΈΡΠ΅Π½ Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π½Π° GitLab Π·Π° ΠΊΠΎΠ΄ Ρ Π·Π°ΡΠ²ΠΎΡΠ΅Π½ Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π·Π° CI ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ΠΈ, Π·Π°ΠΏΠ°Π·Π²Π°ΠΌΠ΅ Π΅Π΄ΠΈΠ½Π΅Π½ ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΏΡΠΎΡΠ΅Ρ, Π΄ΠΎΠΊΠ°ΡΠΎ Π² ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ Π³Π°ΡΠ°Π½ΡΠΈΡΠ°ΠΌΠ΅ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ GitLab.com ΠΏΡΠΈ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈΡΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ°.
ΠΠ°ΠΊΠ²ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡ ΠΌΠ΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΡΠ°
Π ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ²Π°Π½Π΅ΡΠΎ Π±Π΅ Π½Π°ΡΡΡΠΏΠ°Π½ ΠΎΠΏΠΈΡ, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠΈΠ»Π°Π³Π°ΠΌΠ΅ Π² Π½ΠΎΠ²ΠΈ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ ΠΈ ΡΠ°Π·Π³ΡΡΡΠ°Π½ΠΈΡ Π² Kubernetes.
1. Π ΡΡΡ Π½Π° ΡΠ°Π·Ρ ΠΎΠ΄ΠΈΡΠ΅ Π·Π°ΡΠ°Π΄ΠΈ ΡΡΠ°ΡΠΈΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π·ΠΎΠ½ΠΈΡΠ΅ Π½Π° Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡ

ΠΠΆΠ΅Π΄Π½Π΅Π²Π½Π° egress ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° (Π±Π°ΠΉΡΠΎΠ²Π΅ Π½Π° Π΄Π΅Π½) Π·Π° ΠΏΠ°ΡΠΊΠ° Π½Π° Git Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°ΡΠ° Π½Π° GitLab.com
Google ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ ΡΠ²ΠΎΡΡΠ° ΠΌΡΠ΅ΠΆΠ° Π½Π° ΡΠ΅Π³ΠΈΠΎΠ½ΠΈ. Π’Π΅ ΠΎΡ ΡΠ²ΠΎΡ ΡΡΡΠ°Π½Π° ΡΠ΅ Π΄Π΅Π»ΡΡ Π½Π° Π·ΠΎΠ½ΠΈ Π½Π° Π΄ΠΎΡΡΡΠΏ (AZ). Git Ρ ΠΎΡΡΠΈΠ½Π³ΡΡ Π΅ ΡΠ²ΡΡΠ·Π°Π½ Ρ Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΎΠ±Π΅ΠΌΠΈ Π΄Π°Π½Π½ΠΈ, Π·Π°ΡΠΎΠ²Π° Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄Π° ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°ΠΌΠ΅ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈΡ egress. Π ΡΠ»ΡΡΠ°ΠΉ Π½Π° Π²ΡΡΡΠ΅ΡΠ΅Π½ ΡΡΠ°ΡΠΈΠΊ, egress Π΅ Π±Π΅Π·ΠΏΠ»Π°ΡΠ΅Π½ ΡΠ°ΠΌΠΎ Π°ΠΊΠΎ ΠΎΡΡΠ°Π²Π° Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° Π΅Π΄Π½Π° Π·ΠΎΠ½Π° Π½Π° Π΄ΠΎΡΡΡΠΏ. ΠΡΠΌ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π½Π° Π½Π°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠΌΠ΅ ΠΎΠΊΠΎΠ»ΠΎ 100 Π’Π± Π΄Π°Π½Π½ΠΈ Π² ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ ΡΠ°Π±ΠΎΡΠ΅Π½ Π΄Π΅Π½ (ΠΈ ΡΠΎΠ²Π° Π΅ ΡΠ°ΠΌΠΎ Π·Π° Git ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΠ΅). Π£ΡΠ»ΡΠ³ΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ Π² Π½Π°ΡΠ°ΡΠ° ΡΡΠ°ΡΠ° ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π° Π½Π° VM, Π±ΡΡ Π° Π½Π° Π΅Π΄Π½ΠΈ ΠΈ ΡΡΡΠΈ Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ, ΡΠ΅Π³Π° ΡΠ°Π±ΠΎΡΡΡ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ pod'ΠΎΠ²Π΅ Kubernetes. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΡΠ°ΡΡ ΠΎΡ ΡΡΠ°ΡΠΈΠΊΠ°, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠ΅Π΄ΠΈ Π±Π΅ΡΠ΅ Π»ΠΎΠΊΠ°Π»Π΅Π½ Π·Π° VM, ΠΌΠΎΠΆΠ΅ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»Π½ΠΎ Π΄Π° ΠΈΠ·Π»ΠΈΠ·Π° ΠΈΠ·Π²ΡΠ½ Π·ΠΎΠ½ΠΈΡΠ΅ Π½Π° Π΄ΠΎΡΡΡΠΏ.
Π Π΅Π³ΠΈΠΎΠ½Π°Π»Π½ΠΈΡΠ΅ ΠΊΠ»ΡΡΡΠ΅ΡΠΈ GKE ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ ΠΎΠ±Ρ Π²Π°ΡΠ°Π½Π΅ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π·ΠΎΠ½ΠΈ Π½Π° Π΄ΠΎΡΡΡΠΏ Π·Π° ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠ°Π½Π΅. Π Π°Π·Π³Π»Π΅ΠΆΠ΄Π°ΠΌΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΡΡΠ»ΡΠ³ΠΈ, ΠΊΠΎΠΈΡΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ°Ρ Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΎΠ±Π΅ΠΌΠΈ ΡΡΠ°ΡΠΈΠΊ. Π’ΠΎΠ²Π° ΡΠ΅ Π½Π°ΠΌΠ°Π»ΠΈ ΡΠ°Π·Ρ ΠΎΠ΄ΠΈΡΠ΅ Π·Π° egress, Π·Π°ΠΏΠ°Π·Π²Π°ΠΉΠΊΠΈ ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π½ΠΈΠ²ΠΎ ΠΊΠ»ΡΡΡΠ΅Ρ.
2. ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ, ΠΈΡΠΊΠ°Π½ΠΈΡ Π·Π° ΡΠ΅ΡΡΡΡΠΈ ΠΈ ΠΌΠ°ΡΠ°Π±ΠΈΡΠ°Π½Π΅

ΠΡΠΎΡΡ Π½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈΡΠ΅, ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°ΡΠΈ production ΡΡΠ°ΡΠΈΠΊΠ° Π½Π° registry.gitlab.com. Π’ΡΠ°ΡΠΈΠΊΡΡ Π΄ΠΎΡΡΠΈΠ³Π° ΡΠ²ΠΎΡ ΠΏΠΈΠΊ ΠΎΠΊΠΎΠ»ΠΎ 15:00 UTC.
ΠΠ°ΡΠ°ΡΠ° ΠΈΡΡΠΎΡΠΈΡ Ρ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΡΠ° Π·Π°ΠΏΠΎΡΠ½Π° ΠΏΡΠ΅Π· Π°Π²Π³ΡΡΡ 2019 Π³., ΠΊΠΎΠ³Π°ΡΠΎ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠΈΡ ΠΌΠ΅ ΠΏΡΡΠ²Π°ΡΠ° ΡΡΠ»ΡΠ³Π° - ΡΠ΅Π΅ΡΡΡΡ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ GitLab (GitLab Container Registry) - Π² Kubernetes. Π’Π°Π·ΠΈ ΠΊΡΠΈΡΠΈΡΠ½ΠΎ Π²Π°ΠΆΠ½Π° ΡΡΠ»ΡΠ³Π° Ρ Π²ΠΈΡΠΎΠΊ ΡΡΠ°ΡΠΈΠΊ Π±Π΅ΡΠ΅ ΠΈΠ΄Π΅Π°Π»Π½Π° Π·Π° ΠΏΡΡΠ²Π°ΡΠ° ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π° stateless ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΌΠ°Π»ΠΊΠΎ Π²ΡΠ½ΡΠ½ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ. ΠΡΡΠ²ΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Ρ ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΠ±Π»ΡΡΠΊΠ°Ρ ΠΌΠ΅, Π±Π΅ΡΠ΅ Π³ΠΎΠ»ΡΠΌΠΎΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΠ·Π³ΠΎΠ½Π΅Π½ΠΈ pod'ΠΎΠ²Π΅ ΠΏΠΎΡΠ°Π΄ΠΈ Π½Π΅Π΄ΠΎΡΡΠΈΠ³ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ Π½Π° Π²ΡΠ·Π»ΠΈΡΠ΅. ΠΠ°ΡΠ°Π΄ΠΈ ΡΠΎΠ²Π° Π½ΠΈ ΡΠ΅ Π½Π°Π»ΠΎΠΆΠΈ Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΠΌ ΠΈΡΠΊΠ°Π½ΠΈΡΡΠ° ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΡΠ°.
ΠΠ΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π΅Π½ΠΎ, ΡΠ΅ Π² ΡΠ»ΡΡΠ°ΠΉ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΠ°ΠΌΠ΅Ρ Ρ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ, Π½ΠΈΡΠΊΠΈΡΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ Π·Π° ΠΈΡΠΊΠ°Π½ΠΈΡΡΠ° (ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠ°ΡΠΈ ΠΏΠ°ΠΌΠ΅Ρ Π·Π° Π²ΡΠ΅ΠΊΠΈ pod) Π² ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ Ρ "ΡΠ΅Π΄ΡΡ" ΡΠ²ΡΡΠ΄ Π»ΠΈΠΌΠΈΡ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π²ΠΎΠ΄ΡΡ Π΄ΠΎ Π½Π°ΡΠΈΡΠ΅Π½ΠΎΡΡ (saturation) Π½Π° Π²ΡΠ·Π»ΠΈΡΠ΅ ΠΈ Π²ΠΈΡΠΎΠΊΠΎΡΠΎ Π½ΠΈΠ²ΠΎ Π½Π° ΠΈΠ·Π³ΠΎΠ½Π²Π°Π½ΠΈΡ. ΠΠ° Π΄Π° ΡΠ΅ ΡΠΏΡΠ°Π²ΠΈΠΌ Ρ ΡΠΎΠ·ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Π±Π΅ΡΠ΅ . Π’ΠΎΠ²Π° ΠΎΠ±Π»Π΅ΠΊΡΠΈ Π½Π°ΡΠΈΡΠΊΠ° Π²ΡΡΡ Ρ Π²ΡΠ·Π»ΠΈΡΠ΅ ΠΈ ΠΎΡΠΈΠ³ΡΡΠΈ ΠΆΠΈΠ·Π½Π΅Π½ ΡΠΈΠΊΡΠ» Π½Π° ΠΏΠΎΠ΄ΠΎΠ²Π΅ΡΠ΅, ΠΊΠΎΠΉΡΠΎ Π½Π΅ ΠΎΠΊΠ°Π·Π²Π°ΡΠ΅ ΠΏΡΠ΅ΠΊΠ°Π»Π΅Π½ΠΎ Π²ΠΈΡΠΎΠΊΠΎ Π½Π°Π»ΡΠ³Π°Π½Π΅ Π²ΡΡΡ Ρ Π²ΡΠ·Π΅Π»Π°. Π‘Π΅Π³Π° Π·Π°ΠΏΠΎΡΠ²Π°ΠΌΠ΅ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ Ρ ΡΠ΅Π΄ΡΠΈ (ΠΈ ΠΏΠΎΡΡΠΈ Π΅Π΄Π½Π°ΠΊΠ²ΠΈ) ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ Π½Π° Π·Π°ΡΠ²ΠΊΠΈΡΠ΅ ΠΈ Π»ΠΈΠΌΠΈΡΠΈΡΠ΅, ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°ΠΉΠΊΠΈ Π³ΠΈ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡ.
3. ΠΠ΅ΡΡΠΈΠΊΠΈ ΠΈ Π»ΠΎΠ³ΠΎΠ²Π΅

ΠΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ½ΠΎΡΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ ΡΠΎΠΊΡΡΠΈΡΠ° Π²ΡΡΡ
Ρ Π·Π°ΠΊΡΡΠ½Π΅Π½ΠΈΡΡΠ°, ΠΏΡΠΎΡΠ΅Π½ΡΠ° Π½Π° Π³ΡΠ΅ΡΠΊΠΈΡΠ΅ ΠΈ Π½Π°ΡΠΈΡΠ°Π½Π΅ΡΠΎ Ρ ΡΡΡΠ°Π½ΠΎΠ²Π΅Π½ΠΈΡΠ΅ (SLO), ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ .
ΠΡΠ΅Π· ΠΈΠ·ΠΌΠΈΠ½Π°Π»Π°ΡΠ° Π³ΠΎΠ΄ΠΈΠ½Π° Π΅Π΄Π½ΠΎ ΠΎΡ ΠΊΠ»ΡΡΠΎΠ²ΠΈΡΠ΅ ΡΡΠ±ΠΈΡΠΈΡ Π² ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ½ΠΎΡΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π±Π΅ΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π² ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΠ° Ρ SLO. SLO Π½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π° Π΄Π° Π·Π°Π΄Π°Π²Π°ΠΌΠ΅ ΡΠ΅Π»ΠΈ Π·Π° ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΡΡΠ»ΡΠ³ΠΈ, ΠΊΠΎΠΈΡΠΎ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»Π½ΠΎ Π½Π°Π±Π»ΡΠ΄Π°Π²Π°Ρ ΠΌΠ΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΡΠ°. ΠΠΎ Π΄ΠΎΡΠΈ Ρ ΡΠ°ΠΊΠΎΠ²Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΎ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΠ΅ Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²Π΅Π΄Π½Π°Π³Π° Π΄Π° ΡΠ΅ Π²ΠΈΠ΄ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΌΠ΅ΡΡΠΈΠΊΠΈ ΠΈ Π°Π»Π΅ΡΡΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΡΠΎΠΊΡΡΠΈΡΠ°ΠΌΠ΅ Π²ΡΡΡ Ρ Π·Π°ΠΊΡΡΠ½Π΅Π½ΠΈΡΡΠ° ΠΈ ΠΏΡΠΎΡΠ΅Π½ΡΠ° Π½Π° Π³ΡΠ΅ΡΠΊΠΈΡΠ΅, Π½ΠΈΠ΅ Π½Π΅ ΠΎΠ±Ρ Π²Π°ΡΠ°ΠΌΠ΅ Π½Π°ΠΏΡΠ»Π½ΠΎ Π²ΡΠΈΡΠΊΠΈ ΡΡΠ΅Π½Π°ΡΠΈΠΈ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΡΠ»ΡΠ³Π°ΡΠ°, ΠΊΠΎΡΡΠΎ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ.
Π’Π°Π·ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΡΠΈΠΊΠ° Π±Π΅ ΠΎΡΠΊΡΠΈΡΠ° ΠΏΠΎΡΡΠΈ Π²Π΅Π΄Π½Π°Π³Π° ΡΠ»Π΅Π΄ ΠΏΡΠ΅Ρ Π²ΡΡΠ»ΡΠ½Π΅ΡΠΎ Π½Π° ΡΠ°ΡΡ ΠΎΡ ΡΠ°Π±ΠΎΡΠ½ΠΈΡΠ΅ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½ΠΈΡ Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ°. ΠΡΠΎΠ±Π΅Π½ΠΎ ΠΎΡΡΡΠΎ ΡΡ ΡΠ΅ ΠΏΡΠΎΡΠ²ΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΡΠ±Π²Π°ΡΠ΅ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΡΠΈ ΠΊΠΎΠΈΡΠΎ Π±ΡΠΎΡΡ Π½Π° Π·Π°ΡΠ²ΠΊΠΈΡΠ΅ Π΅ ΠΌΠ°Π»ΡΠΊ, Π½ΠΎ Π·Π° ΠΊΠΎΠΈΡΠΎ ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ. ΠΠ΄ΠΈΠ½ ΠΎΡ ΠΊΠ»ΡΡΠΎΠ²ΠΈΡΠ΅ ΡΡΠΎΡΠΈ ΡΠ»Π΅Π΄ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΡΠ° Π±Π΅ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΠ° Π΄Π° Π²Π·Π΅ΠΌΠ΅ΠΌ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ ΠΏΡΠΈ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° Π½Π΅ ΡΠ°ΠΌΠΎ ΠΌΠ΅ΡΡΠΈΠΊΠΈΡΠ΅, Π½ΠΎ ΠΈ Π»ΠΎΠ³ΠΎΠ²Π΅ΡΠ΅ ΠΈ "Π΄ΡΠ»Π³ΠΈΡ ΠΎΠΏΠ°ΡΠΊΠ°" (ΡΡΠ°Π²Π° Π²ΡΠΏΡΠΎΡ Π·Π° Π½Π° Π³ΡΠ°ΡΠΈΠΊΠ°ΡΠ° β Π±Π΅Π». ΡΠ΅Π΄.) Π³ΡΠ΅ΡΠΊΠΈ. Π‘Π΅Π³Π° Π·Π° Π²ΡΡΠΊΠ° ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ Π²ΠΊΠ»ΡΡΠ²Π°ΠΌΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π΅Π½ ΡΠΏΠΈΡΡΠΊ Π½Π° Π·Π°ΡΠ²ΠΊΠΈΡΠ΅ Π·Π° Π»ΠΎΠ³ΠΎΠ²Π΅ΡΠ΅ (log queries) ΠΈ ΠΏΠ»Π°Π½ΠΈΡΠ°ΠΌΠ΅ ΡΡΠ½ΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠΈ Π·Π° ΠΎΡΠΊΠ°Ρ, ΠΊΠΎΠΈΡΠΎ Π² ΡΠ»ΡΡΠ°ΠΉ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΏΡΠ΅Π΄Π°Π²Π°Ρ ΠΎΡ Π΅Π΄Π½Π° ΡΠΌΡΠ½Π° Π½Π° Π΄ΡΡΠ³Π°.
ΠΠ°ΡΠ°Π»Π΅Π»Π½ΠΎΡΠΎ ΠΎΠ±ΡΠ»ΡΠΆΠ²Π°Π½Π΅ Π½Π° Π΅Π΄Π½ΠΈ ΠΈ ΡΡΡΠΈ Π·Π°ΡΠ²ΠΊΠΈ Π½Π° ΡΡΠ°ΡΠ°ΡΠ° VM ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° ΠΈ Π½ΠΎΠ²Π°ΡΠ°, Π±Π°Π·ΠΈΡΠ°Π½Π° Π½Π° Kubernetes, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π°ΡΠ΅ ΡΠ½ΠΈΠΊΠ°Π»Π½ΠΎ ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ°ΡΠ΅Π»ΡΡΠ²ΠΎ. ΠΠ° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΎΡ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΡΠ° ΡΠΈΠΏ lift-and-shift (Π±ΡΡΠ·ΠΎ ΠΏΡΠ΅Ρ Π²ΡΡΠ»ΡΠ½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ "ΠΊΠ°ΠΊΡΠΎ ΡΠ°" Π² Π½ΠΎΠ²Π°ΡΠ° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°; ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, β Π·Π°Π±Π΅Π»Π΅ΠΆΠΊΠ° Π½Π° ΠΏΡΠ΅Π²ΠΎΠ΄Π°ΡΠ°), ΠΏΠ°ΡΠ°Π»Π΅Π»Π΅Π»Π½Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ° Π½Π° βΡΡΠ°ΡΠΈβ VM ΠΈ Kubernetes ΠΈΠ·ΠΈΡΠΊΠ²Π° ΡΡΠ΅Π΄ΡΡΠ²Π°ΡΠ° Π·Π° ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Π΄Π° Π±ΡΠ΄Π°Ρ ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΈ ΠΈ Π΄Π° ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΡΠ΅Π΄ΠΈΠ½ΡΠ²Π°Ρ ΠΌΠ΅ΡΡΠΈΠΊΠΈ Π² Π΅Π΄ΠΈΠ½ Π²ΠΈΠ΄. ΠΠ°ΠΆΠ½ΠΎ Π΅, ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΡΡΠΈΡΠ΅ ΡΠ°Π±Π»Π° ΠΈ Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ ΠΊΡΠΌ Π»ΠΎΠ³ΠΎΠ²Π΅ΡΠ΅, Π·Π° Π΄Π° ΠΏΠΎΡΡΠΈΠ³Π½Π΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½Π° Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌΠΎΡΡ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΏΡΠ΅Ρ ΠΎΠ΄Π½ΠΈΡ ΠΏΠ΅ΡΠΈΠΎΠ΄.
4. ΠΡΠ΅Π½Π°ΡΠΎΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΠΊΠ° ΠΊΡΠΌ Π½ΠΎΠ²ΠΈΡ ΠΊΠ»ΡΡΡΠ΅Ρ
ΠΠ° GitLab.com ΡΠ°ΡΡ ΠΎΡ ΡΡΡΠ²ΡΡΠΈΡΠ΅ Π΅ Π·Π°Π΄Π΅Π»Π΅Π½Π° Π·Π° . ΠΠ°Π½Π°ΡΠ΅Π½ΠΈΡΡ ΠΏΠ°ΡΠΊ ΠΎΠ±ΡΠ»ΡΠΆΠ²Π° Π½Π°ΡΠΈΡΠ΅ Π²ΡΡΡΠ΅ΡΠ½ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ ΠΈ ΠΌΠΎΠΆΠ΅ ΡΡΡΠΎ ΡΠ°ΠΊΠ° . ΠΠΎ Π½Π° ΠΏΡΡΠ²ΠΎ ΠΌΡΡΡΠΎ ΡΠΎΠΉ Π΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅, Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΈ Π² ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ. ΠΡΡΠ²ΠΈΡΡ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ΅Π½ ΡΠ΅ΡΠ²ΠΈΠ· Π·Π°ΠΏΠΎΡΠ½Π° Ρ ΠΏΡΠΈΠ΅ΠΌΠ°Π½Π΅ΡΠΎ Π½Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ ΠΎΠ±Π΅ΠΌ Π²ΡΡΡΠ΅ΡΠ΅Π½ ΡΡΠ°ΡΠΈΠΊ, ΠΈ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π°ΠΌΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΠΎΠ·ΠΈ ΠΌΠ΅ΡΠΎΠ΄, Π·Π° Π΄Π° ΡΠΌΠ΅ ΡΠΈΠ³ΡΡΠ½ΠΈ Π² ΡΠΏΠ°Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° SLO ΠΏΡΠ΅Π΄ΠΈ Π΄Π° Π½Π°ΡΠΎΡΠΈΠΌ ΡΠ΅Π»ΠΈΡ ΡΡΠ°ΡΠΈΠΊ ΠΊΡΠΌ ΠΊΠ»ΡΡΡΠ΅ΡΠ°.
Π ΡΠ»ΡΡΠ°ΠΉ Π½Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ ΡΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΠΏΡΡΠ²ΠΎ Π² Kubernetes ΡΠ΅ Π½Π°ΡΠΎΡΠ²Π°Ρ Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡΡΠ° ΠΊΡΠΌ Π²ΡΡΡΠ΅ΡΠ½ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ, Π° ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ²Π°ΠΌΠ΅ ΠΎΡΡΠ°ΡΡΡΠ½ΠΈΡ ΡΡΠ°ΡΠΈΠΊ ΠΊΡΠΌ ΠΊΠ»ΡΡΡΠ΅ΡΠ°, ΠΏΡΠΎΠΌΠ΅Π½ΡΠΉΠΊΠΈ ΡΠ΅Π³Π»ΠΎΡΠΎ Π·Π° Π±Π΅ΠΊΠ΅Π½Π΄Π° ΡΡΠ΅Π· HAProxy. Π ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΠΏΡΠ΅Ρ ΠΎΠ΄Π° ΠΎΡ VM ΠΊΡΠΌ Kubernetes ΡΡΠ°Π½Π° ΡΡΠ½ΠΎ, ΡΠ΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·Π³ΠΎΠ΄Π½ΠΎ Π΄Π° ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π° Ρ Π»Π΅ΡΠ΅Π½ Π½Π°ΡΠΈΠ½ Π·Π° ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠ°ΡΠΈΡΠ΅ ΠΈ Π½ΠΎΠ²ΠΈΡΠ΅ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠΈ ΠΈ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΎ Π΄Π° ΡΠ΅ Π΄ΡΡΠΆΠΈ ΡΡΠ°ΡΠ°ΡΠ° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° Π³ΠΎΡΠΎΠ²Π° Π·Π° ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅ Π² ΠΏΡΡΠ²ΠΈΡΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π΄Π½ΠΈ ΡΠ»Π΅Π΄ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΡΠ°.
5. Π Π΅Π·Π΅ΡΠ²Π½ΠΈ ΠΊΠ°ΠΏΠ°ΡΠΈΡΠ΅ΡΠΈ Π½Π° pod-ΠΎΠ²Π΅ΡΠ΅ ΠΈ ΡΡΡ Π½ΠΎΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅
ΠΠΎΡΡΠΈ Π²Π΅Π΄Π½Π°Π³Π° Π±Π΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π΅Π½ ΡΠ»Π΅Π΄Π½ΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ: pod-ΠΎΠ²Π΅ΡΠ΅ Π·Π° ΡΡΠ»ΡΠ³Π°ΡΠ° Registry ΡΡΠ°ΡΡΠΈΡΠ°Ρ Π° Π±ΡΡΠ·ΠΎ, Π½ΠΎ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° pod-ΠΎΠ²Π΅ΡΠ΅ Π·Π° Sidekiq ΠΎΡΠ½Π΅ΠΌΠ°ΡΠ΅ Π΄ΠΎ . ΠΡΠΎΠ΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎΡΠΎ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° pod-ΠΎΠ²Π΅ΡΠ΅ Π·Π° Sidekiq ΡΡΠ°Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΠΊΠΎΠ³Π°ΡΠΎ Π·Π°ΠΏΠΎΡΠ½Π°Ρ ΠΌΠ΅ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΡΠ° Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΈΡΠ΅ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½ΠΈΡ Π½Π° worker-ΠΈΡΠ΅ Π² Kubernetes, ΠΊΠΎΠΈΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Ρ job-ΠΎΠ²Π΅ Π±ΡΡΠ·ΠΎ ΠΈ Π΄Π° ΡΠ΅ ΠΌΠ°ΡΠ°Π±ΠΈΡΠ°Ρ Π±ΡΡΠ·ΠΎ.
Π ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ ΡΡΠΎΠΊΡΡ Π±Π΅ΡΠ΅, ΡΠ΅ Π²ΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ Horizontal Pod Autoscaler (HPA) Π² Kubernetes Π΄ΠΎΠ±ΡΠ΅ ΡΠ΅ ΡΠΏΡΠ°Π²Ρ Ρ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ°ΡΠΈΠΊΠ°, Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ Π²Π·Π΅ΠΌΠ°Ρ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈΡΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΈΡΠ΅ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½ΠΈΡ ΠΈ Π΄Π° ΡΠ΅ Π·Π°Π΄Π΅Π»ΡΡ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΈ ΠΊΠ°ΠΏΠ°ΡΠΈΡΠ΅ΡΠΈ Π½Π° pod-ΠΎΠ²Π΅ΡΠ΅ (ΠΎΡΠΎΠ±Π΅Π½ΠΎ ΠΏΡΠΈ Π½Π΅ΡΠ°Π²Π½ΠΎΠΌΠ΅ΡΠ½ΠΎ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΡΡΡΠ΅Π½Π΅ΡΠΎ). Π Π½Π°ΡΠΈΡ ΡΠ»ΡΡΠ°ΠΉ ΠΈΠΌΠ°ΡΠ΅ Π²Π½Π΅Π·Π°ΠΏΠ΅Π½ ΡΡΡΡ Π½Π° job-ΠΎΠ²Π΅, ΠΊΠΎΠ΅ΡΠΎ Π²ΠΎΠ΄Π΅ΡΠ΅ Π΄ΠΎ ΡΡΡΠ΅ΠΌΠΈΡΠ΅Π»Π½ΠΎ ΠΌΠ°ΡΠ°Π±ΠΈΡΠ°Π½Π΅, ΠΊΠΎΠ΅ΡΠΎ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π½Π°ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅ΡΡΡΡΠΈΡΠ΅ Π½Π° CPU ΠΏΡΠ΅Π΄ΠΈ Π΄Π° ΡΡΠΏΠ΅Π΅ΠΌ Π΄Π° ΠΌΠ°ΡΠ°Π±ΠΈΡΠ°ΠΌΠ΅ ΠΏΡΠ»ΡΡ ΠΎΡ ΡΠ·Π»ΠΈ.
ΠΠΈΠ½Π°Π³ΠΈ ΠΈΠΌΠ° ΠΈΠ·ΠΊΡΡΠ΅Π½ΠΈΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΡΠ΅Π΄ΠΈ ΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ ΠΊΠ»ΡΡΡΠ΅ΡΠ°, Π½ΠΎ Π½ΠΈΠ΅, ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ ΡΠ΅ ΡΠ±Π»ΡΡΠΊΠ°Ρ ΠΌΠ΅ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°, ΡΠ΅Π³Π° Π·Π°ΠΏΠΎΡΠ²Π°ΠΌΠ΅ Ρ ΡΠ΅Π΄ΡΡ Π±ΡΠ΄ΠΆΠ΅Ρ Π·Π° pod ΠΈ Π³ΠΎ Π½Π°ΠΌΠ°Π»ΡΠ²Π°ΠΌΠ΅ ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ, Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»Π½ΠΎ ΡΠ»Π΅Π΄Π΅ΠΉΠΊΠΈ SLO. Π‘ΡΠ°ΡΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° pod-ΠΎΠ²Π΅ΡΠ΅ Π·Π° ΡΡΠ»ΡΠ³Π°ΡΠ° Sidekiq Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠ΅ ΡΡΠΊΠΎΡΠΈ ΠΈ ΡΠ΅Π³Π° ΡΡΠ΅Π΄Π½ΠΎ ΠΎΡΠ½Π΅ΠΌΠ° ΠΎΠΊΠΎΠ»ΠΎ 40 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ. ΠΏΠ΅ΡΠ΅Π»ΠΈ ΠΊΠ°ΠΊΡΠΎ GitLab.com, ΡΠ°ΠΊΠ° ΠΈ Π½Π°ΡΠΈΡΠ΅ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ Π½Π° self-managed ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ°Π±ΠΎΡΡΡ Ρ ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΈΡ Helm chart Π½Π° GitLab.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π‘Π»Π΅Π΄ ΠΏΡΠ΅Ρ Π²ΡΡΠ»ΡΠ½Π΅ΡΠΎ Π½Π° Π²ΡΡΠΊΠ° ΡΡΠ»ΡΠ³Π°, Π½ΠΈΠ΅ ΡΠ΅ ΡΠ°Π΄Π²Π°Ρ ΠΌΠ΅ Π½Π° ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²Π°ΡΠ° ΠΎΡ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Kubernetes Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π° ΡΡΠ΅Π΄Π°: ΠΏΠΎ-Π±ΡΡΠ·ΠΎ ΠΈ ΠΏΠΎ-ΡΠΈΠ³ΡΡΠ½ΠΎ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΌΠ°ΡΠ°Π±ΠΈΡΠ°Π½Π΅ ΠΈ ΠΏΠΎ-Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅ΡΡΡΡΠΈΡΠ΅. Π ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²Π°ΡΠ° ΠΎΡ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΡΠ° Π½Π°Π΄Ρ Π²ΡΡΠ»ΡΡ ΡΠ°ΠΌΠ°ΡΠ° ΡΡΠ»ΡΠ³Π° GitLab.com. ΠΡ Π²ΡΡΠΊΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΈΡ Helm chart ΠΏΠ΅ΡΠ΅Π»ΡΡ ΠΈ Π½Π΅Π³ΠΎΠ²ΠΈΡΠ΅ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ.
ΠΠ°Π΄ΡΠ²Π°ΠΌ ΡΠ΅, ΡΠ΅ Π²ΠΈ Ρ Π°ΡΠ΅ΡΠ° ΠΈΡΡΠΎΡΠΈΡΡΠ° Π·Π° Π½Π°ΡΠΈΡΠ΅ ΠΏΡΠΈΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Ρ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΡΠ° Π² Kubernetes. ΠΠΈΠ΅ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π°ΠΌΠ΅ Π΄Π° ΠΏΡΠ΅Ρ Π²ΡΡΠ»ΡΠΌΠ΅ Π²ΡΠ΅ Π½ΠΎΠ²ΠΈ ΡΡΠ»ΡΠ³ΠΈ Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ°. ΠΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Π² ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ:
- «»;
- «»;
- .
P.S. ΠΎΡ ΠΏΡΠ΅Π²ΠΎΠ΄Π°ΡΠ°
ΠΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΡΡΡΠΎ Π² Π½Π°ΡΠΈΡ Π±Π»ΠΎΠ³:
- «»;
- «»;
- «»;
- «».
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
