Π‘Ρ‚Π°Ρ€Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° Camunda BPM Π² Kubernetes

Π‘Ρ‚Π°Ρ€Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° Camunda BPM Π² Kubernetes

Π˜Π·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Kubernetes? Π“ΠΎΡ‚ΠΎΠ²ΠΈ Π»ΠΈ стС Π΄Π° прСмСститС Π²Π°ΡˆΠΈΡ‚Π΅ инстанции Π½Π° Camunda BPM ΠΎΡ‚ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ машини ΠΈΠ»ΠΈ просто Π΄Π° ΠΎΠΏΠΈΡ‚Π°Ρ‚Π΅ Π΄Π° Π³ΠΈ стартиратС Π½Π° Kubernetes? НСка Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ някои разпространСни ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈ ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€Π°Π½ΠΈ към Π²Π°ΡˆΠΈΡ‚Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈ Π½ΡƒΠΆΠ΄ΠΈ.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π° сС, Ρ‡Π΅ Π²Π΅Ρ‡Π΅ стС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π»ΠΈ Kubernetes. Ако Π½Π΅, Π·Π°Ρ‰ΠΎ Π½Π΅ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅ Π² Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎ ΠΈ Π½Π΅ стартиратС вашия ΠΏΡŠΡ€Π²ΠΈ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€?

Автори

Π’ ΠΊΡ€Π°Ρ‚Ρ†Π΅:

git clone https://github.com/camunda-cloud/camunda-examples.git
cd camunda-examples/camunda-bpm-demo
make skaffold

Π”ΠΎΠ±Ρ€Π΅, вСроятно Ρ‚ΠΎΠ²Π° Π½Π΅ Π΅ сработило, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ няматС инсталирани skaffold ΠΈ kustomize. Π•, Ρ‚ΠΎΠ³Π°Π²Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ΅Ρ‚Π΅ Π΄Π° Ρ‡Π΅Ρ‚Π΅Ρ‚Π΅!

Какво С Camunda BPM

Camunda BPM Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° с ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° бизнСс процСси ΠΈ автоматизация Π½Π° Π²Π·Π΅ΠΌΠ°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, която обСдинява бизнСс ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ ΠΈ софтуСрни Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ. Вя Π΅ ΠΈΠ΄Π΅Π°Π»Π½Π° Π·Π° ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½ΠΈΡ€Π°Π½Π΅ ΠΈ обСдиняванС Π½Π° Ρ…ΠΎΡ€Π°, (ΠΌΠΈΠΊΡ€ΠΎ) услуги ΠΈΠ»ΠΈ Π΄ΠΎΡ€ΠΈ Π±ΠΎΡ‚ΠΎΠ²Π΅! ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΎΠΏΡ†ΠΈΠΈ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π°.

Π—Π°Ρ‰ΠΎ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ Kubernetes

Kubernetes стана Π΄Π΅ Ρ„Π°ΠΊΡ‚ΠΎ стандарт Π·Π° стартиранС Π½Π° ΡΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ прилоТСния Π² Linux. Π§Ρ€Π΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° систСмни повиквания вмСсто Смулация Π½Π° Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€Π½ΠΎ Π½ΠΈΠ²ΠΎ ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈΡ‚Π΅ Π½Π° ядрото Π΄Π° управлява ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° ΠΈ ΠΏΡ€Π΅Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π·Π°Π΄Π°Ρ‡ΠΈ, Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ ΠΈ стартиранС сС ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€Π°. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, Π½Π°ΠΉ-голямото прСдимство ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠΉΠ΄Π΅ ΠΎΡ‚ стандартния API интСрфСйс, ΠΊΠΎΠΉΡ‚ΠΎ Kubernetes прСдоставя Π·Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½Π΅ Π½Π° инфраструктурата, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° Π·Π° всички прилоТСния: Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, ΠΌΡ€Π΅ΠΆΠ° ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³. ΠŸΡ€Π΅Π· юни 2020 Π³. Ρ‚ΠΎΠΉ Π½Π°Π²ΡŠΡ€ΡˆΠΈ 6 Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΠΈ вСроятно Π΅ вторият ΠΏΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ (слСд Linux). Π’ послСдно Π²Ρ€Π΅ΠΌΠ΅ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ стабилизира Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ си слСд Π±ΡŠΡ€Π·Π° итСрация ΠΏΡ€Π΅Π· послСднитС няколко Π³ΠΎΠ΄ΠΈΠ½ΠΈ, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Ρ‚ΠΎΠ²Π° става ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ Π²Π°ΠΆΠ½ΠΎ Π·Π° производствСни натоварвания ΠΏΠΎ цял свят.

