ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ для Kubernetes: ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ stateful-прилоТСния

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° stateful-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² Kubernetes

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ, запуск ΠΈ дальнСйшСС ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ слуТб ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‚ΡΡ просто, Ссли Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Ρ‘Ρ‚ ΠΎ случаях, классифицируСмых ΠΊΠ°ΠΊ stateless, Ρ‚.Π΅. Π±Π΅Π· сохранСния Π΄Π°Π½Π½Ρ‹Ρ…. Π’Π°ΠΊΠΈΠ΅ сСрвисы ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π² Kubernetes, ΠΏΠΎΠ»ΡŒΠ·ΡƒΡΡΡŒ Π΅Π³ΠΎ стандартными API, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ всё происходит Β«ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈΒ»: ΠΏΠΎ стандартным конфигурациям, Π±Π΅Π· привлСчСния ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ спСцифики ΠΈ ΠΌΠ°Π³ΠΈΠΈ.

ΠŸΡ€ΠΎΡ‰Π΅ говоря, для запуска Π² кластСрС ΠΈΠ· ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Π΅Ρ‰Ρ‘ пяти ΠΊΠΎΠΏΠΈΠΉ бэкСнда Π½Π° PHP/Ruby/Python трСбуСтся лишь 5 Ρ€Π°Π· ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ сСрвСр ΠΈ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ исходники. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈ исходники, ΠΈ init-скрипт Π»Π΅ΠΆΠ°Ρ‚ Π² ΠΎΠ±Ρ€Π°Π·Π΅, ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ stateless-прилоТСния становится совсСм элСмСнтарным. Как Ρ…ΠΎΡ€ΠΎΡˆΠΎ извСстно Π»ΡŽΠ±ΠΈΡ‚Π΅Π»ΡΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² ΠΈ микросСрвисной Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, слоТности Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ stateful, Ρ‚.Π΅. с сохранСниСм Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ кэши (MySQL, PostgreSQL, Redis, ElasticSearch, Cassandra…). Π­Ρ‚ΠΎ касаСтся ΠΊΠ°ΠΊ софта, ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠ²ΠΎΡ€ΡƒΠΌΠ½Ρ‹ΠΉ кластСр (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Percona XtraDB ΠΈ Cassandra), Ρ‚Π°ΠΊ ΠΈ софта, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ (Ρ‚Π°ΠΊΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Redis, MySQL, PostgreSQL…).

БлоТности Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΏΠΎ Ρ‚ΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅, Ρ‡Ρ‚ΠΎ исходников ΠΈ запуска сСрвиса становится Π½Π΅ достаточно β€” Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ дСйствия. Как ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ β€” ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ/ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒΡΡ ΠΊ кластСру. А Ссли Ρ‚ΠΎΡ‡Π½Π΅Π΅, Ρ‚ΠΎ эти сСрвисы Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ понимания, ΠΊΠ°ΠΊ ΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΈΡ… Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ нСдоступности. Π£Ρ‡Ρ‘Ρ‚ этих потрСбностСй ΠΈ называСтся «эксплуатационными знаниями» (operational knowledge).

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ CoreOS

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Β«Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΒ» эксплуатационныС знания, Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ Π³ΠΎΠ΄Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ CoreOS прСдставил Β«Π½ΠΎΠ²Ρ‹ΠΉ класс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния» для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Kubernetes β€” ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ (Operators, ΠΎΡ‚ Π°Π½Π³Π». Β«operationΒ», Ρ‚.Π΅. «эксплуатация»).

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ возмоТности Kubernetes (Π² Ρ‚.Ρ‡. StatefulSets, ΠΎ Ρ€Π°Π·Π½ΠΈΡ†Π΅ с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ см. Π½ΠΈΠΆΠ΅), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ DevOps-спСциалистам Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ эксплуатационныС знания Π² ΠΊΠΎΠ΄ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

ЦСль ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° β€” ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ API, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ мноТСством сущностСй stateful-прилоТСния Π² кластСрС Kubernetes, Π½Π΅ Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°ΡΡΡŒ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ Π½Π΅Π³ΠΎ ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌ (ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ Ρ‡Ρ‚ΠΎ с Π½ΠΈΠΌΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΅Ρ‰Ρ‘ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ для поддСрТания кластСра). ЀактичСски ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΈΠ·Π²Π°Π½ максимально ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… кластСра, автоматизируя Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ эксплуатационных Π·Π°Π΄Π°Ρ‡, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π½ΡŒΡˆΠ΅ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.

Как Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

