ИзпълнСниС на Camunda BPM на Kubernetes

ИзпълнСниС на Camunda BPM на Kubernetes

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

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

Автори

  • ΠΠ»Π°ΡΡ‚ΡŠΡ€ Π€ΡŠΡ€Ρ‚ (ΠΠ»Π°ΡΡ‚ΡŠΡ€ Π€ΡŠΡ€Ρ‚) – ΡΡ‚Π°Ρ€ΡˆΠΈ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ ΠΏΠΎ надСТдност Π½Π° сайта Π² Π΅ΠΊΠΈΠΏΠ° Π½Π° Camunda Cloud;
  • Ларс Π›Π°Π½Π³Π΅ (Ларс Π›Π°Π½Π³Π΅) – DevOps ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ Π² Camunda.

Накратко:

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

Π”ΠΎΠ±Ρ€Π΅, вСроятно Π½Π΅ Π΅ ΠΏΡ€ΠΎΡ€Π°Π±ΠΎΡ‚ΠΈΠ»ΠΎ, Π·Π°Ρ‰ΠΎΡ‚ΠΎ няматС инсталирани скСлС ΠΈ пСрсонализиранС. Ами Ρ‚ΠΎΠ³Π°Π²Π° ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅!

Какво С Camunda BPM

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

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

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

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

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

Ρ†Π΅Π»ΠΈ