Π”Π²ΠΈΠΆΠΎΠΊ Π½Π° Camunda BPM ΠΌΠΎΠΆΠ΅ лСсно Π΄Π° сС ΡΠ²ΡŠΡ€ΠΆΠ΅ с Π΄Ρ€ΡƒΠ³ΠΈ прилоТСния, Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΈ Π² ΡΡŠΡ‰ΠΈΡ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€, Π° Kubernetes осигурява ΠΎΡ‚Π»ΠΈΡ‡Π½Π° мащабируСмост, позволявайки Π΄Π° ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Ρ‚Π΅ Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Π·Π° инфраструктура само ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΅ наистина Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ (ΠΈ лСсно Π΄Π° Π³ΠΈ Π½Π°ΠΌΠ°Π»ΠΈΡ‚Π΅ ΠΏΡ€ΠΈ Π½ΡƒΠΆΠ΄Π°).

ΠšΠ°Ρ‡Π΅ΡΡ‚Π²ΠΎΡ‚ΠΎ Π½Π° ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΡΡŠΡ‰ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ сС подобрява с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° инструмСнти ΠΊΠ°Ρ‚ΠΎ Prometheus, Grafana, Loki, Fluentd ΠΈ Elasticsearch, ΠΊΠΎΠΈΡ‚ΠΎ позволяват Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΎ ΠΏΡ€Π΅Π³Π»Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° всички Ρ€Π°Π±ΠΎΡ‚Π½ΠΈ натоварвания Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°. ДнСс Ρ‰Π΅ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΊΠ°ΠΊ Π΄Π° Π²Π½Π΅Π΄Ρ€ΠΈΠΌ СкспортСр Π½Π° Prometheus Π² Java (JVM) Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° машина.

Π¦Π΅Π»ΠΈ

НСка Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ някои области, Π² ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΠΌΠ΅ Docker ΠΎΠ±Ρ€Π°Π·Π° Π½Π° Camunda BPM (github), Π·Π° Π΄Π° взаимодСйстват Π΄ΠΎΠ±Ρ€Π΅ с Kubernetes.

  1. Π›ΠΎΠ³ΠΎΠ²Π΅ ΠΈ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ;
  2. Π‘Π²Ρ€ΡŠΠ·ΠΊΠΈ с Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ;
  3. АутСнтикация;
  4. Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° сСсии.

НиС Ρ‰Π΅ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ няколко Π½Π°Ρ‡ΠΈΠ½Π° Π·Π° постиганС Π½Π° Ρ‚Π΅Π·ΠΈ Ρ†Π΅Π»ΠΈ ΠΈ Π½Π°ΠΎΡ‡ΠΎ Ρ‰Π΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ цСлия процСс.

Π—Π°Π±Π΅Π»Π΅ΠΆΠΊΠ°: Π˜Π·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Π»ΠΈ вСрсия Enterprise? Π’ΠΈΠΆΡ‚Π΅ Ρ‚ΡƒΠΊ. ΠΈ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°ΠΉΡ‚Π΅ Π²Ρ€ΡŠΠ·ΠΊΠΈΡ‚Π΅ към ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚Π΅ ΠΏΡ€ΠΈ нСобходимост.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Ρ€Π°Π±ΠΎΡ‚Π΅Π½ ΠΏΠΎΡ‚ΠΎΠΊ

Π’ Ρ‚Π°Π·ΠΈ дСмонстрация Ρ‰Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Skaffold Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° Docker ΠΎΠ±Ρ€Π°Π·ΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Google Cloud Build. Π’ΠΎΠΉ ΠΈΠΌΠ° Π΄ΠΎΠ±Ρ€Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ инструмСнти (ΠΊΠ°Ρ‚ΠΎ Kustomize ΠΈ Helm), CI ΠΈ инструмСнти Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ доставчици Π½Π° инфраструктура. Π€Π°ΠΉΠ»ΡŠΡ‚ skaffold.yaml.tmpl Π²ΠΊΠ»ΡŽΡ‡Π²Π° настройки Π·Π° Google Cloud Build ΠΈ GKE, ΠΊΠΎΠ΅Ρ‚ΠΎ осигурява ΠΌΠ½ΠΎΠ³ΠΎ прост Π½Π°Ρ‡ΠΈΠ½ Π·Π° стартиранС Π½Π° инфраструктура ΠΎΡ‚ ΠΏΡ€ΠΎΠΌΠΈΡˆΠ»Π΅Π½ клас.

