Книга «Kubernetes для DevOps»

Книга «Kubernetes для DevOps» ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Π₯Π°Π±Ρ€ΠΎΠΆΠΈΡ‚Π΅Π»ΠΈ! Kubernetes – ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… элСмСнтов соврСмСнной ΠΎΠ±Π»Π°Ρ‡Π½ΠΎΠΉ экосистСмы. Π­Ρ‚Π° тСхнология обСспСчиваСт Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ, ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ ΠΈ ΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½ΠΎΠΉ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π”ΠΆΠΎΠ½ АрундСл ΠΈ ДТастин Домингус Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΎΠ± экосистСмС Kubernetes ΠΈ знакомят с ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ повсСднСвных ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π¨Π°Π³ Π·Π° шагом Π²Ρ‹ построитС собствСнноС ΠΎΠ±Π»Π°Ρ‡Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ создадитС инфраструктуру для Π΅Π³ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ, настроитС срСду Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠ³ΠΎ развСртывания, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ пригодится Π²Π°ΠΌ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π½Π°Π΄ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ прилоТСниями.

β€’ НачнСтС Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ ΠΈ Kubernetes с Π°Π·ΠΎΠ²: Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΎΠΏΡ‹Ρ‚Π° для изучСния Ρ‚Π΅ΠΌΡ‹ Π½Π΅ трСбуСтся. β€’ ЗапуститС собствСнныС кластСры ΠΈΠ»ΠΈ Π²Ρ‹Π±Π΅Ρ€Π΅Ρ‚Π΅ управляСмый сСрвис Kubernetes ΠΎΡ‚ Amazon, Google ΠΈ Π΄Ρ€. β€’ ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅ Kubernetes для управлСния ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΈ расхода рСсурсов. β€’ ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ кластСры ΠΏΠΎ показатСлям стоимости, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, устойчивости, мощности ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΠΈ. β€’ Π˜Π·ΡƒΡ‡ΠΈΡ‚Π΅ Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠ΅ инструмСнты для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, тСстирования ΠΈ развСртывания Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. β€’ Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ΡΡŒ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ отраслСвыми ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°ΠΌΠΈ для обСспСчСния бСзопасности ΠΈ контроля. β€’ Π’Π½Π΅Π΄Ρ€ΠΈΡ‚Π΅ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ DevOps, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² стали Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΎ, быстро ΠΈ эффСктивно.

Для ΠΊΠΎΠ³ΠΎ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° ΠΊΠ½ΠΈΠ³Π°

Книга Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Π° для сотрудников ΠΎΡ‚Π΄Π΅Π»ΠΎΠ² администрирования, отвСтствСнных Π·Π° сСрвСры, прилоТСния ΠΈ сСрвисы, Π° Ρ‚Π°ΠΊΠΆΠ΅ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΡ…ΡΡ Π»ΠΈΠ±ΠΎ построСниСм Π½ΠΎΠ²Ρ‹Ρ… ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… сСрвисов, Π»ΠΈΠ±ΠΎ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠ΅ΠΉ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² Kubernetes ΠΈ ΠΎΠ±Π»Π°ΠΊΠΎ. НС Π²ΠΎΠ»Π½ΡƒΠΉΡ‚Π΅ΡΡŒ, ΡƒΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Kubernetes ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ Π½Π΅ трСбуСтся β€” ΠΌΡ‹ всСму Π½Π°ΡƒΡ‡ΠΈΠΌ.

ΠžΠΏΡ‹Ρ‚Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Kubernetes Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°ΠΉΠ΄ΡƒΡ‚ для сСбя ΠΌΠ½ΠΎΠ³ΠΎ Ρ†Π΅Π½Π½ΠΎΠ³ΠΎ: здСсь ΡƒΠ³Π»ΡƒΠ±Π»Π΅Π½Π½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠ΅ Ρ‚Π΅ΠΌΡ‹, ΠΊΠ°ΠΊ RBAC, Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠ΅ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ Π½Π°Π±Π»ΡŽΠ΄Π°Π΅ΠΌΠΎΡΡ‚ΡŒ. НадССмся, Ρ‡Ρ‚ΠΎ Π½Π° страницах ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ окаТСтся Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ интСрСсноС ΠΈ для вас, нСзависимо ΠΎΡ‚ Π²Π°ΡˆΠΈΡ… Π½Π°Π²Ρ‹ΠΊΠΎΠ² ΠΈ ΠΎΠΏΡ‹Ρ‚Π°.

