ΠΡΠΈΠΌ. ΠΏΡΠ΅Π².: ΠΠ²ΡΠΎΡ Π½Π° ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½Π°ΡΠ° ΡΡΠ°ΡΠΈΡ Π΅ ThΓ©o Chamley, Π°ΡΡ ΠΈΡΠ΅ΠΊΡ Π½Π° ΠΎΠ±Π»Π°ΡΠ½ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π² Google. Π ΡΠ°Π·ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ Π·Π° Π±Π»ΠΎΠ³Π° Π½Π° Google Cloud ΡΠΎΠΉ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈ ΠΊΡΠ°ΡΠΊΠΎ ΡΠ΅Π·ΡΠΌΠ΅ Π½Π° ΠΏΠΎ-ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Π½Π° Π½Π΅Π³ΠΎΠ²Π°ΡΠ° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ, Π½Π°ΡΠ΅ΡΠ΅Π½ΠΎ ββ. Π Π½Π΅Π³ΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠΈ ΠΎΡ Google ΡΡΠ±ΡΠ°Ρ Π° Π½Π°ΠΉ-Π΄ΠΎΠ±ΡΠΈΡΠ΅ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Google Kubernetes Engine ΠΈ Π½Π΅ ΡΠ°ΠΌΠΎ, ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°ΠΉΠΊΠΈ ΡΠΈΡΠΎΠΊ ΡΠΏΠ΅ΠΊΡΡΡ ΠΎΡ ΡΠ΅ΠΌΠΈ: ΠΎΡ ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ° Π΄ΠΎ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΠΈ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ. Π ΡΠ°ΠΊΠ°, ΠΊΠΎΠΈ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ Π² ΡΠ°Π±ΠΎΡΠ°ΡΠ° Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ ΡΠ° Π½Π°ΠΉ-Π²Π°ΠΆΠ½ΠΈ ΡΠΏΠΎΡΠ΅Π΄ Google?