make skaffold Ρ‰Π΅ Π·Π°Ρ€Π΅Π΄ΠΈ контСкста Π½Π° Dockerfile Π² Cloud Build, Ρ‰Π΅ създадС ΠΎΠ±Ρ€Π°Π· ΠΈ Ρ‰Π΅ Π³ΠΎ Π·Π°ΠΏΠ°Π·ΠΈ Π² GCR, Π° слСд Ρ‚ΠΎΠ²Π° Ρ‰Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈ манифСститС към вашия ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€. Π’ΠΎΠ²Π° Π΅, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈ make skaffold, Π½ΠΎ Skaffold ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π—Π° yaml шаблони Π² Kubernetes ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ kustomize Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° yaml ΠΎΠ²Π΅Ρ€Π»Π΅ΠΈ Π±Π΅Π· разклоняванС Π½Π° цСлия манифСст, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΈ позволява Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ git pull --rebase Π·Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ подобрСния. Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Ρ‚ΠΎΠΉ Π΅ Π² kubectl ΠΈ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π΄ΠΎΠ±Ρ€Π΅ Π·Π° Ρ‚Π°ΠΊΠΈΠ²Π° Π½Π΅Ρ‰Π°.

Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ envsubst Π·Π° попълванС Π½Π° ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° хоста ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° GCP Π² * .yaml.tmpl Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ‚Π΅. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π² makefile ΠΈΠ»ΠΈ просто ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΡ€Π΅Π΄.

НСобходими условия

  • Π Π°Π±ΠΎΡ‚Π΅Π½ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ Kubernetes
  • Kustomize
  • Skaffold β€” Π·Π° създаванС Π½Π° собствСни Docker ΠΎΠ±Ρ€Π°Π·ΠΈ ΠΈ лСсно Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½Π΅ Π² GKE
  • КопиС Π½Π° Ρ‚ΠΎΠ·ΠΈ ΠΊΠΎΠ΄
  • Envsubst

Π Π°Π±ΠΎΡ‚Π΅Π½ ΠΏΠΎΡ‚ΠΎΠΊ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° манифСститС

Ако Π½Π΅ искатС Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ kustomize ΠΈΠ»ΠΈ skaffold, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° сС ΠΎΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ към манифСститС Π² generated-manifest.yaml ΠΈ Π΄Π° Π³ΠΈ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€Π°Ρ‚Π΅ към работния ΠΏΠΎΡ‚ΠΎΠΊ ΠΏΠΎ вашС ΠΆΠ΅Π»Π°Π½ΠΈΠ΅.

Π›ΠΎΠ³ΠΎΠ²Π΅ ΠΈ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ

Prometheus стана стандарт Π·Π° ΡΡŠΠ±ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ Π² Kubernetes. Π’ΠΎΠΉ Π·Π°Π΅ΠΌΠ° ΡΡŠΡ‰ΠΎΡ‚ΠΎ място ΠΊΠ°Ρ‚ΠΎ AWS Cloudwatch Metrics, Cloudwatch Alerts, Stackdriver Metrics, StatsD, Datadog, Nagios, vSphere Metrics ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ. Има ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ ΠΈ ΠΌΠΎΡ‰Π΅Π½ Π΅Π·ΠΈΠΊ Π·Π° запитвания. Визуализацията Ρ‰Π΅ сС ΠΏΠΎΠ΅ΠΌΠ΅ ΠΎΡ‚ Grafana β€” тя ΠΏΡ€Π΅Π΄Π»Π°Π³Π° голямо количСство Ρ‚Π°Π±Π»Π° Π·Π° ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³, Π½Π°Π»ΠΈΡ‡Π½ΠΈ ΠΎΡ‚ самото Π½Π°Ρ‡Π°Π»ΠΎ. Π’Π΅ са ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρƒ си ΠΈ сравнитСлно лСсни Π·Π° инсталиранС с prometheus-operator.

По ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Prometheus ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΌΠΎΠ΄Π΅Π» Π½Π° ΠΈΠ·Π²Π»ΠΈΡ‡Π°Π½Π΅ /metrics, ΠΈ добавянСто Π½Π° sidecar ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ Π·Π° Ρ‚ΠΎΠ²Π° Π΅ чСсто срСщано явлСниС. Π—Π° съТалСниС, ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈΡ‚Π΅ JMX сС рСгистрират Π½Π°ΠΉ-Π΄ΠΎΠ±Ρ€Π΅ Π²ΡŠΡ‚Ρ€Π΅ Π² JVM, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ sidecar ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅ Π½Π΅ са Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΈ. НСка ΡΠ²ΡŠΡ€ΠΆΠ΅ΠΌ jmx_exporter с ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ ΠΎΡ‚ Prometheus към JVM, ΠΊΠ°Ρ‚ΠΎ Π³ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ към ΠΎΠ±Ρ€Π°Π·Π° Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ прСдостави ΠΏΡŠΡ‚ /metrics Π½Π° Π΄Ρ€ΡƒΠ³ ΠΏΠΎΡ€Ρ‚.