ReplicaSets Π² Kubernetes ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ΅ количСство Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄ΠΎΠ², Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ слСдят Π·Π° Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡ… количСство ΡΠΎΡ…Ρ€Π°Π½ΡΠ»ΠΎΡΡŒ (создавая ΠΈ удаляя ΠΏΠΎΠ΄Ρ‹). Аналогично Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ добавляСт ΠΊ стандартному рСсурсу ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρƒ Kubernetes Π½Π°Π±ΠΎΡ€ эксплуатационных Π·Π½Π°Π½ΠΈΠΉ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ дСйствия для поддСрТания Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ количСства сущностСй прилоТСния.

Π§Π΅ΠΌ это отличаСтся ΠΎΡ‚ StatefulSets, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… ΠΎΡ‚ кластСра ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΈΠΌ Ρ‚Π°ΠΊΠΈΠ΅ stateful-рСсурсы, ΠΊΠ°ΠΊ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ статичныС IP? Для Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ StatefulSets (вмСсто ReplicaSets) Π² качСствС основы, прСдлагая Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΡŽ: Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ дСйствия Π² случаС ΠΏΠ°Π΄Π΅Π½ΠΈΠΉ, Π΄Π΅Π»Π°Ρ‚ΡŒ бэкапы, ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ΠΈ Ρ‚.ΠΏ.

Π˜Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ ΠΆΠ΅ всё это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚? ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ прСдставляСт собой Π΄Π΅ΠΌΠΎΠ½-управлятор, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ:

  1. подписываСтся Π½Π° событийноС API Π² Kubernetes;
  2. ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΈΠ· Π½Π΅Π³ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ систСмС (ΠΎ своих ReplicaSets, Pods, Services ΠΈ Ρ‚.ΠΏ.);
  3. ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Third Party Resources (см. ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π½ΠΈΠΆΠ΅);
  4. Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π° появлСниС/ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Third Party Resources (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ вСрсии ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅);
  5. Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ состояниС систСмы (ΠΎ своих ReplicaSets, Pods, Services ΠΈ Ρ‚.ΠΏ.);
  6. самоС главноС:
    1. обращаСтся ΠΊ Kubernetes API, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ всё Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ (ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅, свои ReplicaSets, Pods, Services…),
    2. выполняСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ магию (ΠΌΠΎΠΆΠ½ΠΎ, для упрощСния, Π΄ΡƒΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π·Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Π² сами ΠΏΠΎΠ΄Ρ‹ ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для вступлСния Π² кластСр ΠΈΠ»ΠΈ для Π°ΠΏΠ³Ρ€Π΅ΠΉΠ΄Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ вСрсии).

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ для Kubernetes: ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ stateful-прилоТСния
По Ρ„Π°ΠΊΡ‚Ρƒ, ΠΊΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ, Π² Kubernetes просто добавляСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Deployment с ReplicaSet), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈ называСтся ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ. Оно ΠΆΠΈΠ²Ρ‘Ρ‚ Π² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ ΠΏΠΎΠ΄Π΅ (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ΄Π½ΠΎΠΌ-СдинствСнном) ΠΈ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π° свой Namespace. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅-ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ свой API β€” ΠΏΡ€Π°Π²Π΄Π°, Π½Π΅ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, Π° Ρ‡Π΅Ρ€Π΅Π· Third Party Resources Π² Kubernetes.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ‹ создали Π² Namespace ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² Π½Π΅Π³ΠΎ Third Party Resources.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ для etcd (подробности см. Π½ΠΈΠΆΠ΅):

apiVersion: etcd.coreos.com/v1beta1
kind: Cluster
metadata:
  name: example-etcd-cluster
spec:
  size: 3
  version: 3.1.0

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ для Elasticsearch:

apiVersion: enterprises.upmc.com/v1
kind: ElasticsearchCluster
metadata:
  name: example-es-cluster
spec:
  client-node-replicas: 3
  master-node-replicas: 2
  data-node-replicas: 3
  zones:
  - us-east-1c
  - us-east-1d
  - us-east-1e
  data-volume-size: 10Gi
  java-options: "-Xms1024m -Xmx1024m"
  snapshot:
    scheduler-enabled: true
    bucket-name: elasticsnapshots99
    cron-schedule: "@every 2m"
  storage:
    type: gp2
    storage-class-provisioner: kubernetes.io/aws-ebs

ВрСбования, ΠΏΡ€Π΅Π΄ΡŠΡΠ²Π»ΡΠ΅ΠΌΡ‹Π΅ ΠΊ ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌ

Π’ CoreOS сформулировали основныС ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π°ΠΌΠΈ Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°Π΄ ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ. НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ всС ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹ (ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ со своими особСнностями ΠΈ потрСбностями), ΠΈΡ… созданиС Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΠΏΠΈΡ€Π°Ρ‚ΡŒΡΡ Π½Π° своСобразный каркас, ΠΏΡ€Π΅Π΄ΡŠΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ трСбования:

  1. Установка Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Ρ‡Π΅Ρ€Π΅Π· СдинствСнный Deployment: kubectl create -f SOME_OPERATOR_URL/deployment.yaml β€” ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… дСйствий.
  2. ΠŸΡ€ΠΈ установкС ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π² Kubernetes Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π½ΠΎΠ²Ρ‹ΠΉ сторонний Ρ‚ΠΈΠΏ (ThirdPartyResource). Для запуска экзСмпляров ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (экзСмпляров кластСров) ΠΈ дальнСйшСго управлСния ΠΈΠΌΠΈ (ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ вСрсий, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈ Π΄Ρ€.) ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот Ρ‚ΠΈΠΏ.
  3. ΠŸΡ€ΠΈ любой возмоТности Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ встроСнныС Π² Kubernetes ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Services ΠΈ ReplicaSets, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΉ ΠΈ понятный ΠΊΠΎΠ΄.
  4. НСобходима обратная ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° старых вСрсий рСсурсов, созданных ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.
  5. ΠŸΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° само ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
  6. Π£ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΆΠ΅Π»Π°Π΅ΠΌΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ прилоТСния ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ оркСстровку ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ вСрсии прилоТСния. ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ ПО β€” частый источник ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ эксплуатации ΠΈ бСзопасности, поэтому ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠΌΠΎΠ³Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π² этом вопросС.
  7. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ инструмСнтом Ρ‚ΠΈΠΏΠ° Chaos Monkey, Π²Ρ‹ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΌ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ сбои Π² ΠΏΠΎΠ΄Π°Ρ…, конфигурациях ΠΈ сСти.

etcd Operator

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° β€” etcd Operator, ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎ дню анонса этой ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ. ΠšΠ»Π°ΡΡ‚Π΅Ρ€Π½Π°Ρ конфигурация etcd ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ слоТной ΠΈΠ·-Π·Π° нСобходимости поддСрТания ΠΊΠ²ΠΎΡ€ΡƒΠΌΠ°, потрСбности Π² ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ члСнства Π² кластСрС, создания бэкапов ΠΈ Ρ‚.ΠΏ. НапримСр, ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ кластСра etcd Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ создания DNS-ΠΈΠΌΠ΅Π½ΠΈ для Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ‡Π»Π΅Π½Π° кластСра, запуск Π½ΠΎΠ²ΠΎΠΉ сущности etcd, оповСщСния кластСра ΠΎ Π½ΠΎΠ²ΠΎΠΌ Ρ‡Π»Π΅Π½Π΅ (etcdctl member add). Π’ случаС с ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ достаточно Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ кластСра β€” всё ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Ρ‘Ρ‚ автоматичСски.

И ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ etcd создали Ρ‚ΠΎΠΆΠ΅ Π² CoreOS, Π²ΠΏΠΎΠ»Π½Π΅ Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌ Π±Ρ‹Π»ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ появлСниС Π΅Π³ΠΎ ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ. Как ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚? Π›ΠΎΠ³ΠΈΠΊΠ° ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° etcd опрСдСляСтся трСмя ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌΠΈ:

  1. НаблюдСниС (Observe). ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ слСдит Π·Π° состояниСм кластСра ΠΏΠΎ Kubernetes API.
  2. Анализ (Analyze). Находит отличия Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ статуса ΠΎΡ‚ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ³ΠΎ (ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ).
  3. ДСйствиС (Act). УстраняСт ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Π΅ различия с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ API сСрвиса etcd ΠΈ/ΠΈΠ»ΠΈ Kubernetes.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ для Kubernetes: ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ stateful-прилоТСния

Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ этой Π»ΠΎΠ³ΠΈΠΊΠΈ Π² ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Create/Destroy (созданиС ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ‡Π»Π΅Π½ΠΎΠ² кластСра etcd) ΠΈ Resize (ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ количСства Ρ‡Π»Π΅Π½ΠΎΠ² кластСра). ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° коррСктности Π΅Ρ‘ работоспособности ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΠ»Π°ΡΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹, созданной ΠΏΠΎ подобию Chaos Monkey ΠΎΡ‚ Netflix, Ρ‚.Π΅. ΡƒΠ±ΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉ ΠΏΠΎΠ΄Ρ‹ etcd случайным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

Для ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠΉ эксплуатации etcd Π² ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ прСдусмотрСны Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ возмоТности: Backup (автоматичСскоС ΠΈ Π½Π΅Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎΠ΅ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ созданиС Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρ‹Ρ… ΠΊΠΎΠΏΠΈΠΉ β€” Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³Π΅ достаточно ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ часто ΠΈΡ… Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΈ ΠΊΠ°ΠΊΠΎΠ΅ количСство Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ, β€” ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ восстановлСниС Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Π½ΠΈΡ…) ΠΈ Upgrade (ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ инсталляций etcd Π±Π΅Π· простоя).