НСка Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ няколко области, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° пСрсонализирамС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Camunda BPM Docker (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 ID Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° във Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ‚Π΅ *.yaml.tmpl. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π² makefile ΠΈΠ»ΠΈ просто ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ΅Ρ‚Π΅ ΠΏΠΎ-Π½Π°Ρ‚Π°Ρ‚ΡŠΠΊ.

ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΈ

  • Π Π°Π±ΠΎΡ‚Π΅Π½ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ Kubernetes
  • ΠŸΠ΅Ρ€ΡΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅
  • Π‘ΠΊΠ΅Π»Π΅ - Π·Π° създаванС Π½Π° ваши собствСни Π΄ΠΎΠΊΠ΅Ρ€ изобраТСния ΠΈ лСсно внСдряванС Π² GKE
  • КопиС Π½Π° Ρ‚ΠΎΠ·ΠΈ ΠΊΠΎΠ΄
  • Envsubst

Π Π°Π±ΠΎΡ‚Π΅Π½ процСс с ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° манифСсти

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

Π”Π½Π΅Π²Π½ΠΈΡ†ΠΈ ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ

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

По ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Prometheus ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΌΠΎΠ΄Π΅Π»Π° Π·Π° ΠΈΠ·Π²Π»ΠΈΡ‡Π°Π½Π΅ <service>/metrics, ΠΈ добавянСто Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ с кош Π·Π° Ρ‚ΠΎΠ²Π° Π΅ ΠΎΠ±ΠΈΡ‡Π°ΠΉΠ½ΠΎ. Π—Π° съТалСниС JMX ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈΡ‚Π΅ сС рСгистрират Π½Π°ΠΉ-Π΄ΠΎΠ±Ρ€Π΅ Π² JVM, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅ с кошовС Π½Π΅ са Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΈ. НСка сС ΡΠ²ΡŠΡ€ΠΆΠ΅ΠΌ 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 Π½Π° <svc>:9404/metrics

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

ВниматСлният Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π» ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π·Π°Ρ‡ΡƒΠ΄ΠΈ ΠΎΡ‚ΠΊΡŠΠ΄Π΅ Π΅ дошло prometheus-jmx.yaml? Има ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π½Π΅Ρ‰Π°, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° работят Π² JVM, ΠΈ tomcat Π΅ само Π΅Π΄Π½ΠΎ ΠΎΡ‚ тях, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° Π·Π° СкспортиранС сС Π½ΡƒΠΆΠ΄Π°Π΅ ΠΎΡ‚ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° конфигурация. ΠŸΡ€Π΅Π΄Π»Π°Π³Π°Ρ‚ сС стандартни ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π·Π° tomcat, wildfly, kafka ΠΈ Ρ‚.Π½ Ρ‚ΡƒΠΊ. Π©Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ tomcat ΠΊΠ°Ρ‚ΠΎ ConfigMap Π² Kubernetes ΠΈ слСд Ρ‚ΠΎΠ²Π° Π³ΠΎ ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΊΠ°Ρ‚ΠΎ ΠΎΠ±Π΅ΠΌ.

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

platform/config
└── prometheus-jmx.yaml

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

-- platform/kustomization.yaml.tmpl
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
[...] configMapGenerator:
- name: config
files:
- 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. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Ρ€Π°Π·ΡˆΠΈΡ€ΠΈΡ‚Π΅ Ρ‚ΠΎΠ·ΠΈ шаблон, Π·Π° Π΄Π° ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Ρ‚Π΅ всички Π΄Ρ€ΡƒΠ³ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, ΠΎΡ‚ ΠΊΠΎΠΈΡ‚ΠΎ сС Π½ΡƒΠΆΠ΄Π°Π΅Ρ‚Π΅. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΡ€ΠΈ Π΄Π° ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Ρ‚Π΅ Π½ΠΎΠ² стартиращ скрипт. МоТСш Π΄Π° използваш ΠΏΠΎΠ΄ΠΏΡŠΡ‚ Π·Π° ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅. Π—Π° Π΄Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ xml Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, обмислСтС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° xmlstarlet вмСсто sed. Π’Π΅Ρ‡Π΅ Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ Π² ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ.

Бписания

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

Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ

По ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Ρ‰Π΅ ΠΈΠΌΠ° 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 Π·Π° внСдряванС Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ срСди с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° наслагванС: ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

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

ВСроятно Π²Π΅Ρ‡Π΅ ΠΈΠΌΠ°Ρ‚Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π½Π° систСма Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Ρ‚Π°ΠΉΠ½ΠΈΡ‚Π΅ Π½Π° Kubernetes. Ако Π½Π΅, Π΅Ρ‚ΠΎ някои ΠΎΠΏΡ†ΠΈΠΈ: Π¨ΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π΅ с KMS Π½Π° вашия доставчик Π½Π° ΠΎΠ±Π»Π°ΠΊ ΠΈ слСд Ρ‚ΠΎΠ²Π° ΠΈΠ½ΠΆΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½Π΅ Π² K8S ΠΊΠ°Ρ‚ΠΎ Ρ‚Π°ΠΉΠ½ΠΈ Ρ‡Ρ€Π΅Π· Ρ‚Ρ€ΡŠΠ±ΠΎΠΏΡ€ΠΎΠ²ΠΎΠ΄Π° Π½Π° CD βˆ’ Mozilla SOPS - Ρ‰Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±Ρ€Π΅ Π² комбинация с Ρ‚Π°ΠΉΠ½ΠΈΡ‚Π΅ Π½Π° Kustomize. Има ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ инструмСнти, ΠΊΠ°Ρ‚ΠΎ dotGPG, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: HashiCorp Vault, ΠŸΠ΅Ρ€ΡΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡ€Π°ΠΉΡ‚Π΅ приставкитС Π·Π° Ρ‚Π°ΠΉΠ½Π° стойност.

Π’Π»ΠΈΠ·Π°Π½Π΅

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

TLS

Ако ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ CERT-ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ ΠΈΠ»ΠΈ kube-lego ΠΈ letsencrypt - сСртификатитС Π·Π° Π½ΠΎΠ²ΠΎΡ‚ΠΎ Π²Π»ΠΈΠ·Π°Π½Π΅ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π΅Π½ случай ΠΎΡ‚Π²ΠΎΡ€Π΅Ρ‚Π΅ ingress-patch.yaml.tmpl ΠΈ Π³ΠΎ пСрсонализирайтС, Π·Π° Π΄Π° отговаря Π½Π° Π²Π°ΡˆΠΈΡ‚Π΅ Π½ΡƒΠΆΠ΄ΠΈ.

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

Ако стС слСдвали всичко написано ΠΏΠΎ-Π³ΠΎΡ€Π΅, Ρ‚ΠΎΠ³Π°Π²Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° make skaffold HOSTNAME=<you.example.com> трябва Π΄Π° стартира Π½Π°Π»ΠΈΡ‡Π΅Π½ СкзСмпляр Π² <hostname>/camunda

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

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

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

Π‘Π»Π΅Π΄Π²Π°Ρ‰ΠΈ шаги

Π£ΠΏΡŠΠ»Π½ΠΎΠΌΠΎΡ‰Π°Π²Π°Π½Π΅

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

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

Подобно Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈ прилоТСния, Camunda BPM ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° сСсии Π² JVM, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π°ΠΊΠΎ искатС Π΄Π° стартиратС мноТСство Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ Π»Π΅ΠΏΠΊΠ°Π²ΠΈ сСсии (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° 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 '/^</Context>/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-ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ Π½Π° сСсии (ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° Redis), Π·Π° Π΄Π° Π³ΠΎ стартиратС.

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

Ако Π²Π΅Ρ‡Π΅ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚Π΅ сСсиитС, Ρ‚ΠΎΠ³Π°Π²Π° ΠΏΡŠΡ€Π²ΠΎΡ‚ΠΎ (ΠΈ чСсто послСдното) ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π·Π° ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Π½Π΅ Π½Π° Camunda BPM ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π° с Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ. Π’Π΅Ρ‡Π΅ Π΅ Π½Π°Π»ΠΈΡ†Π΅ частично пСрсонализиранС "ΠΎΡ‚ кутията" НСка ΡΡŠΡ‰ΠΎ Π΄Π° Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°ΠΌΠ΅ intialSize във Ρ„Π°ΠΉΠ»Π° settings.xml. Π”ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ Horizontal Pod Autoscaler (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 <- manifest for use without kustomize
β”œβ”€β”€ images
β”‚ └── camunda-bpm
β”‚ └── Dockerfile <- overlay docker image
β”œβ”€β”€ ingress-patch.yaml.tmpl <- site-specific ingress configuration
β”œβ”€β”€ kustomization.yaml.tmpl <- main Kustomization
β”œβ”€β”€ Makefile <- make targets
β”œβ”€β”€ namespace.yaml
β”œβ”€β”€ platform
β”‚ β”œβ”€β”€ config
β”‚ β”‚ └── prometheus-jmx.yaml <- prometheus exporter config file
β”‚ β”œβ”€β”€ deployment.yaml <- main deployment
β”‚ β”œβ”€β”€ ingress.yaml
β”‚ β”œβ”€β”€ kustomization.yaml <- "base" kustomization
β”‚ β”œβ”€β”€ service-monitor.yaml <- example prometheus-operator config
β”‚ └── service.yaml
└── skaffold.yaml.tmpl <- skaffold directives

05.08.2020 Π³., ΠΏΡ€Π΅Π²ΠΎΠ΄ статии ΠΠ»Π°ΡΡ‚ΡŠΡ€ Π€ΡŠΡ€Ρ‚, Ларс Π›Π°Π½Π³Π΅

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

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€