Π”ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ Prometheus jmx_exporter Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°

-- images/camunda-bpm/Dockerfile
FROM camunda/camunda-bpm-platform:tomcat-7.11.0

## Add prometheus exporter
RUN wget https://repo1.maven.org/maven2/io/prometheus/jmx/
jmx_prometheus_javaagent/0.11.0/jmx_prometheus_javaagent-0.11.0.jar -P lib/
#9404 is the reserved prometheus-jmx port
ENV CATALINA_OPTS -javaagent:lib/
jmx_prometheus_javaagent-0.11.0.jar=9404:/etc/config/prometheus-jmx.yaml

Ами, Ρ‚ΠΎΠ²Π° бСшС лСсно. Π•ΠΊΡΠΏΠΎΡ€Ρ‚Π΅Ρ€ΡŠΡ‚ Ρ‰Π΅ наблюдава tomcat ΠΈ Ρ‰Π΅ ΠΏΠΎΠΊΠ°Π·Π²Π° Π½Π΅Π³ΠΎΠ²ΠΈΡ‚Π΅ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Prometheus Π½Π° адрСс :9404/metrics

Настройка Π½Π° СкспортСра

Π’Π½ΠΈΠΌΠ°Ρ‚Π΅Π»Π΅Π½ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π» ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π·Π°ΠΏΠΈΡ‚Π°, ΠΎΡ‚ΠΊΡŠΠ΄Π΅ Π΄ΠΎΠΉΠ΄Π΅ prometheus-jmx.yaml? БущСствуСт ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π½Ρ‹Ρ… Π²Π΅Ρ‰Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² JVM, ΠΈ tomcat β€” это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· Π½ΠΈΡ…, поэтому экспортСр нуТдаСтся Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ настройкС. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ для tomcat, wildfly, kafka ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅ доступны Ρ‚ΡƒΠΊ.. Π©Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ tomcat ΠΊΠ°Ρ‚ΠΎ ConfigMap Π² Kubernetes ΠΈ слСд Ρ‚ΠΎΠ²Π° Ρ‰Π΅ Π³ΠΎ ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°ΠΌΠ΅ ΠΊΠ°Ρ‚ΠΎ Ρ‚ΠΎΠΌ.

ΠŸΡŠΡ€Π²ΠΎ, добавямС Ρ„Π°ΠΉΠ»Π° Π·Π° конфигурация Π½Π° СкспортСра Π² Π½Π°ΡˆΠ°Ρ‚Π° дирСктория platform/config/

ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°/конфигурация
└── prometheus-jmx.yaml

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° добавямС ConfigMapGenerator Π² kustomization.yaml.tmpl:

-- platform/kustomization.yaml.tmpl
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
[...]
configMapGenerator:
- name: config
Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅:
- config/prometheus-jmx.yaml

Π’ΠΎΠ²Π° Ρ‰Π΅ Π΄ΠΎΠ±Π°Π²ΠΈ всСки Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ files[] ΠΊΠ°Ρ‚ΠΎ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ Π½Π° конфигурация ConfigMap. ConfigMapGenerators са ΠΏΠΎΠ»Π΅Π·Π½ΠΈ, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Ρ…Π΅ΡˆΠΈΡ€Π°Ρ‚ Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π² конфигурацията ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€Π°Ρ‚ рСстартиранС Π½Π° ΠΏΠΎΠ΄Π°, Π°ΠΊΠΎ сС промСнят. Π’Π΅ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° намаляват ΠΎΠ±Π΅ΠΌΠ° Π½Π° конфигурацията Π² Deployment, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Ρ‚Π΅ цялата β€žΠΏΠ°ΠΏΠΊΠ°β€œ с ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π² Π΅Π΄ΠΈΠ½ VolumeMount.

Накрая, трябва Π΄Π° ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°ΠΌΠ΅ ConfigMap ΠΊΠ°Ρ‚ΠΎ Ρ‚ΠΎΠΌ към ΠΏΠΎΠ΄Π°:

-- platform/deployment.yaml
apiVersion: apps/v1
kind: Deployment
[...]
spec:
template:
spec:
[...]
volumes:
- name: config
configMap:
name: config
defaultMode: 0744
containers:
- name: camunda-bpm
volumeMounts:
- mountPath: /etc/config/
name: config
[...]