На ΠΊΠ°ΠΊΠΈΠ΅ вопросы ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ ΠΊΠ½ΠΈΠ³Π°

Π’ΠΎ врСмя планирования ΠΈ написания ΠΊΠ½ΠΈΠ³ΠΈ ΠΌΡ‹ обсуТдали ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΈ Kubernetes с сотнями людСй, Ρ€Π°Π·Π³ΠΎΠ²Π°Ρ€ΠΈΠ²Π°Π»ΠΈ ΠΊΠ°ΠΊ с Π»ΠΈΠ΄Π΅Ρ€Π°ΠΌΠΈ ΠΈ экспСртами Π² Π΄Π°Π½Π½ΠΎΠΉ отрасли, Ρ‚Π°ΠΊ ΠΈ с Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΌΠΈ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°ΠΌΠΈ. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ вопросы, ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² этом ΠΈΠ·Π΄Π°Π½ΠΈΠΈ.

  • «МСня интСрСсуСт, ΠΏΠΎΡ‡Π΅ΠΌΡƒ слСдуСт Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ врСмя Π½Π° эту Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ. КакиС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΎΠ½Π° ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΌΠ½Π΅ ΠΈ ΠΌΠΎΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅?Β»
  • Β«Kubernetes каТСтся интСрСсной, Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ довольно высокий ΠΏΠΎΡ€ΠΎΠ³ вхоТдСния. ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π΅ составляСт Ρ‚Ρ€ΡƒΠ΄Π°, Π½ΠΎ дальнСйшиС администрированиС ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΏΡƒΠ³Π°ΡŽΡ‚. ΠœΡ‹ Π±Ρ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹Π΅ совСты ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ люди ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ кластСрами Kubernetes Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… условиях ΠΈ с ΠΊΠ°ΠΊΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΌΡ‹, скорСС всСго, столкнСмся».
  • Β«Π‘Ρ‹Π» Π±Ρ‹ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΡΡƒΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ совСт. ЭкосистСма Kubernetes ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ слишком ΠΌΠ½ΠΎΠ³ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Π½Π° Π²Ρ‹Π±ΠΎΡ€. Когда ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ нСсколькими способами, ΠΊΠ°ΠΊ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· Π½ΠΈΡ… Π»ΡƒΡ‡ΡˆΠ΅? Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€?Β»

И, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹ΠΉ ΠΈΠ· всСх вопросов:

  • «Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Kubernetes, Π½Π΅ Π½Π°Ρ€ΡƒΡˆΠ°Ρ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΌΠΎΠ΅ΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ?Β»

ΠžΡ‚Ρ€Ρ‹Π²ΠΎΠΊ. ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Secret

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΠΈΡ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ прилоТСния Kubernetes ΠΎΡ‚ Π΅Π³ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΡ‚ Π»ΡŽΠ±Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ настроСк, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ) ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Π°. К ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ значСниям ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ относят ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ срСды, DNS-адрСса сторонних сСрвисов ΠΈ ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ для Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, всС это ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ нСпосрСдствСнно Π² ΠΊΠΎΠ΄, Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ нСдостаточно Π³ΠΈΠ±ΠΎΠΊ. НапримСр, для измСнСния ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ значСния Ρ‚ΠΎΠ³Π΄Π° придСтся Π·Π°Π½ΠΎΠ²ΠΎ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ваш ΠΊΠΎΠ΄. Намного Π»ΡƒΡ‡ΡˆΠΈΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ΠΎΡ‚ ΠΊΠΎΠ΄Π° ΠΈ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΅Π΅ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… срСды.

Kubernetes прСдоставляСт нСсколько Ρ€Π°Π·Π½Ρ‹Ρ… способов управлСния ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ значСния Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ срСды, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π² спСцификации pod-ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ (см. ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π» Β«ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ срСды» Π½Π° с. 192). Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ нСпосрСдствСнно Π² Kubernetes, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ConfigMap ΠΈ Secret.

