Π Π§Π΅Π»ΡΠ±ΠΈΠ½ΡΠΊΠ΅ ΠΏΡΠΎΡ ΠΎΠ΄ΡΡ ΠΌΠΈΡΠ°ΠΏΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΎΠ² Sysadminka, ΠΈ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ ΠΈΠ· Π½ΠΈΡ Ρ Π΄Π΅Π»Π°Π» Π΄ΠΎΠΊΠ»Π°Π΄ ΠΎ Π½Π°ΡΠ΅ΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° 1Π‘-ΠΠΈΡΡΠΈΠΊΡ Π² Kubernetes.
ΠΠΈΡΡΠΈΠΊΡ, Kubernetes, Π‘eph β ΠΎΡΠ»ΠΈΡΠ½Π°Ρ ΡΠΌΠ΅ΡΡ?
Π Π°ΡΡΠΊΠ°ΠΆΡ, ΠΊΠ°ΠΊ ΠΌΡ ΠΈΠ· Π²ΡΠ΅Π³ΠΎ ΡΡΠΎΠ³ΠΎ ΡΠΎΠ±ΡΠ°Π»ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅.
ΠΠΎΠ΅Ρ Π°Π»ΠΈ!
ΠΠΈΡΠ°ΠΏ ΠΏΡΠΎΡΠ΅Π» 18 Π°ΠΏΡΠ΅Π»Ρ Π§Π΅Π»ΡΠ±ΠΈΠ½ΡΠΊΠ΅. ΠΡΠΎ Π½Π°ΡΠΈ ΠΌΠΈΡΠ°ΠΏΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΈΡΠ°ΡΡ Π²
ΠΡΠ»ΠΈ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΡΠΈΠΉΡΠΈ ΠΊ Π½Π°ΠΌ Ρ Π΄ΠΎΠΊΠ»Π°Π΄ΠΎΠΌ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΡΠ»ΡΡΠ°ΡΠ΅Π»Ρ β Π²Π΅Π»ΠΊΠ°ΠΌ, ΠΏΠΈΡΠΈΡΠ΅ Π½Π° [email protected] ΠΈ Π² Π’Π΅Π»Π΅Π³ΡΠ°ΠΌ t.me/vadimisakanov.
ΠΠΎΠΉ Π΄ΠΎΠΊΠ»Π°Π΄
Π Π΅ΡΠ΅Π½ΠΈΠ΅ Β«ΠΠΈΡΡΠΈΠΊΡ Π² Kubernetes, Π²Π΅ΡΡΠΈΡ Southbridge 1.0Β»
Π― ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΠΎ Π½Π°ΡΠ΅ΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠΈ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ Β«Π΄Π»Ρ ΡΠ°ΠΉΠ½ΠΈΠΊΠΎΠ² Π² KubernetesΒ», ΠΊΠ°ΠΊ ΡΡΠΎ Π±ΡΠ»ΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ Π½Π° ΠΌΠΈΡΠ°ΠΏΠ΅. ΠΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ ΡΠ»ΠΎΠ²Π° ΠΠΈΡΡΠΈΠΊΡ, Docker, Kubernetes, Ceph Π²Π°ΠΌ ΠΈΠ·Π²Π΅ΡΡΠ½Ρ Ρ ΠΎΡΡ Π±Ρ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΡΡΠ°ΡΠ΅ΠΉ Π² ΠΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ.
Π§ΡΠΎ Π²ΠΎΠΎΠ±ΡΠ΅ Π΅ΡΡΡ Π³ΠΎΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎ ΠΠΈΡΡΠΈΠΊΡ Π² Kubernetes?
ΠΠΎ Π²ΡΠ΅ΠΌ ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅ ΠΎΡΠ΅Π½Ρ ΠΌΠ°Π»ΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠ°Π±ΠΎΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΠΠΈΡΡΠΈΠΊΡ Π² Kubernetes.
Π― Π½Π°ΡΠ΅Π» ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΊΠΈΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ:
ΠΠΎΠΊΠ»Π°Π΄ ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡΠ° Π‘Π΅ΡΠ±ΡΠ»Π°, 1Π‘-ΠΠΈΡΡΠΈΠΊΡ, ΠΈ ΠΠ½ΡΠΎΠ½Π° Π’ΡΠ·Π»ΡΠΊΠΎΠ²Π° ΠΈΠ· Qsoft:
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΠΏΠΎΡΠ»ΡΡΠ°ΡΡ Π΅Π³ΠΎ.
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
ΠΠ°ΡΠ΅Π» Π΅ΡΠ΅
ΠΠΈΠΈΠΈβ¦ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ, Π²ΡΠ΅.
ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π°Ρ, ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π±ΠΎΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ°ΠΌ Π²ΡΡΠ΅ ΠΌΡ Π½Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ»ΠΈ π
ΠΡΡΠ°ΡΠΈ, ΠΏΡΠΈ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ΅ Π½Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ Ρ ΠΎΠ±ΡΠ°Π»ΡΡ Ρ ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡΠΎΠΌ Π‘Π΅ΡΠ±ΡΠ»ΠΎΠΌ, ΡΠΎΠ³Π΄Π° Π΅Π³ΠΎ Π΄ΠΎΠΊΠ»Π°Π΄Π° Π΅ΡΠ΅ Π½Π΅ Π±ΡΠ»ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ Π² ΠΌΠΎΠΈΡ
ΡΠ»Π°ΠΉΠ΄Π°Ρ
Π΅ΡΡΡ ΠΏΡΠ½ΠΊΡ Β«ΠΠΈΡΡΠΈΠΊΡ Π½Π΅ ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ KubernetesΒ».
ΠΠΎ Π·Π°ΡΠΎ Π³ΠΎΡΠΎΠ²ΡΡ
Docker ΠΎΠ±ΡΠ°Π·ΠΎΠ² Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΠΠΈΡΡΠΈΠΊΡ Π² Docker ΡΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ:
ΠΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π»ΠΈ ΡΡΠΎΠ³ΠΎ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΠΈΡΡΠΈΠΊΡ Π² Kubernetes?
ΠΠ΅Ρ. ΠΡΡΡ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠΆΠ½ΠΎ ΡΠ΅ΡΠΈΡΡ.
Π ΡΠ΅ΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΠΈΡΡΠΈΠΊΡ Π² Kubernetes?
ΠΠ΅ΡΠ²Π°Ρ β Π³ΠΎΡΠΎΠ²ΡΠ΅ ΠΎΠ±ΡΠ°Π·Ρ ΠΈΠ· Dockerhub Π½Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π΄Π»Ρ Kubernetes
ΠΡΠ»ΠΈ ΠΌΡ Ρ
ΠΎΡΠΈΠΌ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½ΡΡ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΡ (Π° Π² Kubernetes ΠΌΡ ΠΎΠ±ΡΡΠ½ΠΎ Ρ
ΠΎΡΠΈΠΌ), ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Kubernetes Π½ΡΠΆΠ½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΡΡΡ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΠΈ Π΄ΠΎΠ±ΠΈΠ²Π°ΡΡΡΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ» ΠΎΠ΄Π½Ρ ΠΌΠ°Π»Π΅Π½ΡΠΊΡΡ ΡΡΠ½ΠΊΡΠΈΡ (ΠΈ Π΄Π΅Π»Π°Π» ΡΡΠΎ Ρ
ΠΎΡΠΎΡΠΎ). ΠΠΎΡΠ΅ΠΌΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Ρ? ΠΡΠ»ΠΈ ΠΊΡΠ°ΡΠΊΠΎ β ΡΠ΅ΠΌ ΠΏΡΠΎΡΠ΅, ΡΠ΅ΠΌ Π½Π°Π΄Π΅ΠΆΠ½Π΅Π΅.
ΠΡΠ»ΠΈ ΠΏΠΎΠ΄Π»ΠΈΠ½Π½Π΅Π΅ β- ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ ΡΡΡ ΡΡΠ°ΡΡΡ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°:
Docker ΠΎΠ±ΡΠ°Π·Ρ Π² Dockerhub Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΏΠΎΡΡΡΠΎΠ΅Π½Ρ ΠΏΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ Β«Π²ΡΠ΅ Π² ΠΎΠ΄Π½ΠΎΠΌΒ», ΠΏΠΎΡΡΠΎΠΌΡ Π½Π°ΠΌ ΠΏΡΠΈΡΠ»ΠΎΡΡ Π²ΡΠ΅-ΡΠ°ΠΊΠΈ Π΄Π΅Π»Π°ΡΡ ΡΠ²ΠΎΠΉ Π²Π΅Π»ΠΎΡΠΈΠΏΠ΅Π΄ ΠΈ Π΄Π°ΠΆΠ΅ ΠΎΠ±ΡΠ°Π·Ρ Π΄Π΅Π»Π°ΡΡ Ρ Π½ΡΠ»Ρ.
ΠΡΠΎΡΠ°Ρ β ΠΊΠΎΠ΄ ΡΠ°ΠΉΡΠ° ΠΏΡΠ°Π²ΠΈΡΡΡ ΠΈΠ· Π°Π΄ΠΌΠΈΠ½-ΠΏΠ°Π½Π΅Π»ΠΈ
Π‘ΠΎΠ·Π΄Π°Π»ΠΈ Π½ΠΎΠ²ΡΠΉ ΡΠ°Π·Π΄Π΅Π» Π½Π° ΡΠ°ΠΉΡΠ΅ β ΠΎΠ±Π½ΠΎΠ²ΠΈΠ»ΡΡ ΠΊΠΎΠ΄ (Π΄ΠΎΠ±Π°Π²ΠΈΠ»Π°ΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π°).
ΠΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΈΠ· Π°Π΄ΠΌΠΈΠ½-ΠΏΠ°Π½Π΅Π»ΠΈ β ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΡΡ ΠΊΠΎΠ΄.
Kubernetes Β«ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡΒ» Ρ ΡΠ°ΠΊΠΈΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π΅ ΡΠΌΠ΅Π΅Ρ, ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΌΠΈ (Stateless).
ΠΡΠΈΡΠΈΠ½Π°: ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ (ΠΏΠΎΠ΄) Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΡΡ ΡΡΠ°ΡΠΈΠΊΠ°. ΠΡΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΊΠΎΠ΄ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅ (ΠΏΠΎΠ΄Π΅), ΡΠΎ Π² ΡΠ°Π·Π½ΡΡ ΠΏΠΎΠ΄Π°Ρ ΠΊΠΎΠ΄ Π±ΡΠ΄Π΅Ρ ΡΠ°Π·Π½ΡΠΌ, ΡΠ°ΠΉΡ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ, ΡΠ°Π·Π½ΡΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ Π±ΡΠ΄ΡΡ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ ΡΠ°Π·Π½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΡΠ°ΠΉΡΠ°. Π’Π°ΠΊ ΠΆΠΈΡΡ Π½Π΅Π»ΡΠ·Ρ.
Π’ΡΠ΅ΡΡΡ β Π½ΡΠΆΠ½ΠΎ ΡΠ΅ΡΠ°ΡΡ Π²ΠΎΠΏΡΠΎΡ Ρ Π΄Π΅ΠΏΠ»ΠΎΠ΅ΠΌ
ΠΡΠ»ΠΈ Ρ Π½Π°Ρ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ ΠΈ ΠΎΠ΄ΠΈΠ½ Β«ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉΒ» ΡΠ΅ΡΠ²Π΅Ρ, Π²ΡΠ΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎ: ΡΠ°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ Π½ΠΎΠ²ΡΡ ΠΊΠΎΠ΄ΠΎΠ²ΡΡ Π±Π°Π·Ρ, ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΠΌ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ ΠΠ, ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°Π΅ΠΌ ΡΡΠ°ΡΠΈΠΊ Π½Π° Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡ ΠΊΠΎΠ΄Π°. ΠΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ.
ΠΡΠ»ΠΈ Ρ Π½Π°Ρ ΡΠ°ΠΉΡ Π² Kubernetes, ΡΠ°ΡΠΏΠΈΠ»Π΅Π½ Π½Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡ, ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² Ρ ΠΊΠΎΠ΄ΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ β ΠΎΠΉ. ΠΡΠΆΠ½ΠΎ ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ Ρ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ ΠΊΠΎΠ΄Π°, Π²ΡΠΊΠ°ΡΡΠ²Π°ΡΡ ΠΈΡ
Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠ°ΡΡΡ
, ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ ΠΠ, ΠΈ Π² ΠΈΠ΄Π΅Π°Π»Π΅ Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ Π½Π΅Π·Π°ΠΌΠ΅ΡΠ½ΠΎ Π΄Π»Ρ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»Π΅ΠΉ. ΠΠ»Π°Π³ΠΎ, Π² ΡΡΠΎΠΌ Kubernetes Π½Π°ΠΌ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Ρ ΡΠ΅Π»ΡΡ ΡΡΡΡ ΡΠ°Π·Π½ΡΡ
Π²ΠΈΠ΄ΠΎΠ² Π΄Π΅ΠΏΠ»ΠΎΡ.
Π§Π΅ΡΠ²Π΅ΡΡΠ°Ρ β Π½ΡΠΆΠ½ΠΎ ΡΠ΅ΡΠ°ΡΡ Π²ΠΎΠΏΡΠΎΡ Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ΠΌ ΡΡΠ°ΡΠΈΠΊΠΈ
ΠΡΠ»ΠΈ Π²Π°Ρ ΡΠ°ΠΉΡ Π²Π΅ΡΠΈΡ Β«Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡΒ» 10 Π³ΠΈΠ³Π°Π±Π°ΠΉΡ ΠΈ Π²Ρ ΡΠ°Π·Π²Π΅ΡΠ½Π΅ΡΠ΅ Π΅Π³ΠΎ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°Ρ
, Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ Π²Π΅ΡΠΎΠΌ Π² 10 Π³ΠΈΠ³Π°Π±Π°ΠΉΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ Π΄Π΅ΠΏΠ»ΠΎΠΈΡΡΡΡ Π²Π΅ΡΠ½ΠΎΡΡΡ.
ΠΡΠΆΠ½ΠΎ Ρ
ΡΠ°Π½ΠΈΡΡ ΡΠ°ΠΌΡΠ΅ Β«ΡΡΠΆΠ΅Π»ΡΠ΅Β» ΡΠ°ΡΡΠΈ ΡΠ°ΠΉΡΠ° Π²Π½Π΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ², ΠΈ Π²ΡΡΠ°Π΅Ρ Π²ΠΎΠΏΡΠΎΡ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ
Π§Π΅Π³ΠΎ Π½Π΅Ρ Π² Π½Π°ΡΠ΅ΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠΈ
Π‘ΠΎΠ²ΡΠ΅ΠΌ Π²Π΅ΡΡ ΠΊΠΎΠ΄ ΠΠΈΡΡΠΈΠΊΡ Π½Π° ΠΌΠΈΠΊΡΠΎΡΡΠ½ΠΊΡΠΈΠΈ/ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡ Π½Π΅ ΡΠ°Π·ΡΠ΅Π·Π°Π½ (ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ, ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ, ΠΈ Ρ.ΠΏ.). ΠΡΡ ΠΊΠΎΠ΄ΠΎΠ²ΡΡ Π±Π°Π·Ρ ΠΌΡ Ρ ΡΠ°Π½ΠΈΠΌ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ.
ΠΠ°Π·Ρ Π² Kubernetes ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ Ρ ΡΠ°Π½ΠΈΠΌ (Ρ Π²ΡΠ΅ ΠΆΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°Π» ΡΠ΅ΡΠ΅Π½ΠΈΡ Ρ Π±Π°Π·ΠΎΠΉ Π² Kubernetes Π΄Π»Ρ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², Π½ΠΎ Π½Π΅ Π΄Π»Ρ ΠΏΡΠΎΠ΄Π°ΠΊΡΠ½).
ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°ΠΌ ΡΠ°ΠΉΡΠ° Π²ΡΠ΅-ΡΠ°ΠΊΠΈ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΌΠ΅ΡΠ½ΠΎ, ΡΡΠΎ ΡΠ°ΠΉΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² Kubernetes. Π€ΡΠ½ΠΊΡΠΈΡ Β«ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΈΡΡΠ΅ΠΌΡΒ» ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ, Π΄Π»Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΡΠ°ΠΉΡΠ° ΠΈΠ· Π°Π΄ΠΌΠΈΠ½-ΠΏΠ°Π½Π΅Π»ΠΈ Π½ΡΠΆΠ½ΠΎ ΡΠ½Π°ΡΠ°Π»Π° Π½Π°ΠΆΠΈΠΌΠ°ΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ Β«Ρ ΠΎΡΡ ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄Β».
Π‘ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ»ΠΈΡΡ, Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΡΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ»ΠΈΡΡ, ΡΠ΅Π»Ρ ΡΡΠ½Π° β ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΠΠΈΡΡΠΈΠΊΡ Π² Kubernetes, ΡΠΎΡ ΡΠ°Π½ΠΈΠ² ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΠΈΡΡΠΈΠΊΡ, ΠΈ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° Kubernetes. ΠΠ°ΡΠΈΠ½Π°Π΅ΠΌ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ.
ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°
ΠΠ½ΠΎΠ³ΠΎ Β«ΡΠ°Π±ΠΎΡΠΈΡ
Β» ΠΏΠΎΠ΄ΠΎΠ² Ρ Π²Π΅Π±ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ (worker’Ρ).
ΠΠ΄ΠΈΠ½ ΠΏΠΎΠ΄ Ρ ΠΊΡΠΎΠ½-ΡΠ°ΡΠΊΠ°ΠΌΠΈ (ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½).
ΠΠ΄ΠΈΠ½ upgrade ΠΏΠΎΠ΄ Π΄Π»Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΡΠ°ΠΉΡΠ° ΠΈΠ· Π°Π΄ΠΌΠΈΠ½-ΠΏΠ°Π½Π΅Π»ΠΈ (ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½).
Π Π΅ΡΠ°Π΅ΠΌ Π²ΠΎΠΏΡΠΎΡΡ:
- ΠΠ΄Π΅ Ρ ΡΠ°Π½ΠΈΡΡ ΡΠ΅ΡΡΠΈΠΈ?
- ΠΠ΄Π΅ Ρ ΡΠ°Π½ΠΈΡΡ ΠΊΡΡ?
- ΠΠ΄Π΅ Ρ ΡΠ°Π½ΠΈΡΡ ΡΡΠ°ΡΠΈΠΊΡ, Π½Π΅ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡ ΠΆΠ΅ Π³ΠΈΠ³Π°Π±Π°ΠΉΡΡ ΡΡΠ°ΡΠΈΠΊΠΈ Π² ΠΊΡΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ²?
- ΠΠ°ΠΊ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ ?
Docker ΠΎΠ±ΡΠ°Π·
ΠΠ°ΡΠΈΠ½Π°Π΅ΠΌ ΡΠΎ ΡΠ±ΠΎΡΠΊΠΈ Docker ΠΎΠ±ΡΠ°Π·Π°.
ΠΠ΄Π΅Π°Π»ΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ β Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΠ½ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ°Π·, Π½Π° Π΅Π³ΠΎ ΠΎΡΠ½ΠΎΠ²Π΅ ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΈ worker-ΠΏΠΎΠ΄Ρ, ΠΈ ΠΏΠΎΠ΄Ρ Ρ ΠΊΡΠΎΠ½ΡΠ°ΡΠΊΠ°ΠΌΠΈ, ΠΈ upgrade ΠΏΠΎΠ΄Ρ.
Π Π½Π΅Π³ΠΎ Π²ΠΊΠ»ΡΡΠ΅Π½ nginx, apache/php-fpm (ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ±ΡΠ°ΡΡ ΠΏΡΠΈ ΡΠ±ΠΎΡΠΊΠ΅), msmtp Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΏΠΎΡΡΡ, ΠΈ cron.
ΠΡΠΈ ΡΠ±ΠΎΡΠΊΠ΅ ΠΎΠ±ΡΠ°Π·Π° Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ /app ΠΊΠΎΠΏΠΈΡΡΠ΅ΡΡΡ ΠΏΠΎΠ»Π½Π°Ρ ΠΊΠΎΠ΄ΠΎΠ²Π°Ρ Π±Π°Π·Π° ΡΠ°ΠΉΡΠ° (Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ΅Ρ ΡΠ°ΡΡΠ΅ΠΉ, ΡΡΠΎ ΠΌΡ Π²ΡΠ½Π΅ΡΠ΅ΠΌ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ shared storage).
ΠΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΡΡΡ, ΡΠ΅ΡΠ²ΠΈΡΡ
worker ΠΏΠΎΠ΄Ρ:
- ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Ρ nginx + ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ apache/php-fpm + msmtp
- msmtp Π²ΡΠ½Π΅ΡΡΠΈ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ Π½Π΅ Π²ΡΡΠ»ΠΎ, ΠΠΈΡΡΠΈΠΊΡ Π½Π°ΡΠΈΠ½Π°Π΅Ρ Π²ΠΎΠ·ΠΌΡΡΠ°ΡΡΡΡ, ΡΡΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΠΏΡΡΠΌΡΡ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΠΏΠΎΡΡΡ
- Π ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅ ΠΏΠΎΠ»Π½Π°Ρ ΠΊΠΎΠ΄ΠΎΠ²Π°Ρ Π±Π°Π·Π°.
- ΠΠ°ΠΏΡΠ΅Ρ Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°Ρ .
cron ΠΏΠΎΠ΄:
- ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Ρ apache, php, cron
- Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ΅ ΠΏΠΎΠ»Π½Π°Ρ ΠΊΠΎΠ΄ΠΎΠ²Π°Ρ Π±Π°Π·Π°
- Π·Π°ΠΏΡΠ΅Ρ Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°Ρ
upgrade ΠΏΠΎΠ΄:
- ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Ρ nginx + ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ apache/php-fpm + msmtp
- Π·Π°ΠΏΡΠ΅ΡΠ° Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°Ρ Π½Π΅Ρ
Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΡΠ΅ΡΡΠΈΠΉ
Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΊΡΡΠ° ΠΠΈΡΡΠΈΠΊΡ
ΠΡΠ΅ Π²Π°ΠΆΠ½ΠΎ: ΠΏΠ°ΡΠΎΠ»ΠΈ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎ Π²ΡΠ΅ΠΌΡ, ΠΎΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π΄ΠΎ ΠΏΠΎΡΡΡ, ΠΌΡ Ρ ΡΠ°Π½ΠΈΠΌ Π² kubernetes secrets. ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ Π±ΠΎΠ½ΡΡ, ΠΏΠ°ΡΠΎΠ»ΠΈ Π²ΠΈΠ΄Π½Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΌ, ΠΊΠΎΠΌΡ ΠΌΡ Π΄Π°Π΅ΠΌ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ΅ΠΊΡΠ΅ΡΠ°ΠΌ, Π° Π½Π΅ Π²ΡΠ΅ΠΌ, Ρ ΠΊΠΎΠ³ΠΎ Π΅ΡΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
Π₯ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π΄Π»Ρ ΡΡΠ°ΡΠΈΠΊΠΈ
ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ: ceph, nfs (Π½ΠΎ nfs Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ Π΄Π»Ρ ΠΏΡΠΎΠ΄Π°ΠΊΡΠ½), network storage ΠΎΡ Β«ΠΎΠ±Π»Π°ΡΠ½ΡΡ Β» ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠΎΠ², etc.
Π₯ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°Ρ Π² /upload/ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ ΡΠ°ΠΉΡΠ° ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΡΠΎ ΡΡΠ°ΡΠΈΠΊΠΎΠΉ.
ΠΠ°Π·Π° Π΄Π°Π½Π½ΡΡ
ΠΠ»Ρ ΠΏΡΠΎΡΡΠΎΡΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ Π²ΡΠ½ΠΎΡΠΈΡΡ Π±Π°Π·Ρ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Ρ Kubernetes. ΠΠ°Π·Π° Π² Kubernetes β ΠΎΡΠ΄Π΅Π»ΡΠ½Π°Ρ ΡΠ»ΠΎΠΆΠ½Π°Ρ Π·Π°Π΄Π°ΡΠ°, ΠΎΠ½Π° ΡΠ΄Π΅Π»Π°Π΅Ρ ΡΡ Π΅ΠΌΡ Π½Π° ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠ»ΠΎΠΆΠ½Π΅Π΅.
Π₯ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΡΠ΅ΡΡΠΈΠΉ
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ memcached π
ΠΠ½ Ρ ΠΎΡΠΎΡΠΎ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ΠΌ ΡΠ΅ΡΡΠΈΠΉ, ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·ΡΠ΅ΡΡΡ, Β«Π½Π°ΡΠΈΠ²Π½ΠΎΒ» ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ session.save_path Π² php. Π’Π°ΠΊΠ°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π· ΠΎΡΡΠ°Π±ΠΎΡΠ°Π½Π° Π΅ΡΠ΅ Π² ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠ½ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΡΡΡΠΎΠΈΠ»ΠΈ ΠΊΠ»Π°ΡΡΠ΅ΡΡ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΡΠΈΡΠ»ΠΎΠΌ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠΎΠ². ΠΠ»Ρ Π΄Π΅ΠΏΠ»ΠΎΡ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ helm.
$ helm install stable/memcached --name session
php.ini β Π·Π΄Π΅ΡΡ Π² ΠΎΠ±ΡΠ°Π·Π΅ Π·Π°Π΄Π°Π½Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ΅ΡΡΠΈΠΉ Π² memcached
ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Environment Variables Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ
ΠΎ Ρ
ΠΎΡΡΠ°Ρ
Ρ memcached
ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΊΠΎΠ΄ Π² ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡΡ
dev, stage, test, prod (ΠΈΠΌΠ΅Π½Π° Ρ
ΠΎΡΡΠΎΠ² memcached Π² Π½ΠΈΡ
Π±ΡΠ΄ΡΡ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΠΈΠΌΡ Ρ
ΠΎΡΡΠΎΠ² Π΄Π»Ρ ΡΠ΅ΡΡΠΈΠΉ).
Π₯ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΊΡΡΠ° ΠΠΈΡΡΠΈΠΊΡ
ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΎΡΠΊΠ°ΡΠ·ΠΎΡΡΠΎΠΉΡΠΈΠ²ΠΎΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, Π² ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΠΏΠΈΡΠ°ΡΡ ΠΈ ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΡΠΈΡΠ°ΡΡ.
Π’Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ memcached.
ΠΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΡΠ°ΠΌΠΈΠΌ ΠΠΈΡΡΠΈΠΊΡ.
$ helm install stable/memcached --name cache
bitrix/.settings_extra.php β Π·Π΄Π΅ΡΡ Π² ΠΠΈΡΡΠΈΠΊΡ Π·Π°Π΄Π°Π΅ΡΡΡ, Π³Π΄Π΅ Ρ Π½Π°Ρ Ρ ΡΠ°Π½ΠΈΡΡΡ ΠΊΡΡ
Π’Π°ΠΊ ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Environment Variables.
ΠΡΠΎΠ½ΡΠ°ΡΠΊΠΈ
ΠΡΡΡ ΡΠ°Π·Π½ΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ ΠΊ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΡΠΎΠ½ΡΠ°ΡΠΊΠΎΠ² Π² Kubernetes.
- ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ deployment Ρ ΠΏΠΎΠ΄ΠΎΠΌ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΡΠΎΠ½ΡΠ°ΡΠΊΠΎΠ²
- cronjob Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΡΠΎΠ½ΡΠ°ΡΠΊΠΎΠ² (Π΅ΡΠ»ΠΈ ΡΡΠΎ web app β Ρ wget
https://$host$cronjobname , ΠΈΠ»ΠΈ kubectl exec Π²Π½ΡΡΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· worker ΠΏΠΎΠ΄ΠΎΠ², ΠΈ Ρ.ΠΏ.) - etc.
ΠΠΎΠΆΠ½ΠΎ ΡΠΏΠΎΡΠΈΡΡ ΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ, Π½ΠΎ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ Π²ΡΠ±ΡΠ°Π»ΠΈ Π²Π°ΡΠΈΠ°Π½Ρ «ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ deployment Ρ ΠΏΠΎΠ΄Π°ΠΌΠΈ Π΄Π»Ρ ΠΊΡΠΎΠ½ΡΠ°ΡΠΊΠΎΠ²»
ΠΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ:
- ΠΊΡΠΎΠ½-ΡΠ°ΡΠΊΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΠ΅ΡΠ΅Π· ConfigMap Π»ΠΈΠ±ΠΎ ΡΠ΅ΡΠ΅Π· ΡΠ°ΠΉΠ» config/addcron
- Π² ΠΎΠ΄Π½ΠΎΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ΅ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΡΠΉ worker-ΠΏΠΎΠ΄Ρ + ΡΠ°Π·ΡΠ΅ΡΠ°Π΅ΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΡΠΎΠ½-ΡΠ°ΡΠΊΠΎΠ² Π² Π½Π΅ΠΌ
- ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ° ΠΆΠ΅ ΠΊΠΎΠ΄ΠΎΠ²Π°Ρ Π±Π°Π·Π°, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠ½ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠ±ΠΎΡΠΊΠ° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΏΡΠΎΡΡΠ°
Π§ΡΠΎ Ρ ΠΎΡΠΎΡΠ΅Π³ΠΎ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ:
- ΠΈΠΌΠ΅Π΅ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠ΅ ΠΊΡΠΎΠ½ΡΠ°ΡΠΊΠΈ Π² ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΈ, ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎΠΌ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² (docker)
- ΠΊΡΠΎΠ½ΡΠ°ΡΠΊΠΈ Π½Π΅ Π½ΡΠΆΠ½ΠΎ «ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°ΡΡ» Π΄Π»Ρ Kubernetes, ΠΎΠ½ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΡΠΎΠΌ ΠΆΠ΅ Π²ΠΈΠ΄Π΅ ΠΈ Π² ΡΠΎΠΉ ΠΆΠ΅ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅, ΡΡΠΎ ΠΈ ΡΠ°Π½ΡΡΠ΅
- ΠΊΡΠΎΠ½-ΡΠ°ΡΠΊΠΈ ΠΌΠΎΠ³ΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π²ΡΠ΅ ΡΠ»Π΅Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Ρ ΠΏΡΠ°Π²Π°ΠΌΠΈ commit Π² production Π²Π΅ΡΠΊΡ, Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π°Π΄ΠΌΠΈΠ½Ρ
ΠΠΎΠ΄ΡΠ»Ρ Southbridge K8SDeploy ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΈΠ· Π°Π΄ΠΌΠΈΠ½-ΠΏΠ°Π½Π΅Π»ΠΈ
ΠΡ Π²Π΅Π΄Ρ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ ΠΏΡΠΎ upgrade ΠΏΠΎΠ΄?
Π ΠΊΠ°ΠΊ Π½Π°ΠΏΡΠ°Π²Π»ΡΡΡ ΡΡΠ΄Π° ΡΡΠ°ΡΠΈΠΊ?
Π£ΡΠ°, ΠΌΡ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ Π½Π° php π ΠΡΠΎ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ Π΄Π»Ρ ΠΠΈΡΡΠΈΠΊΡ. ΠΠ³ΠΎ Π΅ΡΠ΅ Π½Π΅Ρ Π² ΠΎΡΠΊΡΡΡΠΎΠΌ Π΄ΠΎΡΡΡΠΏΠ΅, Π½ΠΎ ΠΌΡ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΠΌ Π΅Π³ΠΎ ΠΎΡΠΊΡΡΡΡ.
ΠΠΎΠ΄ΡΠ»Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ Π² ΠΠΈΡΡΠΈΠΊΡ:
Π Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π²ΠΎΡ ΡΠ°ΠΊ:
ΠΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°Π΄Π°ΡΡ cookie, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΠ΅Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° ΡΠ°ΠΉΡΠ° ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Kubernetes ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΡΠ°ΡΠΈΠΊ Π½Π° upgrade ΠΏΠΎΠ΄.
ΠΠΎΠ³Π΄Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π·Π°Π²Π΅ΡΡΠ΅Π½Ρ, Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΆΠ°ΡΡ git push, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π±ΡΠ΄ΡΡ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½Ρ Π² git, Π΄Π°Π»Π΅Π΅ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠΎΠ±Π΅ΡΠ΅Ρ ΠΎΠ±ΡΠ°Π· Ρ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ ΠΊΠΎΠ΄Π° ΠΈ Β«ΡΠ°ΡΠΊΠ°ΡΠ°Π΅ΡΒ» Π΅Π΅ ΠΏΠΎ ΠΊΠ»Π°ΡΡΠ΅ΡΡ, Π·Π°ΠΌΠ΅Π½ΠΈΠ² ΡΡΠ°ΡΡΠ΅ ΠΏΠΎΠ΄Ρ.
ΠΠ°, Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΡΡΡΠ»ΡΠ½ΠΎ, Π½ΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΌΡ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½ΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΈ Π½Π΅ Π·Π°Π±ΠΈΡΠ°Π΅ΠΌ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΠΈΡΡΠΈΠΊΡ Π»ΡΠ±ΠΈΠΌΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠΏΡΠ°Π²ΠΈΡΡ ΠΊΠΎΠ΄ ΠΈΠ· Π°Π΄ΠΌΠΈΠ½ΠΊΠΈ. Π ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ², ΡΡΠΎ ΠΎΠΏΡΠΈΡ, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ ΠΏΡΠ°Π²ΠΊΠΈ ΠΊΠΎΠ΄Π° ΡΠ΅ΡΠΈΡΡ ΠΏΠΎ-Π΄ΡΡΠ³ΠΎΠΌΡ.
Helm ΡΠ°ΡΡ
ΠΠ»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² Kubernetes ΠΌΡ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΏΠ°ΠΊΠ΅ΡΠ½ΡΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ Helm.
ΠΠ»Ρ Π½Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΠΈΡΡΠΈΠΊΡ Π² Kubernetes Π‘Π΅ΡΠ³Π΅ΠΉ ΠΠΎΠ½Π΄Π°ΡΠ΅Π², Π½Π°Ρ Π²Π΅Π΄ΡΡΠΈΠΉ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ, Π½Π°ΠΏΠΈΡΠ°Π» ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ Helm ΡΠ°ΡΡ.
ΠΠ½ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠ±ΠΎΡΠΊΡ worker, ugrade, cron ΠΏΠΎΠ΄ΠΎΠ², Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅Ρ ingress’Ρ, ΡΠ΅ΡΠ²ΠΈΡΡ, ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈΠ· Kubernetes secrets Π² ΠΏΠΎΠ΄Ρ.
ΠΠΎΠ΄ ΠΌΡ Ρ ΡΠ°Π½ΠΈΠΌ Π² Gitlab, ΠΈ ΡΠ±ΠΎΡΠΊΡ Helm ΡΠ°ΠΊΠΆΠ΅ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΠΈΠ· Gitlab.
ΠΡΠ»ΠΈ ΠΊΡΠ°ΡΠΊΠΎ, ΡΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ
$ helm upgrade --install project .helm --set image=registrygitlab.local/k8s/bitrix -f .helm/values.yaml --wait --timeout 300 --debug --tiller-namespace=production
Helm ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄Π΅Π»Π°ΡΡ Β«Π±Π΅ΡΡΠΎΠ²Π½ΡΠΉΒ» ΠΎΡΠΊΠ°Ρ, Π΅ΡΠ»ΠΈ Π²Π΄ΡΡΠ³ ΠΏΡΠΈ Π΄Π΅ΠΏΠ»ΠΎΠ΅ ΡΡΠΎ-ΡΠΎ ΠΏΠΎΡΠ»ΠΎ Π½Π΅ ΡΠ°ΠΊ. ΠΡΠΈΡΡΠ½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ Π²Ρ Π² ΠΏΠ°Π½ΠΈΠΊΠ΅ Β«ΡΠΈΠΊΡΠΈΡΠ΅ ΠΊΠΎΠ΄ ΠΏΠΎ ΡΡΠΏ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΏΡΠΎΠ΄ ΡΠΏΠ°Π»Β», Π° Kubernetes Π΄Π΅Π»Π°Π΅Ρ ΡΡΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ, ΠΏΡΠΈΡΠ΅ΠΌ Π±Π΅Π· Π΄Π°ΡΠ½ΡΠ°ΠΉΠΌΠ°.
ΠΠ΅ΠΏΠ»ΠΎΠΉ
ΠΠ°, ΠΌΡ ΡΠ°Π½Π°ΡΡ Gitlab & Gitlab CI, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΅Π³ΠΎ π
ΠΡΠΈ ΠΊΠΎΠΌΠΌΠΈΡΠ΅ Π² Gitlab Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠ°ΡΠΈΠΉ ΠΏΡΠΎΠ΅ΠΊΡΠ° Gitlab Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠ°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ.
ΠΡΠ°ΠΏΡ:
- build (ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌ Π½ΠΎΠ²ΡΠΉ Docker ΠΎΠ±ΡΠ°Π·)
- test (ΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌ)
- clean up (ΡΠ΄Π°Π»ΡΠ΅ΠΌ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅)
- push (ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ Π΅Π³ΠΎ Π² Docker registry)
- deploy (ΡΠ°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Kubernetes ΡΠ΅ΡΠ΅Π· Helm).
Π£ΡΠ°, Π³ΠΎΡΠΎΠ²ΠΎ, Π²Π½Π΅Π΄ΡΡΠ΅ΠΌ!
ΠΡ ΠΈΠ»ΠΈ Π·Π°Π΄Π°Π΅ΠΌ Π²ΠΎΠΏΡΠΎΡΡ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π΅ΡΡΡ.
ΠΡΠ°ΠΊ, ΡΡΠΎ ΠΌΡ ΡΠ΄Π΅Π»Π°Π»ΠΈ
Π‘ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ:
- Π΄ΠΎΠΊΠ΅ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π»ΠΈ ΠΠΈΡΡΠΈΠΊΡ;
- Β«ΡΠ°Π·ΡΠ΅Π·Π°Π»ΠΈΒ» ΠΠΈΡΡΠΈΠΊΡ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΡΡΠ½ΠΊΡΠΈΠΉ;
- Π΄ΠΎΠ±ΠΈΠ»ΠΈΡΡ stateless ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ²;
- ΡΠ΅ΡΠΈΠ»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΠΈΡΡΠΈΠΊΡ Π² Kubernetes;
- Π²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΠΈΡΡΠΈΠΊΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΠ»ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ (ΠΏΠΎΡΡΠΈ Π²ΡΠ΅);
- ΠΎΡΡΠ°Π±ΠΎΡΠ°Π»ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠΉ Π² Kubernetes ΠΈ ΠΎΡΠΊΠ°Ρ ΠΌΠ΅ΠΆΠ΄Ρ Π²Π΅ΡΡΠΈΡΠΌΠΈ.
Π‘ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ Π±ΠΈΠ·Π½Π΅ΡΠ°:
- ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡ;
- ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Kubernetes (ΠΏΡΠΎΡΡΠ°Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ Gitlab CI, Π±Π΅ΡΡΠΎΠ²Π½ΡΠΉ Π΄Π΅ΠΏΠ»ΠΎΠΉ, etc);
- ΠΏΠ°ΡΠΎΠ»ΠΈ Π² ΡΠ΅ΠΊΡΠ΅ΡΠ°Ρ (Π²ΠΈΠ΄Π½Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΌ, ΠΊΠΎΠΌΡ ΠΏΡΡΠΌΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΠ°ΡΠΎΠ»ΡΠΌ);
- ΡΠ΄ΠΎΠ±Π½ΠΎ Π΄Π΅Π»Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ (Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΡΠ΅ΡΡΠΎΠ² ΠΈ Π΄Ρ) Π²Π½ΡΡΡΠΈ Π΅Π΄ΠΈΠ½ΠΎΠΉ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com