ΠŸΡ€Π΅ΠΊΡ€Π°ΡΠ½ΠΎ. Ако Prometheus Π½Π΅ Π΅ настроСн Π·Π° пълно изчистванС, ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½Π°Π»ΠΎΠΆΠΈ Π΄Π° ΠΌΡƒ ΠΊΠ°ΠΆΠ΅Ρ‚Π΅ Π΄Π° изчисти ΠΏΠΎΠ΄ΠΎΠ²Π΅Ρ‚Π΅. ΠŸΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ Π½Π° Prometheus Operator ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ service-monitor.yaml Π·Π° Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ‚. Π˜Π·ΡΠ»Π΅Π΄Π²Π°ΠΉΡ‚Π΅ Service-monitor.yaml, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅Π½ Π΄ΠΈΠ·Π°ΠΉΠ½ ΠΈ ServiceMonitorSpec ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈΡ‚Π΅.

РазпространСниС Π½Π° Ρ‚ΠΎΠ·ΠΈ шаблон към Π΄Ρ€ΡƒΠ³ΠΈ случаи Π½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°

Всички Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, ΠΊΠΎΠΈΡ‚ΠΎ добавямС Π² ConfigMapGenerator, Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΈ Π² Π½ΠΎΠ²Π°Ρ‚Π° дирСктория /etc/config. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Ρ€Π°Π·ΡˆΠΈΡ€ΠΈΡ‚Π΅ Ρ‚ΠΎΠ·ΠΈ шаблон Π·Π° ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° всякакви Π΄Ρ€ΡƒΠ³ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΡ€ΠΈ Π΄Π° ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Ρ‚Π΅ Π½ΠΎΠ² скрипт Π·Π° стартиранС. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ subPath Π·Π° ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅. Π—Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° xml Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, обмислСтС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° xmlstarlet вмСсто sed. Π’ΠΎΠΉ Π²Π΅Ρ‡Π΅ Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² ΠΎΠ±Ρ€Π°Π·Π°.

Π›ΠΎΠ³Π°

ΠžΡ‚Π»ΠΈΡ‡Π½ΠΈ Π½ΠΎΠ²ΠΈΠ½ΠΈ! Π›ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° прилоТСнията Π²Π΅Ρ‡Π΅ са Π½Π°Π»ΠΈΡ‡Π½ΠΈ Π½Π° stdout, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° kubectl logs. Fluentd (Ρ‚ΠΎΠΉ Π΅ инсталиран ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π² GKE) Ρ‰Π΅ прСнасочи Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅ Π²ΠΈ Π² Elasticsearch, Loki ΠΈΠ»ΠΈ Π½Π° Π²Π°ΡˆΠ°Ρ‚Π° ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π·Π° Π»ΠΎΠ³ΠΎΠ²Π΅. Ако искатС Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ jsonify Π·Π° Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° слСдватС прСдоставСния ΠΏΠΎ-Π³ΠΎΡ€Π΅ шаблон Π·Π° инсталиранС logback.

Π‘Π°Π·Π° Π΄Π°Π½Π½ΠΈ.

По ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ ΠΎΠ±Ρ€Π°Π·ΡŠΡ‚ Ρ‰Π΅ ΠΈΠΌΠ° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ H2. Π’ΠΎΠ²Π° Π½Π΅ Π½ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠΆΠ΄Π° ΠΈ Ρ‰Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Google Cloud SQL с Cloud SQL Proxy β€” Ρ‚ΠΎΠ²Π° Ρ‰Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎ-късно Π·Π° Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ. Π’ΠΎΠ²Π° Π΅ прост ΠΈ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, Π°ΠΊΠΎ няматС собствСни прСдпочитания Π·Π° настройка Π½Π° Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ. AWS RDS ΠΏΡ€Π΅Π΄Π»Π°Π³Π° Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Π° услуга.

НСзависимо ΠΎΡ‚ ΠΈΠ·Π±Ρ€Π°Π½Π°Ρ‚Π° ΠΎΡ‚ вас Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ, освСн Π°ΠΊΠΎ Π½Π΅ Π΅ H2, Ρ‰Π΅ трябва Π΄Π° Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° срСдата Π² platform/deploy.yaml. Π’ΠΎΠ²Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»Π½ΠΎ Ρ‚Π°ΠΊΠ°:

-- platform/deployment.yaml
apiVersion: apps/v1
kind: Deployment
[...]
spec:
template:
spec:
[...]
containers:
- name: camunda-bpm
env:
- name: DB_DRIVER
value: org.postgresql.Driver
- name: DB_URL
value: jdbc:postgresql://postgres-proxy.db:5432/process-engine
- name: DB_USERNAME
valueFrom:
secretKeyRef:
name: cambpm-db-credentials
key: db_username
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: cambpm-db-credentials
key: db_password
[...]

Π—Π°Π±Π΅Π»Π΅ΠΆΠΊΠ°: ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Kustomize Π·Π° Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½Π΅ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ срСди с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° overlay: ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

