
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Kubernetes? ΠΠΎΡΠΎΠ²ΠΈ Π»ΠΈ ΡΡΠ΅ Π΄Π° ΠΏΡΠ΅ΠΌΠ΅ΡΡΠΈΡΠ΅ Π²Π°ΡΠΈΡΠ΅ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΠΈ Π½Π° Camunda BPM ΠΎΡ Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ Π΄Π° ΠΎΠΏΠΈΡΠ°ΡΠ΅ Π΄Π° Π³ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ Π½Π° Kubernetes? ΠΠ΅ΠΊΠ° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π½ΡΠΊΠΎΠΈ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΈ ΠΎΡΠ΄Π΅Π»Π½ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π°Π΄Π°ΠΏΡΠΈΡΠ°Π½ΠΈ ΠΊΡΠΌ Π²Π°ΡΠΈΡΠ΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΈ Π½ΡΠΆΠ΄ΠΈ.
ΠΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π° ΡΠ΅, ΡΠ΅ Π²Π΅ΡΠ΅ ΡΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π»ΠΈ Kubernetes. ΠΠΊΠΎ Π½Π΅, Π·Π°ΡΠΎ Π½Π΅ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ Π² ΠΈ Π½Π΅ ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ Π²Π°ΡΠΈΡ ΠΏΡΡΠ²ΠΈ ΠΊΠ»ΡΡΡΠ΅Ρ?
ΠΠ²ΡΠΎΡΠΈ
- (Alastair Firth) Π΅ ΡΡΠ°ΡΡΠΈ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ ΠΏΠΎ Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎΡΡ Π½Π° ΡΠ°ΠΉΡΠ° (Site Reliability Engineer) Π² Π΅ΠΊΠΈΠΏΠ° Π½Π° Camunda Cloud;
- (Lars Lange) Π΅ DevOps ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ Π² Camunda.
Π ΠΊΡΠ°ΡΡΠ΅:
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 (), Π·Π° Π΄Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²Π°Ρ Π΄ΠΎΠ±ΡΠ΅ Ρ Kubernetes.
- ΠΠΎΠ³ΠΎΠ²Π΅ ΠΈ ΠΌΠ΅ΡΡΠΈΠΊΠΈ;
- Π‘Π²ΡΡΠ·ΠΊΠΈ Ρ Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ;
- ΠΡΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡ;
- Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅ΡΠΈΠΈ.
ΠΠΈΠ΅ ΡΠ΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π½Π°ΡΠΈΠ½Π° Π·Π° ΠΏΠΎΡΡΠΈΠ³Π°Π½Π΅ Π½Π° ΡΠ΅Π·ΠΈ ΡΠ΅Π»ΠΈ ΠΈ Π½Π°ΠΎΡΠΎ ΡΠ΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ ΡΠ΅Π»ΠΈΡ ΠΏΡΠΎΡΠ΅Ρ.
ΠΠ°Π±Π΅Π»Π΅ΠΆΠΊΠ°: ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π»ΠΈ Π²Π΅ΡΡΠΈΡ 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 ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ΅ΡΠ΅ Π½Π°ΠΏΡΠ΅Π΄.
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡ
- Π Π°Π±ΠΎΡΠ΅Π½ ΠΊΠ»ΡΡΡΠ΅Ρ
- β Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈ Docker ΠΎΠ±ΡΠ°Π·ΠΈ ΠΈ Π»Π΅ΡΠ½ΠΎ ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅ Π² GKE
- ΠΠΎΠΏΠΈΠ΅ Π½Π° ΡΠΎΠ·ΠΈ ΠΊΠΎΠ΄
- Envsubst
Π Π°Π±ΠΎΡΠ΅Π½ ΠΏΠΎΡΠΎΠΊ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠΈΡΠ΅
ΠΠΊΠΎ Π½Π΅ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ kustomize ΠΈΠ»ΠΈ skaffold, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ ΠΎΠ±ΡΡΠ½Π΅ΡΠ΅ ΠΊΡΠΌ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠΈΡΠ΅ Π² generated-manifest.yaml ΠΈ Π΄Π° Π³ΠΈ Π°Π΄Π°ΠΏΡΠΈΡΠ°ΡΠ΅ ΠΊΡΠΌ ΡΠ°Π±ΠΎΡΠ½ΠΈΡ ΠΏΠΎΡΠΎΠΊ ΠΏΠΎ Π²Π°ΡΠ΅ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅.
ΠΠΎΠ³ΠΎΠ²Π΅ ΠΈ ΠΌΠ΅ΡΡΠΈΠΊΠΈ
Prometheus ΡΡΠ°Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡ Π·Π° ΡΡΠ±ΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΠ΅ΡΡΠΈΠΊΠΈ Π² Kubernetes. Π’ΠΎΠΉ Π·Π°Π΅ΠΌΠ° ΡΡΡΠΎΡΠΎ ΠΌΡΡΡΠΎ ΠΊΠ°ΡΠΎ AWS Cloudwatch Metrics, Cloudwatch Alerts, Stackdriver Metrics, StatsD, Datadog, Nagios, vSphere Metrics ΠΈ Π΄ΡΡΠ³ΠΈ. ΠΠΌΠ° ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ ΠΈ ΠΌΠΎΡΠ΅Π½ Π΅Π·ΠΈΠΊ Π·Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ. ΠΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° ΡΠ΅ ΡΠ΅ ΠΏΠΎΠ΅ΠΌΠ΅ ΠΎΡ Grafana β ΡΡ ΠΏΡΠ΅Π΄Π»Π°Π³Π° Π³ΠΎΠ»ΡΠΌΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π±Π»Π° Π·Π° ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³, Π½Π°Π»ΠΈΡΠ½ΠΈ ΠΎΡ ΡΠ°ΠΌΠΎΡΠΎ Π½Π°ΡΠ°Π»ΠΎ. Π’Π΅ ΡΠ° ΡΠ²ΡΡΠ·Π°Π½ΠΈ ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈ ΠΈ ΡΡΠ°Π²Π½ΠΈΡΠ΅Π»Π½ΠΎ Π»Π΅ΡΠ½ΠΈ Π·Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Ρ .
ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Prometheus ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΌΠΎΠ΄Π΅Π» Π½Π° ΠΈΠ·Π²Π»ΠΈΡΠ°Π½Π΅ /metrics, ΠΈ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ΡΠΎ Π½Π° sidecar ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ Π·Π° ΡΠΎΠ²Π° Π΅ ΡΠ΅ΡΡΠΎ ΡΡΠ΅ΡΠ°Π½ΠΎ ΡΠ²Π»Π΅Π½ΠΈΠ΅. ΠΠ° ΡΡΠΆΠ°Π»Π΅Π½ΠΈΠ΅, ΠΌΠ΅ΡΡΠΈΠΊΠΈΡΠ΅ JMX ΡΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ°Ρ Π½Π°ΠΉ-Π΄ΠΎΠ±ΡΠ΅ Π²ΡΡΡΠ΅ Π² JVM, ΡΠ°ΠΊΠ° ΡΠ΅ sidecar ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΡΠ΅ Π½Π΅ ΡΠ° ΡΠΎΠ»ΠΊΠΎΠ²Π° Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΈ. ΠΠ΅ΠΊΠ° ΡΠ²ΡΡΠΆΠ΅ΠΌ Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ ΠΎΡ 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 ΠΊΠ°ΡΠΎ Π² Kubernetes ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ Π³ΠΎ ΠΌΠΎΠ½ΡΠΈΡΠ°ΠΌΠ΅ ΠΊΠ°ΡΠΎ ΡΠΎΠΌ.
ΠΡΡΠ²ΠΎ, Π΄ΠΎΠ±Π°Π²ΡΠΌΠ΅ ΡΠ°ΠΉΠ»Π° Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π½Π° Π΅ΠΊΡΠΏΠΎΡΡΠ΅ΡΠ° Π² Π½Π°ΡΠ°ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ platform/config/
ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°/ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ
βββ prometheus-jmx.yaml
Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° Π΄ΠΎΠ±Π°Π²ΡΠΌΠ΅ Π² 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, ΠΈ ΠΏΡΠ΅Π΄ΠΈ Π΄Π° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈΡΠ΅.
Π Π°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° ΡΠΎΠ·ΠΈ ΡΠ°Π±Π»ΠΎΠ½ ΠΊΡΠΌ Π΄ΡΡΠ³ΠΈ ΡΠ»ΡΡΠ°ΠΈ Π½Π° ΡΠΏΠΎΡΡΠ΅Π±Π°
ΠΡΠΈΡΠΊΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ Π΄ΠΎΠ±Π°Π²ΡΠΌΠ΅ Π² ConfigMapGenerator, ΡΠ΅ Π±ΡΠ΄Π°Ρ Π΄ΠΎΡΡΡΠΏΠ½ΠΈ Π² Π½ΠΎΠ²Π°ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ /etc/config. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ°Π·ΡΠΈΡΠΈΡΠ΅ ΡΠΎΠ·ΠΈ ΡΠ°Π±Π»ΠΎΠ½ Π·Π° ΠΌΠΎΠ½ΡΠΈΡΠ°Π½Π΅ Π½Π° Π²ΡΡΠΊΠ°ΠΊΠ²ΠΈ Π΄ΡΡΠ³ΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΡΠΈ Π΄Π° ΠΌΠΎΠ½ΡΠΈΡΠ°ΡΠ΅ Π½ΠΎΠ² ΡΠΊΡΠΈΠΏΡ Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π·Π° ΠΌΠΎΠ½ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅. ΠΠ° Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° xml ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΠΎΠ±ΠΌΠΈΡΠ»Π΅ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π²ΠΌΠ΅ΡΡΠΎ 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 Π·Π° ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΡΠ΅Π΄ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° overlay: .
ΠΠ°Π±Π΅Π»Π΅ΠΆΠΊΠ°: ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ valueFrom: secretKeyRef. ΠΠΎΠ»Ρ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ Π΄ΠΎΡΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°, Π·Π° Π΄Π° Π·Π°ΠΏΠ°Π·ΠΈΡΠ΅ ΡΠ°ΠΉΠ½ΠΈΡΠ΅ ΡΠΈ Π² Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ.
ΠΠ΅ΡΠΎΡΡΠ½ΠΎ Π²Π΅ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ°ΠΉΠ½ΠΈ Π² Kubernetes. ΠΠΊΠΎ Π½Π΅, Π΅ΡΠΎ Π½ΡΠΊΠΎΠΈ ΠΎΠΏΡΠΈΠΈ: ΡΠΈΡΡΠΎΠ²Π°Π½Π΅ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° KMS Π½Π° Π²Π°ΡΠΈΡ ΠΎΠ±Π»Π°ΡΠ΅Π½ Π΄ΠΎΡΡΠ°Π²ΡΠΈΠΊ ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π² K8S ΠΊΠ°ΡΠΎ ΡΠ°ΠΉΠ½ΠΈ ΡΡΠ΅Π· CD ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ β β ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±ΡΠ΅ Ρ ΡΠ°ΠΉΠ½ΠΈΡΠ΅ Π½Π° Kustomize. ΠΠΌΠ° ΠΈ Π΄ΡΡΠ³ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ, ΠΊΠ°ΡΠΎ dotGPG β ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ: , .
Ingress
ΠΡΠ²Π΅Π½ Π°ΠΊΠΎ Π½Π΅ ΡΠ΅ΡΠΈΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ²Π°Π½Π΅ Π½Π° Π»ΠΎΠΊΠ°Π»Π΅Π½ ΠΏΠΎΡΡ, ΡΠ΅ Π²ΠΈ Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌ Π½Π°ΡΡΡΠΎΠ΅Π½ Ingress Controller. ΠΠΊΠΎ Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ () Π²Π΅ΡΠΎΡΡΠ½ΠΎ Π²Π΅ΡΠ΅ Π·Π½Π°Π΅ΡΠ΅, ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ Π°Π½ΠΎΡΠ°ΡΠΈΠΈ Π² ingress-patch.yaml.tmpl ΠΈΠ»ΠΈ platform/ingress.yaml. ΠΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ingress-nginx ΠΈ Π²ΠΈΠΆΠ΄Π°ΡΠ΅ nginx ingress ΠΊΠ»Π°Ρ Ρ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊ Π½Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ, ΠΊΠΎΠΉΡΠΎ ΡΠΎΡΠΈ ΠΊΡΠΌ Π½Π΅Π³ΠΎ ΠΈ Π²ΡΠ½ΡΠ΅Π½ DNS ΠΈΠ»ΠΈ Π·Π°ΠΏΠΈΡ Π·Π° ΠΏΠΎΠ΄ΠΌΡΠ½Π° Π½Π° DNS, Π²ΡΠΈΡΠΊΠΎ Π΅ Π³ΠΎΡΠΎΠ²ΠΎ. Π ΠΏΡΠΎΡΠΈΠ²Π΅Π½ ΡΠ»ΡΡΠ°ΠΉ, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΠΉΡΠ΅ Ingress Controller ΠΈ DNS ΠΈΠ»ΠΈ ΠΏΡΠΎΠΏΡΡΠ½Π΅ΡΠ΅ ΡΠ΅Π·ΠΈ ΡΡΡΠΏΠΊΠΈ ΠΈ ΠΎΡΡΠ°Π²Π΅ΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠ½Π° Π²ΡΡΠ·ΠΊΠ° ΠΊΡΠΌ ΠΏΠΎΠ΄Π°.
TLS
ΠΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΈΠ»ΠΈ 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 Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° Π΅ Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π°. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ»ΠΈ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π΄ΡΡΠ³ ΠΌΠ΅ΡΠΎΠ΄, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ . ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ configmaps ΠΈ ΠΎΠ±Π΅ΠΌΠΈ Π·Π° Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ Π½Π° xml, ΠΈΠ»ΠΈ xmlstarlet (Π²ΠΈΠΆΡΠ΅ ΠΏΠΎ-Π³ΠΎΡΠ΅) Π·Π° ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π² ΠΎΠ±ΡΠ°Π·Π°, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΠΈΠ»ΠΈ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ wget, ΠΈΠ»ΠΈ Π΄Π° Π³ΠΈ Π·Π°ΡΠ΅Π΄ΠΈΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° init ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΈ ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ ΠΎΠ±Π΅ΠΌ.
Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅ΡΠΈΠΈΡΠ΅
ΠΠ°ΠΊΡΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Camunda BPM ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° ΡΠ΅ΡΠΈΠΈΡΠ΅ Π² JVM, ΡΠ°ΠΊΠ° ΡΠ΅, Π°ΠΊΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΊΠ»ΡΡΠΈΡΠ΅ sticky sessions (), ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ, Π΄ΠΎΠΊΠ°ΡΠΎ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠ° Π½Π΅ ΠΈΠ·ΡΠ΅Π·Π½Π΅, ΠΈΠ»ΠΈ Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΠ° 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
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΌΠ΅ ΠΏΡΠ΅Π΄ Google Cloud Memorystore, Ρ (ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° Redis) Π·Π° Π½Π΅Π³ΠΎΠ²ΠΎΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅.
ΠΠ°ΡΠ°Π±ΠΈΡΠ°Π½Π΅
ΠΠΊΠΎ Π²Π΅ΡΠ΅ ΡΡΠ΅ ΡΠ°Π·Π±ΡΠ°Π»ΠΈ ΡΠ΅ΡΠΈΠΈΡΠ΅, ΡΠΎ ΠΏΡΡΠ²ΠΎΡΠΎ (ΠΈ ΡΠ΅ΡΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΎ) ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π·Π° ΠΌΠ°ΡΠ°Π±ΠΈΡΠ°Π½Π΅ Π½Π° Camunda BPM ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ΡΠΎ ΠΊΡΠΌ Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ. Π§Π°ΡΡΠΈΡΠ½Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π΅ Π½Π°Π»ΠΈΡΠ½Π° Π²Π΅ΡΠ΅ "". Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠ΅ ΠΈΠ·ΠΊΠ»ΡΡΠΈΠΌ initialSize Π² ΡΠ°ΠΉΠ»Π° settings.xml. ΠΠΎΠ±Π°Π²Π΅ΡΠ΅ ΠΈ Π»Π΅ΡΠ½ΠΎ ΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π΄Π° ΠΌΠ°ΡΠ°Π±ΠΈΡΠ°ΡΠ΅ Π±ΡΠΎΡ Π½Π° ΠΏΠΎΠ΄ΠΎΠ²Π΅ΡΠ΅.
ΠΠ°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ
Π 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