(ΡΡΠ»ΡΠ³Π°ΡΠ° Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² Google Cloud, Π±Π°Π·ΠΈΡΠ°Π½Π° Π½Π° Kubernetes β ΠΏΡΠΈΠΌ. ΠΏΡΠ΅Π².) β Π΅Π΄ΠΈΠ½ ΠΎΡ Π½Π°ΠΉ-Π΄ΠΎΠ±ΡΠΈΡΠ΅ Π½Π°ΡΠΈΠ½ΠΈ Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΈ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΠΈΡΠΊΠ²Π°Ρ ΠΌΠ°ΡΠ°Π±ΠΈΡΠ°Π½Π΅. ΠΎΠ±Π΅Π·ΠΏΠ΅ΡΠ°Π²Π° Π±Π΅Π·ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π°ΠΊΠΎ ΡΠ΅ ΡΠ° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·ΠΈΡΠ°Π½ΠΈ. ΠΠΎ Π°ΠΊΠΎ ΠΈΡΠΊΠ°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π΄Π° Π±ΡΠ΄Π΅ Π»Π΅ΡΠ½ΠΎ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ Π΄Π° ΡΠ΅ Π²ΡΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΎΡ Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²Π° Π½Π° Kubernetes, Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ»Π΅Π΄Π²Π°ΡΠ΅ Π½Π°ΠΉ-Π΄ΠΎΠ±ΡΠΈΡΠ΅ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ. Π’Π΅ ΡΠ΅ ΡΠ»Π΅ΡΠ½ΡΡ Π΅ΠΊΡΠΏΠ»ΠΎΠ°ΡΠ°ΡΠΈΡΡΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, Π½Π΅Π³ΠΎΠ²ΠΈΡ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΠΈ ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΡΠ΅ ΠΏΠΎΠ²ΠΈΡΠ°Ρ ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ°.
Π ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ ΡΠ΅ ΠΏΡΠ΅Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΡΠΏΠΈΡΡΠΊ Ρ ΡΠΎΠ²Π°, ΠΊΠΎΠ΅ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π·Π½Π°Π΅ΡΠ΅ ΠΈ ΠΏΡΠ°Π²ΠΈΡΠ΅ Π·Π° Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΡΠ΅ Π² Kubernetes. ΠΠ°ΡΡΠ½ΠΈΡΠ΅ ΡΠ΅ ΠΊΠ°ΡΠΎ ΠΈΡΠΊΠ°Ρ Π΄Π° Π·Π°Π΄ΡΠ»Π±ΠΎΡΠ°Ρ Π·Π½Π°Π½ΠΈΡΡΠ° ΡΠΈ, ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ°Ρ ΡΠ΅ΠΊΡΡΠ° , Π° ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π΄Π° ΠΎΠ±ΡΡΠ½Π°Ρ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π½Π°ΡΠΈΡ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ.
1. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΈ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΡΠ΅ Π·Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅
ΠΠΊΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π΅ ΡΡΠ°ΡΡΠΈΡΠ°Π½ΠΎ Π² ΠΊΠ»Π°ΡΡΠ΅Ρ Kubernetes, Π½Π΅ ΡΠ° Π½ΡΠΆΠ½ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ΡΠ° Π·Π° Π»ΠΎΠ³ΠΎΠ²Π΅ΡΠ΅. Π¦Π΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π²Π΅ΡΠΎΡΡΠ½ΠΎ Π²Π΅ΡΠ΅ Π΅ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°Π½Π° Π² ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ΅Ρ. Π ΡΠ»ΡΡΠ°ΠΉ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Kubernetes Engine, Π·Π° ΡΠΎΠ²Π° ΠΎΡΠ³ΠΎΠ²Π°ΡΡ . (ΠΡΠΈΠΌ. ΠΏΡΠ΅Π².: Π Π² ΡΠ»ΡΡΠ°ΠΉ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½Π° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡ Π½Π° Kubernetes, ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ²Π°ΠΌΠ΅ Π΄Π° ΡΠ΅ Π·Π°ΠΏΠΎΠ·Π½Π°Π΅ΡΠ΅ Ρ Π½Π°ΡΠ΅ΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ β .) ΠΠ΅ ΡΡΠ»ΠΎΠΆΠ½ΡΠ²Π°ΠΉΡΠ΅ ΠΆΠΈΠ²ΠΎΡΠ° ΡΠΈ ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ Π²Π³ΡΠ°Π΄Π΅Π½ΠΈΡΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΈ Π·Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΡΠ΅. ΠΠ°ΠΏΠΈΡΠ²Π°ΠΉΡΠ΅ Π»ΠΎΠ³ΠΎΠ²Π΅ΡΠ΅ Π² stdout ΠΈ stderr β ΡΠ΅ ΡΠ΅ Π±ΡΠ΄Π°Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈ, ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈ ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ°Π½ΠΈ.
ΠΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠΎ Π΄Π° Π·Π°ΠΏΠΈΡΠ²Π°ΡΠ΅ Π»ΠΎΠ³ΠΎΠ²Π΅ΡΠ΅ Π² . Π’Π°ΠΊΡΠ² ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π»Π΅ΡΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈ. Π Π·Π°Π΅Π΄Π½ΠΎ Ρ ΡΡΡ Π² Stackdriver Logging ΡΠ΅ ΡΠ΅ ΠΏΠΎΡΠ²ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΡΡΡΡΠ΅Π½Π΅ Π² Π»ΠΎΠ³ΠΎΠ²Π΅ΡΠ΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΡΠ΅Π·ΠΈ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈ.
2. Π£Π±Π΅Π΄Π΅ΡΠ΅ ΡΠ΅, ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΡΠ΅ ΡΠ° stateless ΠΈ immutable
ΠΠ° ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΡΠ΅ Π² Kubernetes ΠΊΠ»ΡΡΡΠ΅ΡΠ° ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ stateless ΠΈ immutable. ΠΠΎΠ³Π°ΡΠΎ ΡΠ΅Π·ΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡ ΡΠ° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈ, Kubernetes ΡΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° Π·Π°Π΄Π°ΡΠΈΡΠ΅ ΡΠΈ, ΡΡΠ·Π΄Π°Π²Π°ΠΉΠΊΠΈ ΠΈ ΡΠ½ΠΈΡΠΎΠΆΠ°Π²Π°ΠΉΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈ ΠΊΡΠ΄Π΅ΡΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ.
Stateless ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ Π²ΡΡΠΊΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ (ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΈ Π΄Π°Π½Π½ΠΈ ΠΎΡ Π²ΡΡΠΊΠ°ΠΊΡΠ² ΡΠΈΠΏ) ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π° ΠΈΠ·Π²ΡΠ½ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°. ΠΠ° ΡΠ΅Π»ΡΠ°, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ Π½ΡΠΆΠ΄ΠΈΡΠ΅, ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π²ΠΈΠ΄ΠΎΠ²Π΅ Π²ΡΠ½ΡΠ½ΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°: , , , ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ²Π°Π½ΠΈ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ. (ΠΡΠΈΠΌ. ΠΏΡΠ΅Π².: ΠΠΎΠ²Π΅ΡΠ΅ Π·Π° ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΠΈ Π² Π½Π°ΡΠ°ΡΠ° ΡΡΠ°ΡΠΈΡ βΒ».)
Immutable ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡΡ Π½ΡΠΌΠ° Π΄Π° Π±ΡΠ΄Π΅ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠ°Π½ ΠΏΡΠ΅Π· ΡΠ²ΠΎΡ ΠΆΠΈΠ²ΠΎΡ: Π±Π΅Π· Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΏΠ°ΡΠΎΠ²Π΅ ΠΈΠ»ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ°. ΠΠΊΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΠΊΠΎΠ΄Π° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈΠ»ΠΈ Π΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠΈΡΠ΅ ΠΏΠ°Ρ, ΡΡΠ·Π΄Π°ΠΉΡΠ΅ Π½ΠΎΠ² ΠΎΠ±ΡΠ°Π· ΠΈ Π³ΠΎ Π²Π½Π΅Π΄ΡΠ΅ΡΠ΅. ΠΡΠ΅ΠΏΠΎΡΡΡΠ²Π° ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° (ΠΏΠΎΡΡ Π·Π° ΡΠ»ΡΡΠ°Π½Π΅, ΠΎΠΏΡΠΈΠΈ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½Π°ΡΠ° ΡΡΠ΅Π΄Π° ΠΈ Ρ.Π½.) Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ·Π²ΡΠ½ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° β Π² ΠΈ . Π’Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡ ΠΎΡ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° Π½ΠΎΠ² ΠΎΠ±ΡΠ°Π· Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°. ΠΠ° Π»Π΅ΡΠ½ΠΎ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ΠΈ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΎΠ±ΡΠ°Π·ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ . (ΠΡΠΈΠΌ. ΠΏΡΠ΅Π².: ΠΠ° ΡΠ΅Π·ΠΈ ΡΠ΅Π»ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Open Source ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ .)

ΠΡΠΈΠΌΠ΅Ρ Π·Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π½Π° Deployment Π² Kubernetes Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ConfigMap, ΠΌΠΎΠ½ΡΠΈΡΠ°Π½ Π² ΠΏΠΎΠ΄ΠΎΠ²Π΅ΡΠ΅ ΠΊΠ°ΡΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ
3. ΠΠ·Π±ΡΠ³Π²Π°ΠΉΡΠ΅ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ
ΠΠΈΠ΅ Π½Π΅ ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ root ΠΏΡΠ°Π²Π° Π½Π° Π²Π°ΡΠΈΡΠ΅ ΡΡΡΠ²ΡΡΠΈ, Π½Π°Π»ΠΈ? ΠΠΊΠΎ Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» ΠΏΡΠΎΠ½ΠΈΠΊΠ½Π΅ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, ΡΠΎΠΉ ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈ Π΄ΠΎΡΡΡΠΏ Ρ root ΠΏΡΠ°Π²Π°. Π‘ΡΡΠΈΡΠ΅ ΡΠ°Π·ΡΡΠΆΠ΄Π΅Π½ΠΈΡ Π²Π°ΠΆΠ°Ρ ΠΈ Π·Π° ΠΈΠ·Π±ΡΠ³Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ. ΠΠΊΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΡΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π½Π° Ρ ΠΎΡΡΠ°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΡΠ΅Π· ΠΎΠΏΡΠΈΡΡΠ° Π² Kubernetes. ΠΠΊΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΡΡΠ΅ sysctls, Kubernetes ΠΈΠΌΠ° Π·Π° ΡΠΎΠ²Π°. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, ΠΎΠΏΠΈΡΠ²Π°ΠΉΡΠ΅ ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΎ ΠΈ sidecar ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ. Π’Π΅ Π½Π΅ ΠΈΠ·ΠΈΡΠΊΠ²Π°Ρ Π½Π°Π»ΠΈΡΠ½ΠΎΡΡ Π½ΠΈΡΠΎ Π·Π° Π²ΡΡΡΠ΅ΡΠ΅Π½, Π½ΠΈΡΠΎ Π·Π° Π²ΡΠ½ΡΠ΅Π½ ΡΡΠ°ΡΠΈΠΊ.
ΠΠΊΠΎ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠ°ΡΠ΅ ΠΊΠ»ΡΡΡΠ΅ΡΠ°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ Π²ΡΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΎΡ Π·Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΏΡΠΈ ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ.
4. ΠΠ·Π±ΡΠ³Π²Π°ΠΉΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ΡΠΎ Ρ root
ΠΠ° ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ Π΅ Π²Π΅ΡΠ΅ ΠΊΠ°Π·Π°Π½ΠΎ, Π½ΠΎ ΡΠ΅ Π΅ ΠΎΡΠ΅ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅, Π°ΠΊΠΎ Π² Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΡΠΌ ΡΠΎΠ²Π° Π½Π΅ ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ root Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°. ΠΠΊΠΎ Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» Π½Π°ΠΌΠ΅ΡΠΈ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Ρ ΠΏΡΠ°Π²Π° root, ΠΊΠΎΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ΄, ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΡΡΠΏΠ΅Π΅ Π΄Π° ΠΈΠ·Π»Π΅Π·Π΅ ΠΈΠ·Π²ΡΠ½ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΡΡΠ΅Π· Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡ, ΡΠΎ ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈ root ΠΏΡΠ°Π²Π° Π½Π° Ρ ΠΎΡΡΠ°.
ΠΠ°ΠΉ-Π΄ΠΎΠ±ΡΠΈΡΡ Π½Π°ΡΠΈΠ½ Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅ΡΠ΅ ΡΠΎΠ²Π° Π΅ ΠΏΡΠ΅Π΄ΠΈ Π²ΡΠΈΡΠΊΠΎ Π΄Π° Π½Π΅ ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ Π½ΠΈΡΠΎ ΠΏΠΎΠ΄ root. ΠΠ° ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΡΠ° USER Π² Dockerfile ΠΈΠ»ΠΈ runAsUser Π² Kubernetes. ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡΡ Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ° ΡΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΡΡΡΠΎΠΈ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° .
5. ΠΠ°ΠΏΡΠ°Π²Π΅ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π»Π΅ΡΠ½ΠΎ Π·Π° ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³
ΠΠ°ΠΊΡΠΎ ΠΈ Π»ΠΎΠ³Π²Π°Π½Π΅ΡΠΎ, ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ΡΡ Π΅ Π½Π΅ΠΎΡΠΌΠ΅Π½ΠΈΠΌΠ° ΡΠ°ΡΡ ΠΎΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ. ΠΠΎΠΏΡΠ»ΡΡΠ½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π° ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Π² ΠΎΠ±ΡΠ½ΠΎΡΡΡΠ° Π½Π° Kubernetes Π΅ β ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΊΠΎΡΡΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΎΡΠΊΡΠΈΠ²Π° ΠΏΠΎΠ΄ΠΎΠ²Π΅ ΠΈ ΡΡΠ»ΡΠ³ΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ Π½ΡΠΆΠ΄Π°ΡΡ ΠΎΡ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³. (ΠΡΠΈΠΌ. ΠΏΡΠ΅Π².: ΠΠΈΠΆΡΠ΅ ΡΡΡΠΎ Π½Π°ΡΠΈΡ ΠΏΠΎ ΡΠ΅ΠΌΠ°ΡΠ° Π·Π° ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Prometheus ΠΈ Kubernetes.) ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΡΠ° ΠΊΠ»ΡΡΡΠ΅ΡΠΈ Kubernetes ΠΈ Π²ΠΊΠ»ΡΡΠ²Π° ΡΠ²ΠΎΡ Π²Π΅ΡΡΠΈΡ Π½Π° Prometheus Π·Π° ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.