Π—Π°Π±Π΅Π»Π΅ΠΆΠΊΠ°: ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ valueFrom: secretKeyRef. Моля, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ Ρ‚Π°Π·ΠΈ функция Π½Π° Kubernetes Π΄ΠΎΡ€ΠΈ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, Π·Π° Π΄Π° Π·Π°ΠΏΠ°Π·ΠΈΡ‚Π΅ Ρ‚Π°ΠΉΠ½ΠΈΡ‚Π΅ си Π² бСзопасност.

ВСроятно Π²Π΅Ρ‡Π΅ ΠΈΠΌΠ°Ρ‚Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π½Π° систСма Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Ρ‚Π°ΠΉΠ½ΠΈ Π² Kubernetes. Ако Π½Π΅, Π΅Ρ‚ΠΎ някои ΠΎΠΏΡ†ΠΈΠΈ: ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π΅ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° KMS Π½Π° вашия ΠΎΠ±Π»Π°Ρ‡Π΅Π½ доставчик ΠΈ слСд Ρ‚ΠΎΠ²Π° внСдряванС Π² K8S ΠΊΠ°Ρ‚ΠΎ Ρ‚Π°ΠΉΠ½ΠΈ Ρ‡Ρ€Π΅Π· CD ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ β€” MozillaSOPS β€” Ρ‰Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±Ρ€Π΅ с Ρ‚Π°ΠΉΠ½ΠΈΡ‚Π΅ Π½Π° Kustomize. Има ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ инструмСнти, ΠΊΠ°Ρ‚ΠΎ dotGPG β€” Ρ‚Π΅ ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: HashiCorp Vault, Kustomize Secret Value Plugins.

Ingress

ОсвСн Π°ΠΊΠΎ Π½Π΅ Ρ€Π΅ΡˆΠΈΡ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ прСнасочванС Π½Π° Π»ΠΎΠΊΠ°Π»Π΅Π½ ΠΏΠΎΡ€Ρ‚, Ρ‰Π΅ Π²ΠΈ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ настроСн Ingress Controller. Ако Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ingress-nginx (Helm ΠΊΠ°Ρ€Ρ‚Π°) вСроятно Π²Π΅Ρ‡Π΅ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Π΅ трябва Π΄Π° Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈΡ‚Π΅ Π°Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Π² ingress-patch.yaml.tmpl ΠΈΠ»ΠΈ platform/ingress.yaml. Ако ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ingress-nginx ΠΈ Π²ΠΈΠΆΠ΄Π°Ρ‚Π΅ nginx ingress клас с балансировчик Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ, ΠΊΠΎΠΉΡ‚ΠΎ сочи към Π½Π΅Π³ΠΎ ΠΈ външСн DNS ΠΈΠ»ΠΈ запис Π·Π° подмяна Π½Π° DNS, всичко Π΅ Π³ΠΎΡ‚ΠΎΠ²ΠΎ. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π΅Π½ случай, ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΠΉΡ‚Π΅ Ingress Controller ΠΈ DNS ΠΈΠ»ΠΈ пропуснСтС Ρ‚Π΅Π·ΠΈ ΡΡ‚ΡŠΠΏΠΊΠΈ ΠΈ оставСтС Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠ° към ΠΏΠΎΠ΄Π°.

TLS

Ако ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ cert-manager ΠΈΠ»ΠΈ kube-lego ΠΈ letsencrypt – сСртификатитС Π·Π° Π½ΠΎΠ²ΠΎΡ‚ΠΎ Π²Π»ΠΈΠ·Π°Π½Π΅ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π΅Π½ случай, ΠΎΡ‚Π²ΠΎΡ€Π΅Ρ‚Π΅ ingress-patch.yaml.tmpl ΠΈ Π³ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΠΉΡ‚Π΅ спорСд потрСбноститС си.

Π‘Ρ‚Π°Ρ€Ρ‚ΠΈΡ€Π°Π½Π΅!

Ако стС сС ΠΏΡ€ΠΈΠ΄ΡŠΡ€ΠΆΠ°Π»ΠΈ към всичко написано ΠΏΠΎ-Π³ΠΎΡ€Π΅, Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° make skaffold HOSTNAME= трябва Π΄Π° стартира Π½Π°Π»ΠΈΡ‡Π΅Π½ инстанс Π½Π° /camunda

Ако Π½Π΅ стС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π»ΠΈ Π²Ρ…ΠΎΠ΄Π° Ρ‡Ρ€Π΅Π· ΠΏΡƒΠ±Π»ΠΈΡ‡Π΅Π½ URL адрСс, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° прСнасочитС с localhost: kubectl port-forward -n camunda-bpm-demo svc/camunda-bpm 8080:8080 Π½Π° localhost:8080/camunda