Как выглядит Ρ€Π°Π±ΠΎΡ‚Π° с ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ?

$ kubectl create -f https://coreos.com/operators/etcd/latest/deployment.yaml
$ kubectl create -f https://coreos.com/operators/etcd/latest/example-etcd-cluster.yaml
$ kubectl get pods
NAME                             READY     STATUS    RESTARTS   AGE
etcd-cluster-0000                1/1       Running   0          23s
etcd-cluster-0001                1/1       Running   0          16s
etcd-cluster-0002                1/1       Running   0          8s
etcd-cluster-backup-tool-rhygq   1/1       Running   0          18s

Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉ статус etcd Operator β€” Π±Π΅Ρ‚Π°-вСрсия, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰Π°Ρ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Kubernetes 1.5.3+ ΠΈ etcd 3.0+. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈ докумСнтация (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠΏΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡŽ) доступны Π½Π° GitHub.

Π‘ΠΎΠ·Π΄Π°Π½ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡ‚ CoreOS β€” Prometheus Operator, Π½ΠΎ ΠΎΠ½ ΠΏΠΎΠΊΠ° находится Π² Π°Π»ΡŒΡ„Π°-вСрсии (Π½Π΅ всС Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹).

Бтатус ΠΈ пСрспСктивы

Π‘ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° анонса ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Kubernetes ΠΏΡ€ΠΎΡˆΠ»ΠΎ 5 мСсяцСв. Π’ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ CoreOS ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ доступны лишь Π΄Π²Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (для etcd ΠΈ Prometheus). ОбС Π΅Ρ‰Ρ‘ Π½Π΅ достигли своих ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… вСрсий, Π½ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π² Π½ΠΈΡ… Π½Π°Π±Π»ΡŽΠ΄Π°ΡŽΡ‚ΡΡ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‚ Β«Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ Postgres Operators, Cassandra Operators ΠΈΠ»ΠΈ Redis Operators Π² своих кластСрах Kubernetes ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ сущностями этих ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ‚Π°ΠΊ ΠΆΠ΅ Π»Π΅Π³ΠΊΠΎ, ΠΊΠ°ΠΊ сСгодня это происходит с Π΄Π΅ΠΏΠ»ΠΎΠ΅ΠΌ Ρ€Π΅ΠΏΠ»ΠΈΠΊ stateless-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ для Π²Π΅Π±Π°Β». ΠŸΠ΅Ρ€Π²Ρ‹Π΅ ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΎΡ‚ сторонних Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°Ρ‡Π°Π»ΠΈ ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ:

  • Elasticsearch Operator ΠΎΡ‚ UPMC Enterprises;
  • PostgreSQL Operator ΠΎΡ‚ Crunchy Data (анонсирован Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΌΠ°Ρ€Ρ‚Π° 2017 .);
  • Rook Operator ΠΎΡ‚ Π°Π²Ρ‚ΠΎΡ€ΠΎΠ² распрСдСлённой систСмы хранСния Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° Π±Π°Π·Π΅ Ceph (Rook находится Π² Π°Π»ΡŒΡ„Π°-статусС);
  • Openstack Operators ΠΎΡ‚ SAP CCloud.

На ΠΊΡ€ΡƒΠΏΠ½Π΅ΠΉΡˆΠ΅ΠΉ СвропСйской ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ ΠΏΠΎ свободному ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌΡƒ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΡŽ FOSDEM, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠ»Π° Π² Ρ„Π΅Π²Ρ€Π°Π»Π΅ 2017 Π³ΠΎΠ΄Π° Π² Π‘Ρ€ΡŽΡΡΠ΅Π»Π΅, Josh Wood ΠΈΠ· CoreOS анонсировал ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π² Π΄ΠΎΠΊΠ»Π°Π΄Π΅ (ΠΏΠΎ ссылкС доступно Π²ΠΈΠ΄Π΅ΠΎ!), Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΏΠΎΡΠΎΠ±ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ росту популярности этой ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ Π² Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎΠΌ Open Source-сообщСствС.

P.S. Бпасибо Π·Π° интСрСс ΠΊ ΡΡ‚Π°Ρ‚ΡŒΠ΅! ΠŸΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π° наш Ρ…Π°Π±, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ ΠΈ Ρ€Π΅Ρ†Π΅ΠΏΡ‚Ρ‹ ΠΏΠΎ DevOps ΠΈ систСмному Π°Π΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ GNU/Linux β€” ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… рСгулярно!

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