Π’ Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Π΅ ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ исслСдуСм эти ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ рассмотрим Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ практичСскиС ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΊ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ дСмонстрационного прилоТСния.

ОбновлСниС pod-ΠΎΠ±ΠΎΠ»ΠΎΡ‡Π΅ΠΊ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈt

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π² вашСм кластСрС Π΅ΡΡ‚ΡŒ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ значСния Π² Π΅Π³ΠΎ ConfigMap. Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ€Ρ‚ Helm (см. Ρ€Π°Π·Π΄Π΅Π» Β«Helm: диспСтчСр ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² для KubernetesΒ» Π½Π° с. 102), ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ваши pod-ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ автоматичСски с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ΄Π½ΠΎΠ³ΠΎ изящного ΠΏΡ€ΠΈΠ΅ΠΌΠ°. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ Π² ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ своСго развСртывания:

checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") .
       | sha256sum }}

Π’Π΅ΠΏΠ΅Ρ€ΡŒ шаблон развСртывания содСрТит ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΡƒΡŽ сумму ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²: ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² сумма обновится. Если Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ helm upgrade, Helm ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚, Ρ‡Ρ‚ΠΎ спСцификация развСртывания измСнилась, ΠΈ пСрСзапустит всС pod-ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ.

ΠšΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π² Kubernetes

ΠœΡ‹ ΡƒΠΆΠ΅ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ConfigMap прСдоставляСт Π³ΠΈΠ±ΠΊΠΈΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ хранСния ΠΈ доступа ΠΊ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ Π² кластСрС. Однако Ρƒ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΅ΡΡ‚ΡŒ информация, которая являСтся сСкрСтной ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠ°Ρ€ΠΎΠ»ΠΈ ΠΈΠ»ΠΈ API-ΠΊΠ»ΡŽΡ‡ΠΈ. Π•Π΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈ Π² ConfigMap, Π½ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ нСидСально.

ВмСсто этого Kubernetes ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ для хранСния ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…: Secret. Π”Π°Π»Π΅Π΅ рассмотрим Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΊΠ°ΠΊ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π² нашСм дСмонстрационном ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.

Для Π½Π°Ρ‡Π°Π»Π° взглянитС Π½Π° манифСст Kubernetes для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Secret (см. hello-secret-env/k8s/secret.yaml):

apiVersion: v1
kind: Secret
metadata:
    name: demo-secret
stringData:
    magicWord: xyzzy

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ magicWord ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ xyzzy (en.wikipedia.org/wiki/Xyzzy_(computing)). Π‘Π»ΠΎΠ²ΠΎ xyzzy Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅ Π² ΠΌΠΈΡ€Π΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ². По Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с ConfigMap Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ Secret ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ мноТСство ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π—Π΄Π΅ΡΡŒ для простоты ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ лишь ΠΎΠ΄Π½Ρƒ ΠΏΠ°Ρ€Ρƒ Β«ΠΊΠ»ΡŽΡ‡ β€” Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Β».

ИспользованиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Secret Π² качСствС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… срСды

Как ΠΈ ConfigMap, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Secret ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ доступным Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅ Π² Π²ΠΈΠ΄Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… срСды ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ»Π° Π½Π° Π΅Π³ΠΎ дискС. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ присвоим ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ срСды Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· Secret:

spec:
   containers:
       - name: demo
          image: cloudnatived/demo:hello-secret-env
          ports:
             - containerPort: 8888
          env:
             - name: GREETING
               valueFrom:
               secretKeyRef:
                  name: demo-secret
                  key: magicWord

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ demo, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ манифСсты:

kubectl apply -f hello-secret-env/k8s/
deployment.extensions "demo" configured
secret "demo-secret" created

Как ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅, ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²ΡŒΡ‚Π΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΡ€Ρ‚ ΠΊ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² своСм Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅:

kubectl port-forward deploy/demo 9999:8888
Forwarding from 127.0.0.1:9999 -> 8888
Forwarding from [::1]:9999 -> 8888

ΠŸΡ€ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ адрСса localhost:9999/ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

The magic word is "xyzzy"