Π˜Π·Ρ‡Π°ΠΊΠ°ΠΉΡ‚Π΅ няколко ΠΌΠΈΠ½ΡƒΡ‚ΠΈ, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ tomcat Π΅ напълно Π³ΠΎΡ‚ΠΎΠ². Cert-manager Ρ‰Π΅ ΠΎΡ‚Π½Π΅ΠΌΠ΅ извСстно Π²Ρ€Π΅ΠΌΠ΅ Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Π΄ΠΎΠΌΠ΅ΠΉΠ½ ΠΈΠΌΠ΅Ρ‚ΠΎ. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°Π±Π»ΡŽΠ΄Π°Π²Π°Ρ‚Π΅ Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Π½Π°Π»ΠΈΡ‡Π½ΠΈ инструмСнти – ΠΊΠ°Ρ‚ΠΎ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°ΠΊΡŠΠ² инструмСнт ΠΊΠ°ΠΊΡ‚ΠΎ kubetail, ΠΈΠ»ΠΈ просто с kubectl:

kubectl logs -n camunda-bpm-demo $(kubectl get pods -o=name -n camunda-bpm-demo) -f

Π‘Π»Π΅Π΄Π²Π°Ρ‰ΠΈ ΡΡ‚ΡŠΠΏΠΊΠΈ

Авторизация

Π’ΠΎΠ²Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅ сС отнася Π·Π° настройката Π½Π° Camunda BPM, ΠΎΡ‚ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ Π·Π° Kubernetes, Π½ΠΎ Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄Π° сС ΠΎΡ‚Π±Π΅Π»Π΅ΠΆΠΈ, Ρ‡Π΅ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π² REST API аутСнтификацията Π΅ Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π°. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ основната аутСнтификация ΠΈΠ»ΠΈ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Π΄Ρ€ΡƒΠ³ ΠΌΠ΅Ρ‚ΠΎΠ΄, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ JWT. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ configmaps ΠΈ ΠΎΠ±Π΅ΠΌΠΈ Π·Π° Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° xml, ΠΈΠ»ΠΈ xmlstarlet (Π²ΠΈΠΆΡ‚Π΅ ΠΏΠΎ-Π³ΠΎΡ€Π΅) Π·Π° Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€Π°Π½Π΅ Π½Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π² ΠΎΠ±Ρ€Π°Π·Π°, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ ΠΈΠ»ΠΈ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ wget, ΠΈΠ»ΠΈ Π΄Π° Π³ΠΈ Π·Π°Ρ€Π΅Π΄ΠΈΡ‚Π΅ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° init ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΈ сподСлСн ΠΎΠ±Π΅ΠΌ.

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° сСсиитС

ΠšΠ°ΠΊΡ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈ прилоТСния, Camunda BPM ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° сСсиитС Π² JVM, Ρ‚Π°ΠΊΠ° Ρ‡Π΅, Π°ΠΊΠΎ искатС Π΄Π° стартиратС няколко Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ sticky sessions (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π° ingress-nginx), ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‚, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ‚Π° Π½Π΅ ΠΈΠ·Ρ‡Π΅Π·Π½Π΅, ΠΈΠ»ΠΈ Π΄Π° Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° Max-Age Π·Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ‚Π΅ с бисквитки. ΠšΠ°Ρ‚ΠΎ ΠΏΠΎ-Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅ Session Manager Π² Tomcat. Ларс ΠΈΠΌΠ° ΠΎΡ‚Π΄Π΅Π»Π΅Π½ пост ΠΏΠΎ Ρ‚Π°Π·ΠΈ Ρ‚Π΅ΠΌΠ°, Π½ΠΎ Π½Π΅Ρ‰ΠΎ ΠΎΡ‚ Ρ€ΠΎΠ΄Π° Π½Π°:

wget http://repo1.maven.org/maven2/de/javakaffee/msm/memcached-session-manager/
2.3.2/memcached-session-manager-2.3.2.jar -P lib/ &&
wget http://repo1.maven.org/maven2/de/javakaffee/msm/memcached-session-manager-tc9/
2.3.2/memcached-session-manager-tc9-2.3.2.jar -P lib/ &&

sed -i '/^/i
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="redis://redis-proxy.db:22121"
sticky="false"
sessionBackupAsync="false"
storageKeyPrefix="context"
lockingMode="auto"
/>' conf/context.xml

Π—Π°Π±Π΅Π»Π΅ΠΆΠΊΠ°: ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ xmlstarlet вмСсто sed

Π˜Π·ΠΏΠΎΠ»Π·Π²Π°Ρ…ΠΌΠ΅ twemproxy ΠΏΡ€Π΅Π΄ Google Cloud Memorystore, с memcached-session-manager (ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° Redis) Π·Π° Π½Π΅Π³ΠΎΠ²ΠΎΡ‚ΠΎ изпълнСниС.