ΠΠ°Π½Π΅Π»ΡΡ Π·Π° ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Π½Π° Kubernetes Π² Stackdriver
Prometheus ΠΎΡΠ°ΠΊΠ²Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π΄Π° ΠΈΠ·Π»Π°Π³Π° ΠΌΠ΅ΡΡΠΈΠΊΠΈ Π½Π° HTTP endpoint. ΠΠ° ΡΠΎΠ²Π° ΡΠ° Π½Π°Π»ΠΈΡΠ½ΠΈ . Π‘ΡΡΠΈΡΡ ΡΠΎΡΠΌΠ°Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΈ Π΄ΡΡΠ³ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ ΠΊΠ°ΡΠΎ ΠΈ .
6. ΠΠ°ΠΏΡΠ°Π²Π΅ΡΠ΅ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ
Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π² production ΠΏΠΎΠΌΠ°Π³Π° Π½Π° Π½Π΅Π³ΠΎΠ²Π°ΡΠ° ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ Π΄Π° ΡΡΠΎΠ±ΡΠ°Π²Π° Π·Π° ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ ΡΠΈ Π½Π° ΡΡΠ»Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°. Π Π°Π±ΠΎΡΠΈ Π»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ? Π ΡΠ΅Π΄ Π»ΠΈ Π΅? ΠΠΎΡΠΎΠ²ΠΎ Π»ΠΈ Π΅ Π΄Π° ΠΏΡΠΈΠ΅ΠΌΠ° ΡΡΠ°ΡΠΈΠΊ? ΠΠ°ΠΊ ΡΠ΅ Π΄ΡΡΠΆΠΈ? ΠΠ°ΠΉ-ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΡΡ Π½Π°ΡΠΈΠ½ Π΄Π° ΡΠ΅ ΡΠ΅ΡΠΈ ΡΠΎΠ·ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π·Π° Π·Π΄ΡΠ°Π²Π΅ (health checks). Π Kubernetes ΠΈΠΌΠ° Π΄Π²Π° ΡΠΈΠΏΠ°: .
ΠΠ° liveness probe (ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΆΠΈΠ·Π½Π΅ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡΠ°) ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠΌΠ° HTTP endpoint, ΠΊΠΎΠΉΡΠΎ Π΄Π° Π²ΡΡΡΠ° ΠΎΡΠ³ΠΎΠ²ΠΎΡ Β«200 OKΒ», Π°ΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ° ΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΌΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΡΠ° ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΠ΅Π½ΠΈ. ΠΠ° readiness probe (ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡΡΠ° Π·Π° ΠΎΠ±ΡΠ»ΡΠΆΠ²Π°Π½Π΅) ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠΌΠ° Π΄ΡΡΠ³ HTTP endpoint, ΠΊΠΎΠΉΡΠΎ Π²ΡΡΡΠ° ΠΎΡΠ³ΠΎΠ²ΠΎΡ β200 OKβ, Π°ΠΊΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π΅ Π² Π·Π΄ΡΠ°Π²ΠΎΡΠ»ΠΎΠ²Π½ΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅, ΡΡΡΠΏΠΊΠΈΡΠ΅ Π·Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈ ΠΈ Π²ΡΡΠΊΠΎ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎ ΠΈΡΠΊΠ°Π½Π΅ Π½Π΅ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ Π³ΡΠ΅ΡΠΊΠ°. Kubernetes ΡΠ΅ Π½Π°ΡΠΎΡΠ²Π° ΡΡΠ°ΡΠΈΠΊΠ° ΠΊΡΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΡΠ°ΠΌΠΎ ΠΏΡΠΈ Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π² ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Ρ ΡΠ΅Π·ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ. ΠΠ²Π°ΡΠ° endpoint-Π° ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΈ, Π°ΠΊΠΎ ΡΠ°Π·Π»ΠΈΠΊΠ°ΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΡΡΠΎΡΠ½ΠΈΡΡΠ° Π½Π° ΠΆΠΈΠ·Π½Π΅Π½ΠΎΡΡ (liveness) ΠΈ Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡ (readiness) ΠΎΡΡΡΡΡΠ²Π°.
ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ Π² ΡΡΠΎΡΠ²Π΅ΡΠ½Π°ΡΠ° ΡΡΠ°ΡΠΈΡ ΠΎΡ Sandeep Dinesh, Developer Advocate Π² Google: βΒ».
7. ΠΠ½ΠΈΠΌΠ°ΡΠ΅Π»Π½ΠΎ ΠΈΠ·Π±ΠΈΡΠ°ΠΉΡΠ΅ Π²Π΅ΡΡΠΈΡΡΠ° Π½Π° ΠΎΠ±ΡΠ°Π·Π°
ΠΠΎ-Π³ΠΎΠ»ΡΠΌΠ°ΡΠ° ΡΠ°ΡΡ ΠΎΡ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΈΡΠ΅ ΠΈ ΡΠ°ΡΡΠ½ΠΈ ΠΎΠ±ΡΠ°Π·ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Π½Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°Π½Π΅, ΠΏΠΎΠ΄ΠΎΠ±Π½Π° Π½Π° ΠΎΠΏΠΈΡΠ°Π½Π°ΡΠ° Π² . ΠΠΊΠΎ ΠΎΠ±ΡΠ°Π·ΡΡ ΠΏΡΠΈΠ»Π°Π³Π° ΡΠΈΡΡΠ΅ΠΌΠ°, Π±Π»ΠΈΠ·ΠΊΠ° Π΄ΠΎ , Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ Π²Π·Π΅ΠΌΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠ° Π½Π° ΡΠΈΠ³Π½Π°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°Π³ΡΡ latest ΡΠ΅ΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠ΅Ρ
Π²ΡΡΠ»Ρ ΠΎΡ ΠΎΠ±ΡΠ°Π· Π½Π° ΠΎΠ±ΡΠ°Π· β Π½Π° Π½Π΅Π³ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠ°Π·ΡΠΈΡΠ°, Π°ΠΊΠΎ Π²ΠΈ ΡΡΡΠ±Π²Π°Ρ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠΈ ΠΈ Π²ΡΠ·ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΠΈ ΡΠ±ΠΎΡΠΊΠΈ ΠΈ ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΠΈ.
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΠ°Π³ X.Y.Z (ΡΠ΅ ΠΏΠΎΡΡΠΈ Π²ΠΈΠ½Π°Π³ΠΈ ΡΠ° Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΈ), Π½ΠΎ Π² ΡΠ°ΠΊΡΠ² ΡΠ»ΡΡΠ°ΠΉ ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°ΠΉΡΠ΅ Π²ΡΠΈΡΠΊΠΈ ΠΏΠ°ΡΠΎΠ²Π΅ ΠΈ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΠΎΠ±ΡΠ°Π·Π°. ΠΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡΡ ΠΎΠ±ΡΠ°Π· ΠΈΠΌΠ° ΡΠ°Π³ X.Y, ΡΠΎΠ²Π° Π΅ Π΄ΠΎΠ±ΡΡ Π²Π°ΡΠΈΠ°Π½Ρ Π½Π° Π·Π»Π°ΡΠ½Π°ΡΠ° ΡΡΠ΅Π΄Π°. ΠΠ·Π±ΠΈΡΠ°ΠΉΠΊΠΈ Π³ΠΎ, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΡΠ΅ ΠΏΠ°ΡΠΎΠ²Π΅ ΠΈ Π² ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ ΡΠ°Π·ΡΠΈΡΠ°ΡΠ΅ Π½Π° ΡΡΠ°Π±ΠΈΠ»Π½Π° Π²Π΅ΡΡΠΈΡ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ.
P.S. ΠΎΡ ΠΏΡΠ΅Π²ΠΎΠ΄Π°ΡΠ°
ΠΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΡΡΡΠΎ Π² Π½Π°ΡΠΈΡ Π±Π»ΠΎΠ³:
- «»;
- «»;
- «»;
- «» (ΠΏΡΠ΅Π³Π»Π΅Π΄ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ Π΄ΠΎΠΊΠ»Π°Π΄);
- «» (ΠΏΡΠ΅Π³Π»Π΅Π΄ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ Π΄ΠΎΠΊΠ»Π°Π΄);
- «» (ΠΏΡΠ΅Π³Π»Π΅Π΄ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ Π΄ΠΎΠΊΠ»Π°Π΄);
- «» (ΠΏΡΠ΅Π³Π»Π΅Π΄ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ Π΄ΠΎΠΊΠ»Π°Π΄);
- «».
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