Π—Π°ΠΏΠΈΡΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Secret Π² Ρ„Π°ΠΉΠ»Ρ‹

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Secret ΠΊ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρƒ Π² Π²ΠΈΠ΄Π΅ Ρ„Π°ΠΉΠ»Π°. Код находится Π² ΠΏΠ°ΠΏΠΊΠ΅ hello-secret-file рСпозитория demo.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Secret Π² Π²ΠΈΠ΄Π΅ Ρ„Π°ΠΉΠ»Π°, Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ΠΌ:

spec:
   containers:
       - name: demo
          image: cloudnatived/demo:hello-secret-file
          ports:
              - containerPort: 8888
          volumeMounts:
              - name: demo-secret-volume
                mountPath: "/secrets/"
                readOnly: true
   volumes:
      - name: demo-secret-volume
        secret:
           secretName: demo-secret

Как ΠΈ Π² ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π΅ Β«Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ConfigMapΒ» Π½Π° с. 240, ΠΌΡ‹ создаСм Ρ‚ΠΎΠΌ (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС это demo-secret-volume) ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π΅Π³ΠΎ ΠΊ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρƒ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ спСцификации volumeMounts. Π’ ΠΏΠΎΠ»Π΅ mountPath ΡƒΠΊΠ°Π·Π°Π½ΠΎ /secrets, поэтому Kubernetes создаст Π² этой ΠΏΠ°ΠΏΠΊΠ΅ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ Ρ„Π°ΠΉΠ»Ρƒ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°Ρ€Ρ‹ Β«ΠΊΠ»ΡŽΡ‡ β€” Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Β», ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ Secret.

Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Ρƒ ΠΏΠ°Ρ€Ρƒ Β«ΠΊΠ»ΡŽΡ‡ β€” Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Β» с ΠΈΠΌΠ΅Π½Π΅ΠΌ magicWord, поэтому манифСст создаст Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅ ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ» /secrets/magicWord с ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, доступный ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ для чтСния.

Если ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ этот манифСст Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

The magic word is "xyzzy"

Π§Ρ‚Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Secret

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ использовали ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ kubectl describe для Π²Ρ‹Π²ΠΎΠ΄Π° содСрТимого ConfigMap. МоТно Π»ΠΈ Ρ‚ΠΎ ΠΆΠ΅ самоС ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с Secret?

kubectl describe secret/demo-secret
Name:          demo-secret

Namespace:      default
Labels:             <none>
Annotations:
Type:               Opaque

Data
====
magicWord: 5   bytes

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ сами Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Secret Π² Kubernetes ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚ΠΈΠΏ Opaque: это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΈΡ… содСрТимоС Π½Π΅ показываСтся Π² Π²Ρ‹Π²ΠΎΠ΄Π΅ kubectl describe, ΠΆΡƒΡ€Π½Π°Π»ΡŒΠ½Ρ‹Ρ… записях ΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅, благодаря Ρ‡Π΅ΠΌΡƒ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ случайно Ρ€Π°ΡΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ YAML, Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ kubectl get:

kubectl get secret/demo-secret -o yaml
apiVersion: v1
data:
   magicWord: eHl6enk=
kind: Secret
metadata:
...
type: Opaque

base64

Π§Ρ‚ΠΎ Π·Π° eHl6enk=, совсСм Π½Π΅ ΠΏΠΎΡ…ΠΎΠΆΠΈΠΉ Π½Π° нашС исходноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅? На самом Π΄Π΅Π»Π΅ это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Secret, прСдставлСнный Π² ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅ base64. Base64 β€” это схСма кодирования ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π² Π²ΠΈΠ΄Π΅ строки символов.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ информация ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΉ ΠΈ нСдоступной для Π²Ρ‹Π²ΠΎΠ΄Π° (ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² случаС с ΠΊΠ»ΡŽΡ‡ΠΎΠΌ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ TLS), ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Secret всСгда хранятся Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ base64.

ВСкст beHl6enk= являСтся вСрсиСй нашСго сСкрСтного слова xyzzy, Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π² base64. Π’ этом ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ссли Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ base64 —decode:

echo "eHl6enk=" | base64 --decode
xyzzy

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, нСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Kubernetes Π·Π°Ρ‰ΠΈΡ‰Π°Π΅Ρ‚ вас ΠΎΡ‚ случайного Π²Ρ‹Π²ΠΎΠ΄Π° ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ ΠΈΠ»ΠΈ ΠΆΡƒΡ€Π½Π°Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ…, ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ΠΏΡ€Π°Π² Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Secret Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ пространствС ΠΈΠΌΠ΅Π½ эти Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ base64 ΠΈ впослСдствии ΠΈΡ… Ρ€Π°ΡΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² base64 ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ тСкст (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² Secret), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ base64 Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²:

echo xyzzy | base64
eHl6enkK

Доступ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ Secret

ΠšΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Secret? Π­Ρ‚ΠΎ опрСдСляСтся RBAC β€” ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ контроля доступа (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Π΅Π³ΠΎ обсудим Π² ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π΅ Β«Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ доступом Π½Π° основС Ρ€ΠΎΠ»Π΅ΠΉΒ» Π½Π° с. 258). Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ кластСр, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ систСма RBAC отсутствуСт ΠΈΠ»ΠΈ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π°, всС ваши ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Secret доступны Π»ΡŽΠ±Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌ (ΠΏΠΎΠ·ΠΆΠ΅ ΠΌΡ‹ объясним, Ρ‡Ρ‚ΠΎ Ρƒ вас Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΠ³ΠΎ кластСра Π±Π΅Π· RBAC).

ПассивноС ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…

А Ρ‡Ρ‚ΠΎ насчСт Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ доступ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… etcd, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Kubernetes Ρ…Ρ€Π°Π½ΠΈΡ‚ всю свою ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ? ΠœΠΎΠ³ΡƒΡ‚ Π»ΠΈ ΠΎΠ½ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, Π½Π΅ имСя ΠΏΡ€Π°Π² Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Secret Ρ‡Π΅Ρ€Π΅Π· API?

Начиная с вСрсии 1.7, Kubernetes ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ пассивноС ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ информация Π²Π½ΡƒΡ‚Ρ€ΠΈ etcd хранится Π½Π° дискС Π² Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Π° Π΄Π°ΠΆΠ΅ Ρ‚Π΅ΠΌ, ΠΊΡ‚ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ прямой доступ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Для Π΅Π΅ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠΈ Π½ΡƒΠΆΠ΅Π½ ΠΊΠ»ΡŽΡ‡, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρƒ сСрвСра API Kubernetes. Π’ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ сконфигурированном кластСрС пассивноС ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π»ΠΈ пассивноС ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² вашСм кластСрС, ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

kubectl describe pod -n kube-system -l component=kube-apiserver |grep encryption
        --experimental-encryption-provider-config=...

Если Π²Ρ‹ Π½Π΅ Π²ΠΈΠ΄ΠΈΡ‚Π΅ Ρ„Π»Π°Π³Π° experimental-encryption-provider-config, пассивноС ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ. ΠŸΡ€ΠΈ использовании Google Kubernetes Engine ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… сСрвисов ΠΏΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ Kubernetes ваши Π΄Π°Π½Π½Ρ‹Π΅ ΡˆΠΈΡ„Ρ€ΡƒΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΈΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°, поэтому Ρ„Π»Π°Π³ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ. Π£Π·Π½Π°ΠΉΡ‚Π΅ Ρƒ своСго поставщика Kubernetes, ΡˆΠΈΡ„Ρ€ΡƒΠ΅Ρ‚ΡΡ Π»ΠΈ содСрТимоС etcd.

Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…

Π•ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ рСсурсы Kubernetes, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ слСдуСт ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΈΠ· кластСра: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, особо Π²Π°ΠΆΠ½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Secret. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ±Π΅Ρ€Π΅Ρ‡ΡŒ рСсурс ΠΎΡ‚ удалСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ, прСдоставляСмой диспСтчСром Helm:

kind: Secret
metadata:
    annotations:
        "helm.sh/resource-policy": keep

Π‘Ρ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΠΈ управлСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Secret

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π° ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π·Π°Ρ‰ΠΈΡ‰Π°Π»ΠΈΡΡŒ ΠΎΡ‚ нСсанкционированного доступа сразу послС сохранСния Π² кластСрС. Но Π² Ρ„Π°ΠΉΠ»Π°Ρ… манифСстов ΠΎΠ½ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡΡŒ Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ тСкста.

Π’Ρ‹ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² Ρ„Π°ΠΉΠ»Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ находятся Π² систСмС контроля вСрсий. Как ΠΆΠ΅ бСзопасно Π°Π΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π΅ ΠΊ кластСру Kubernetes?

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ инструмСнты ΠΈΠ»ΠΈ стратСгии для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² своих прилоТСниях, Π½ΠΎ всС Ρ€Π°Π²Π½ΠΎ Π²Π°ΠΌ понадобится ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ вопросы.

  • Π“Π΄Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ высокодоступными?
  • Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ доступными для Π²Π°ΡˆΠΈΡ… Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ?
  • Π§Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ с вашими прилоТСниями, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ замСняСтС ΠΈΠ»ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅?

Об Π°Π²Ρ‚ΠΎΡ€Π°Ρ…

Π”ΠΆΠΎΠ½ АрундСл являСтся ΠΊΠΎΠ½ΡΡƒΠ»ΡŒΡ‚Π°Π½Ρ‚ΠΎΠΌ с 30-Π»Π΅Ρ‚Π½ΠΈΠΌ ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ индустрии. Он написал нСсколько ΠΊΠ½ΠΈΠ³ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ со ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ компаниями ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… стран, ΠΊΠΎΠ½ΡΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡ ΠΈΡ… Π² вопросах ΠΎΠ±Π»Π°Ρ‡Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ инфраструктуры ΠΈ Kubernetes. Π’ свободноС врСмя увлСкаСтся сСрфингом, Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ стрСляСт ΠΈΠ· пистолСта ΠΈ Π»ΡŽΠ±ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈ ΠΈΠ³Ρ€Π°Π΅Ρ‚ Π½Π° ΠΏΠΈΠ°Π½ΠΈΠ½ΠΎ. Π–ΠΈΠ²Π΅Ρ‚ Π² сказочном ΠΊΠΎΡ‚Ρ‚Π΅Π΄ΠΆΠ΅ Π² ΠšΠΎΡ€Π½ΡƒΠΎΠ»Π»Π΅, Англия.

ДТастин Домингус β€” ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ систСмного администрирования, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π² срСдС DevOps с Kubernetes ΠΈ ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹ΠΌΠΈ тСхнологиями. Π•ΠΌΡƒ нравится ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ врСмя Π½Π° свСТСм Π²ΠΎΠ·Π΄ΡƒΡ…Π΅, ΠΏΠΈΡ‚ΡŒ ΠΊΠΎΡ„Π΅, Π»ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΡ€Π°Π±ΠΎΠ² ΠΈ ΡΠΈΠ΄Π΅Ρ‚ΡŒ Π·Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠΌ. Π–ΠΈΠ²Π΅Ρ‚ Π² БиэтлС, ΡˆΡ‚Π°Ρ‚ Π’Π°ΡˆΠΈΠ½Π³Ρ‚ΠΎΠ½, вмСстС с Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠΎΡ‚ΠΎΠΌ ΠΈ Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΆΠ΅Π½ΠΎΠΉ ΠΈ ΠΏΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅Π»ΡŒΡΡ‚Π²Ρƒ Π»ΡƒΡ‡ΡˆΠΈΠΌ Π΄Ρ€ΡƒΠ³ΠΎΠΌ Эдриэнн.

Β» Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ с ΠΊΠ½ΠΈΠ³ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ Π½Π° сайтС ΠΈΠ·Π΄Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π°
» ОглавлСниС
Β» ΠžΡ‚Ρ€Ρ‹Π²ΠΎΠΊ

Для Π₯Π°Π±Ρ€ΠΎΠΆΠΈΡ‚Π΅Π»Π΅ΠΉ скидка 25% ΠΏΠΎ ΠΊΡƒΠΏΠΎΠ½Ρƒ β€” Kubernetes

По Ρ„Π°ΠΊΡ‚Ρƒ ΠΎΠΏΠ»Π°Ρ‚Ρ‹ Π±ΡƒΠΌΠ°ΠΆΠ½ΠΎΠΉ вСрсии ΠΊΠ½ΠΈΠ³ΠΈ Π½Π° e-mail высылаСтся элСктронная ΠΊΠ½ΠΈΠ³Π°.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