ΠœΠ°Ρ‰Π°Π±ΠΈΡ€Π°Π½Π΅

Ако Π²Π΅Ρ‡Π΅ стС Ρ€Π°Π·Π±Ρ€Π°Π»ΠΈ сСсиитС, Ρ‚ΠΎ ΠΏΡŠΡ€Π²ΠΎΡ‚ΠΎ (ΠΈ чСсто послСдно) ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π·Π° ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Π½Π΅ Π½Π° Camunda BPM ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅Ρ‚ΠΎ към Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ. Частична настройка Π΅ Π½Π°Π»ΠΈΡ‡Π½Π° Π²Π΅Ρ‡Π΅ "извън кутията". Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Ρ‰Π΅ ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈΠΌ initialSize Π² Ρ„Π°ΠΉΠ»Π° settings.xml. Π”ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ HorizontalPodAutoscaler (HPA) ΠΈ лСсно Ρ‰Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π΄Π° ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Ρ‚Π΅ броя Π½Π° ΠΏΠΎΠ΄ΠΎΠ²Π΅Ρ‚Π΅.

Запитвания ΠΈ ограничСния

Π’ platform/deployment.yaml Ρ‰Π΅ Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Π΅ смС Π·Π°Π΄Π°Π²Π°Π»ΠΈ стриктно ΠΏΠΎΠ»Π΅Ρ‚ΠΎ рСсурси. Π’ΠΎΠ²Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ Π΄ΠΎΠ±Ρ€Π΅ с HPA, Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° изисква Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° настройка. Π—Π° Ρ‚ΠΎΠ²Π° ΠΏΠΎΠ΄Ρ…ΠΎΠΆΠ΄Π° ΠΏΠ°Ρ‚Ρ‡ kustomize. Π’ΠΈΠΆΡ‚Π΅ ingress-patch.yaml.tmpl ΠΈ ./kustomization.yaml.tmpl

Извод

Π•Ρ‚ΠΎ, инсталирахмС Camunda BPM Π½Π° Kubernetes с ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ Prometheus, Π»ΠΎΠ³ΠΎΠ²Π΅, Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ H2, TLS ΠΈ Ingress. Π”ΠΎΠ±Π°Π²ΠΈΡ…ΠΌΠ΅ jar Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ConfigMaps ΠΈ Dockerfile. Π“ΠΎΠ²ΠΎΡ€ΠΈΡ…ΠΌΠ΅ Π·Π° ΠΎΠ±ΠΌΠ΅Π½ Π½Π° Π΄Π°Π½Π½ΠΈ с Ρ‚ΠΎΠΌΠΎΠ²Π΅ ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π² ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° срСдата ΠΎΡ‚ сСкрСти. ОсвСн Ρ‚ΠΎΠ²Π° прСдоставихмС ΠΏΡ€Π΅Π³Π»Π΅Π΄ Π½Π° настройката Π½Π° Camunda Π·Π° няколко Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ ΠΈ Π°Π²Ρ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½ API.

Π’Ρ€ΡŠΠ·ΠΊΠΈ

github.com/camunda-cloud/camunda-examples/camunda-bpm-kubernetes
β”‚
β”œβ”€β”€ generated-manifest.yaml <- манифСст Π·Π° ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π±Π΅Π· kustomize
β”œβ”€β”€ изобраТСния
β”‚ └── camunda-bpm
β”‚ └── Dockerfile <- overlay docker ΠΎΠ±Ρ€Π°Π·
β”œβ”€β”€ ingress-patch.yaml.tmpl <- конфигурация Π½Π° ingress, спСцифична Π·Π° сайта
β”œβ”€β”€ kustomization.yaml.tmpl <- основСн Kustomization
β”œβ”€β”€ Makefile <- Ρ†Π΅Π»ΠΈ Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅
β”œβ”€β”€ namespace.yaml
β”œβ”€β”€ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°
β”‚ β”œβ”€β”€ конфигурация
β”‚ β”‚ └── prometheus-jmx.yaml <- ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π΅Π½ Ρ„Π°ΠΉΠ» Π·Π° СкспортСр Π½Π° prometheus
β”‚ β”œβ”€β”€ deployment.yaml <- основно Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½Π΅
β”‚ β”œβ”€β”€ ingress.yaml
β”‚ β”œβ”€β”€ kustomization.yaml <- "основСн" kustomization
β”‚ β”œβ”€β”€ service-monitor.yaml <- ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½Π° конфигурация Π½Π° prometheus-operator
β”‚ └── service.yaml
└── skaffold.yaml.tmpl <- Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΈ Π½Π° skaffold

05.08.2020 Π³., ΠΏΡ€Π΅Π²ΠΎΠ΄ Π½Π° статията Alastair Firth, Lars Lange

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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster