ááẠKubernetes ááᯠá¡áá¯á¶ážááŒá¯áá±áá«ááá¬ážá áááºá Camunda BPM ááŒá áºáááºáá»á¬ážááᯠvirtual machines áá»á¬ážá០ááœáŸá±á·ááẠá¡áááºááá·áºááŒá áºááŒá®áá¬áž ááá¯á·ááá¯áẠáááºážááá¯á·ááᯠKubernetes ááœááºáᬠá¡áá¯á¶ážááŒá¯ááŒáá·áºáá«á áááºá áá®ážááŒá¬ážááá¯á¡ááºáá»ááºáá»á¬ážááŸáá·áº á¡á¶áááºááœááºáá»ááŒá áºá á±ááá¯ááºáá±á¬ áá¯á¶ááœá²á·á ááºážáá¯á¶á¡áá»áá¯á·ááŸáá·áº áá áºáŠážáá»ááºážá¡áá¬áá»á¬ážááᯠááŒáá·áºááŒáá«á áá¯á·á
áááºááẠKubernetes ááᯠááááºá á¡áá¯á¶ážááŒá¯áá°ážáááºáᯠáá°ááá«áááºá ááá¯ááºáááºáá¬ááá¯á· áááŒáá·áºáá¬áá²á
á á¬áá±ážááá¬áá»á¬áž
Alastair Firth (Alastair Firth) - Camunda Cloud á¡ááœá²á·ááŸá á¡ááŒá®ážáááºážááá¯ááºáá¯á¶ááŒááºá áááºáá»áááŸá¯á¡ááºáá»ááºáá®áá¬Lars Lange (Lars Lange) - Camunda ááŸá DevOps á¡ááºáá»ááºáá®áá¬á
ááá¯ááá¯ááŒá±á¬ááááº:
git clone https://github.com/camunda-cloud/camunda-examples.git
cd camunda-examples/camunda-bpm-demo
make skaffold
á¡áá¯áá±á ááá·áºááœáẠskaffold ááŸáá·áº á áááºááŒáá¯ááºááŒá¯ááŒááºáááºáááºáá¬ážááŒááºáž áááŸááá±á¬ááŒá±á¬áá·áº áááºážááẠá¡áá¯ááºáááŒá áºááá¯ááºáá«á áá±á¬ááºážááŒá® áá«ááᯠáááºáááº!
Camunda BPM ááá¯áá¬áá¬áá²
Camunda BPM ááẠáá¯ááºáááºážá¡áá¯á¶ážááŒá¯áá°áá»á¬ážááŸáá·áº áá±á¬á·ááºáá²ááºáá®ááœááºáá°áá»á¬ážá¡á¬áž áá»áááºáááºáá±ážááá·áº ááœáá·áºáááºážáá±á¬á¡áááºážá¡ááŒá
áºá
á®ážááœá¬ážáá±ážáá¯ááºáááºážá
ááºá
á®áá¶ááá·áºááœá²ááŸá¯ááŸáá·áº áá¯á¶ážááŒááºáá»ááºá¡ááá¯á¡áá»á±á¬ááºáá¯ááºáá±á¬ááºááá·áºááááºáá±á¬ááºážáá
áºáá¯ááŒá
áºáááºá áá°áá»á¬ážá (ááá¯ááºáááá¯) áááºáá±á¬ááºááŸá¯áá»á¬áž ááá¯á·ááá¯áẠáá±á¬á·ááºáá»á¬ážááẠáá±á«ááºážá
ááºááŸáááŸáá¯ááºážááŒááºážááŸáá·áº áá»áááºáááºááŒááºážá¡ááœáẠá¡áá±á¬ááºážáá¯á¶ážááŒá
áºáááºá ááœá²ááŒá¬ážááŒá¬ážáá¬ážáá±á¬á¡áá¯á¶ážááŒá¯ááŸá¯ááá
á¹á
áá»á¬ážá¡ááŒá±á¬ááºážááá¯ááá¯áááºááŸá¯ááá¯ááºáááºá
Kubernetes ááᯠáá¬ááŒá±á¬áá·áº áá¯á¶ážáá¬áá²á
Kubernetes ááẠLinux ááœáẠáá±ááºáá®áá±á¬ á¡ááá®áá±ážááŸááºážáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áááºá¡ááœáẠá á¶áááºááŸááºáá»ááºáá áºáᯠááŒá áºáá¬áááºá áá¬á·ááºáá²ááᯠá¡áá¯áá°ááŒááºážá¡á á¬áž á áá áºáá±á«áºááá¯ááŸá¯áá»á¬ážááŸáá·áº áááºááá¯áá®ááŸáá·áº á¡áá¯ááºááŒá±á¬ááºážááŒááºážááá¯á·ááᯠá á®áá¶ááá·áºááœá²ááẠkernel áá áœááºážáááºááᯠá¡áá¯á¶ážááŒá¯ááŒááºážááŒáá·áºá á áááºáá»áááºááŸáá·áº á áááºáá»áááºááᯠá¡áááºážáá¯á¶ážááŒá áºá¡á±á¬áẠááááºážááááºážáá¬ážáááºá ááá¯á·áá±á¬áºá á¡ááŒá®ážáá¬ážáá¯á¶ážá¡áá»áá¯ážáá¶á á¬ážááœáá·áºááẠá¡ááá®áá±ážááŸááºážá¡á¬ážáá¯á¶ážá¡ááœáẠááá¯á¡ááºáá±á¬ á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááᯠááŒááºáááºáááºááŸááºááẠKubernetes áá±ážááá·áº á ᶠAPI á០áá¬áá±áááá·áºáááº- ááá¯ááŸá±á¬ááºááŸá¯á ááœááºáááºáá»áááºáááºááŸá¯ááŸáá·áº á á±á¬áá·áºááŒáá·áºááŸá¯á áááºážááẠ2020 áá¯ááŸá ẠááœááºáááœáẠ6 ááŸá ẠááŒáá·áºááœá¬ážáᬠáá¯áááá¡ááŒá®ážáá¯á¶áž open source ááá±á¬áá»áẠ(Linux ááŒá®ážáá±á¬ááº) ááŒá áºáá±á¬ááºážááŒá áºááá¯ááºáááºá áááŒá¬áá±ážáá®á áááºážááẠááá¹áá¬áá áºááŸááºážááŸá áá¯ááºáá¯ááºááŸá¯áá¯ááºáááºážááœááºáá»á¬ážá¡ááœáẠá¡áá±ážáá«áá¬áá±á¬ááŒá±á¬áá·áº ááœááºáá²á·ááá·áºááŸá áºá¡áááºážáááºá¡ááœááºáž áá»ááºááŒááºá áœá¬ áááºáá±á¬ááºážáá¯ááºáá±á¬ááºááŒá®ážáá±á¬áẠáááºážááá¯ááºáá±á¬ááºááá¯ááºá áœááºážááᯠáááºááŒáááºá¡á±á¬áẠáááºááŒáœá áœá¬áá¯ááºáá±á¬ááºáá²á·áááºá
Camunda BPM Engine ááẠáá°áá®áá±á¬á¡á á¯á¡áá±ážááœááºáááºáááºáá±áá±á¬ á¡ááŒá¬ážá¡ááºááºáá®áá±ážááŸááºážáá»á¬ážááŸáá·áº á¡ááœááºááá°áá»áááºáááºááá¯ááºááŒá®áž Kubernetes ááẠá¡ááŸááºááááºááá¯á¡ááºááá·áºá¡áá«ááŸáᬠá¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠáá¯ááºáá»á ááááºáá»á¬ážááᯠááá¯ážááŒáŸáá·áºááá¯ááºá á±áááºááŒá áºááŒá®áž Kubernetes ááẠá¡ááœááºáá±á¬ááºážááœááºáá±á¬á¡ááá¯ááºážá¡áá¬ááᯠáá¶á·ááá¯ážáá±ážáá«áááºá
á á±á¬áá·áºááŒáá·áºááŒááºážáá¡áááºá¡ááœá±ážááẠPrometheusá Grafanaá Lokiá Fluentd ááŸáá·áº Elasticsearch áá²á·ááá¯á·áá±á¬ áááááá¬áá»á¬ážááŒáá·áº á¡ááœááºááá¯ážáááºáá±á¬ááºážááœááºááŒá®áž á¡á á¯á¡ááœá²á·áá áºáá¯á¡ááœááºáž á¡áá¯ááºáá¬áááºá¡á¬ážáá¯á¶ážááᯠáááá¯ááŸááŒáá·áºááŸá¯ááá¯ááºá á±áááºááŒá áºáááºá ááá±á·áá»áœááºá¯ááºááá¯á·ááẠPrometheus exporter ááᯠJava Virtual Machine (JVM) ááá¯á· áááºááá¯á·á¡áá±á¬ááºá¡áááºáá±á¬áºááááºááᯠáá±á·áá¬áá«áááºá
áááºááŸááºážáá»ááºáááºážááá¯ááº
Camunda BPM Docker áá¯ááºáá¯á¶ááᯠá
áááºááŒáá¯ááºááŒááºáááºááá¯ááºááá·áº áááºáááºá¡áá»áá¯á·ááᯠááŒáá·áºááŒáá«á
áá¯á· (
- ááŸááºáááºážáá»á¬ážááŸáá·áº ááá¯ááºážáá¬ááŸá¯áá»á¬ážá
- áá±áá¬áá±á·á áºáá»áááºáááºááŸá¯áá»á¬áž;
- Authentication ááá¯;
- á¡ááá¯ááºážá á®áá¶ááá·áºááœá²ááŸá¯á
áá»áœááºá¯ááºááá¯á·ááẠá€áááºááŸááºážáá»ááºáá»á¬ážá¡á±á¬ááºááŒááºááẠáááºážáááºážáá»á¬ážá áœá¬ááᯠááŒáá·áºááŸá¯ááŒá®áž áá¯ááºáááºážá ááºáá áºáá¯áá¯á¶ážááᯠááŸááºážáááºážá áœá¬ááŒááá«áááºá
ááœá±á¬ááá¯: áááºááẠEnterprise áá¬ážááŸááºážááᯠá¡áá¯á¶ážááŒá¯áá±áá«ááá¬ážá ááŒáá·áºááá¯ááº
á¡áá¯ááºá¡ááœá¬ážá¡áá¬ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯
á€ááá¯ááºááŒááœááºá áá»áœááºá¯ááºááá¯á·ááẠGoogle Cloud Build ááá¯á¡áá¯á¶ážááŒá¯á Docker áá¯á¶áá»á¬ážááá¯áááºáá±á¬ááºááẠSkaffold ááá¯á¡áá¯á¶ážááŒá¯áá«áááºá áááºážááœáẠáááááá¬áá»áá¯ážá
á¯á¶ (á¥ááᬠKustomize ááŸáá·áº Helm)á CI ááŸáá·áº áááºáá±á¬ááºáá±ážáááááá¬áá»á¬ážááŸáá·áº á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶áá¶á·ááá¯ážáá±ážáá°áá»á¬ážá¡ááœáẠáá±á¬ááºážááœááºáá±á¬áá¶á·ááá¯ážááŸá¯ááŸááá«áááºá ááᯠskaffold.yaml.tmpl
Google Cloud Build ááŸáá·áº GKE á¡ááœáẠáááºáááºáá»á¬ážáá«áááºááŒá®áž áá¯ááºáá¯ááºááŸá¯á¡ááá·áº á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááᯠáá¯ááºáá±á¬ááºááẠá¡ááœááºááá¯ážááŸááºážáá±á¬áááºážáááºážááᯠáá¶á·ááá¯ážáá±ážáá«áááºá
make skaffold
Dockerfile context ááᯠCloud Build ááœááºáááºáááºááŒá
áºááŒá®ážá áá¯á¶ááá¯áááºáá±á¬ááºááŒá®áž GCR ááœááºááááºážáááºážáááºááŒá
áºááŒá®ážá ááá¯á·áá±á¬áẠmanifests áá»á¬ážááá¯áááºá cluster ááœááºá¡áá¯á¶ážááŒá¯áááºááŒá
áºáááºá áá«á áá¬áá²á make skaffold
ááá¯á·áá±á¬áº Skaffold ááœáẠá¡ááŒá¬ážá¡ááºá¹áá«áááºáá»á¬ážá
áœá¬ááŸááááºá
Kubernetes ááŸá yaml ááá°áá¬áá»á¬ážá¡ááœááºá áá»áœááºá¯ááºááá¯á·ááẠáááºáá®ážáááºá
áºáá
áºáá¯áá¯á¶ážááᯠáááá
á±áá² yaml áááºááá·áºáá»á¬ážááᯠá
á®áá¶ááá·áºááœá²ááẠá
áááºááŒáá¯ááºááŒááºáááºááŸá¯ááᯠá¡áá¯á¶ážááŒá¯áᬠáááºá¡áá¯á¶ážááŒá¯ááœáá·áºáá±ážááẠgit pull --rebase
áá±á¬ááºáááºááá¯ážáááºááŸá¯áá»á¬ážá¡ááœááºá ááᯠáááºážááẠkubectl ááœááºááŸáááŒá®áž ááá¯ááá¯á·áá±á¬ á¡áá¬áá»á¬ážá¡ááœáẠá¡áá±á¬áºáá±áž áá±á¬ááºážááœááºáá«áááºá
*.yaml.tmpl ááá¯ááºáá»á¬ážááœáẠhostname ááŸáá·áº GCP ááá±á¬áá»áẠID ááá¯ááŒáá·áºááẠenvsubst ááá¯á¡áá¯á¶ážááŒá¯áá«áááºá áááºážááœááºáááºáá²á·ááá¯á·á¡áá¯ááºáá¯ááºáááºááá¯áááºááŒáá·áºááŸá¯ááá¯ááºáááºá makefile
áá«ááŸááá¯áẠáá±á¬ááºááẠáááºááœá¬ážáá¯á¶áá«áá²á
ááá¯á¡ááºáá±á¬á¡ááŒá±á¡áá±áá»á¬áž
- á¡áá¯ááºá¡á
á¯á¡ááœá²á·
Kubernetes á áááºááŒáá¯ááºáá¯ááºáá«á áá¶áá»áẠ- ááá·áºááá¯ááºááá¯áẠdocker áá¯á¶áá»á¬ážáááºáá®ážááŒááºážááŸáá·áº GKE ááá¯á· ááœááºáá°á áœá¬á¡áá¯á¶ážááŒá¯ááá¯ááºááŒááºážá- á€áá¯ááºá áááá¹áá°
- Envsubst
áááºáá®ážáááºá áºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á á¡áá¯ááºá¡ááœá¬ážá¡áá¬
kustomize ááá¯á·ááá¯áẠskaffold ááᯠá¡áá¯á¶ážáááŒá¯ááá¯áá«áá manifests áá»á¬ážááᯠááá¯ážáá¬ážááá¯ááºáá«áááºá generated-manifest.yaml
áááºážááá¯á·ááᯠáááºááŸá
áºáááºáᬠá¡áá¯ááºá¡ááœá¬ážá¡áá¬ááŸáá·áº ááá¯ááºáá»á±á¬áá®ááœá±ááŒá
áºá¡á±á¬áẠáá¯ááºáá«á
ááŸááºáááºážáá»á¬ážááŸáá·áº ááá¯ááºážáá¬ááŸá¯áá»á¬áž
Prometheus ááẠKubernetes ááœáẠáááºááá
áºáá»á¬áž á
á¯áá±á¬ááºážááŒááºážá¡ááœáẠá
á¶ááŒá
áºáá¬áááºá áááºážááẠAWS Cloudwatch Metricsá Cloudwatch ááááá±ážáá»ááºáá»á¬ážá Stackdriver Metricsá StatsDá Datadogá Nagiosá vSphere Metrics ááŸáá·áº á¡ááŒá¬ážá¡áá¬áá»á¬ážáá²á·ááá¯á· áá°áá®áá±á¬áááºáááºááᯠááááºážááá¯ááºáá¬ážáááºá áááºážááẠopen source ááŒá
áºááŒá®áž á¡á
áœááºážáááºáá±á¬ query language áá
áºáá¯ááŸááááºá áá»áœááºá¯ááºááá¯á·ááẠGrafana ááᯠá
áááºáá°ážáá¯á¶áá±á¬áºááŒááºážá¡á¬áž á¡ááºááŸááºážáá«ááẠ- áááºážááẠáá±áá¹áá¬á¡ááœááºážá០áááŸáááá¯ááºáá±á¬ áááºááŸáºáá¯ááºá¡áá»á¬ážá¡ááŒá¬ážáá«ááŸááááºá áááºážááá¯á·ááẠáá
áºáá¯ááŸáá·áºáá
áºáá¯áá»áááºáááºáá¬ážááŒá®áž áááºáááºáááºá¡áá±á¬áºáá±ážááœááºáá°áááºá
áá°áááºážá¡á¬ážááŒáá·áº Prometheus ááẠáá¯ááºáá°ááŸá¯áá¯á¶á
á¶ááᯠá¡áá¯á¶ážááŒá¯áááºá <service>/metrics
áááºážá¡ááœáẠáá±ážááœá²ááœááºááááºáá¬áá»á¬áž ááá·áºááŒááºážááẠáá¬áá¬ááºááŒá
áºáááºá áá¶ááá±á¬ááºážá
áœá¬ááŒáá·áºá JMX áááºááá
áºáá»á¬ážááᯠJVM á¡ááœááºážááœáẠá¡áá±á¬ááºážáá¯á¶áž ááŸááºáááºážáááºáá¬ážáá±á¬ááŒá±á¬áá·áº áá±ážááœá²ááœááºááááºáá¬áá»á¬ážááẠáááá±á¬ááºááŸá¯áááŸááá«á áá»áááºáááºááŒáá«á
áá¯á· /metrics
ááá°áá®áá±á¬ port áá
áºáá¯áá±á«áºááœááº
ááœááºááááºáá¬áá²ááá¯á· 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
ááœááºáá«áááºá áááºááá¯á·áá°ááẠááŒá±á¬ááºáá®ážááᯠá
á±á¬áá·áºááŒáá·áºááŒá®áž Prometheus áá±á¬áºáááºááŒáá·áº áááºážá áááºááá
áºáá»á¬ážááᯠááŒááááºááŒá
áºáááºá <svc>:9404/metrics
áááºááá¯á·áá° á áá áºááá·áºááœááºážááŒááºážá
á¡á¬áá¯á¶á
á°ážá
áá¯ááºááŸá¯ááŸááá²á· á
á¬áááºáá°áᬠáááºááá¬ááá²ááá¯á· áááá»ááºáá±áá«áááá·áºáááºá prometheus-jmx.yaml
? JVM ááœáẠáá¯ááºáá±á¬ááºááá¯ááºáá±á¬ ááá°áá®ááá·áºá¡áá¬áá»á¬ážá
áœá¬ááŸáááŒá®áž ááŒá±á¬ááºáá®ážááẠáááºážááá¯á·áá²ááŸáá
áºáá¯áá¬ááŒá
áºáá±á¬ááŒá±á¬áá·áº áááºááá¯á·áá°ááẠáá±á¬ááºáááºááœá²á·á
ááºážááŸá¯á¡áá»áá¯á· ááá¯á¡ááºáá«áááºá ááŒá±á¬ááºáá®ážá áá±á¬áááºáá±á¬ááºá kafka á
áááºááá¯á·á¡ááœáẠá
á¶áááºááŸááºáá»ááºáá»á¬ážááᯠáááá¯ááºáááºá
ááááŠážá áœá¬á áá»áœááºá¯ááºááá¯á·ááẠáá»áœááºá¯ááºááá¯á·á ááááºáá±á¬ááºáž/config/ directory ááá¯á· áááºááá¯á·áá° ááœá²á·á ááºážááŸá¯áá¯á¶á á¶ááá¯ááºááᯠáá±á«ááºážááá·áºáá«áááºá
platform/config
âââ prometheus-jmx.yaml
ááŒá®ážá០ááá·áºáááºá kustomization.yaml.tmp
l:
-- platform/kustomization.yaml.tmpl
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
[...]
configMapGenerator:
- name: config
files:
- config/prometheus-jmx.yaml
áááºážááẠá¡á
áááºá¡ááá¯ááºážáá
áºáá¯á
á®ááᯠáá±á«ááºážááá·áºáááºááŒá
áºáááºá files[]
ConfigMap ááœá²á·á
ááºážááŸá¯ááŒááºá
ááºá¡ááŒá
áºá ConfigMapGenerators áá»á¬ážááẠconfiguration data ááᯠhash áá¯ááºááŒá®áž ááŒá±á¬ááºážáá²áá«á pod ááᯠrestart áá¯ááºááá¯ááºážáá±á¬ááŒá±á¬áá·áº á¡ááœááºáá±á¬ááºážááœááºáá«áááºá VolumeMount áá
áºáá¯ááœáẠconfiguration files á "folder" áá
áºáá¯áá¯á¶ážááᯠááá·áºááœááºážááá¯ááºáá±á¬ááŒá±á¬áá·áº áááºážááá¯á·ááẠDeployment ááœáẠconfiguration ááá¬áááᯠáá»áŸá±á¬á·áá»áá±ážáá«áááºá
áá±á¬ááºáá¯á¶ážááœááºá áá»áœááºá¯ááºááá¯á·ááẠPod ááá¯á· á¡áá¶á¡ááá¯ážá¡áá»ááºá¡ááŒá Ạ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 á¡á±á¬áºááá±áᬠá¡áá¯á¶ážááŒá¯áá°áá»á¬áž á¡áá¯á¶ážááŒá¯ááá¯ááºáá«áááºá service-monitor.yaml
á
áááºáááºá á
á°ážá
ááºážáá«á Service-monitor.yaml
,
á€áá¯á¶á á¶ááᯠá¡ááŒá¬ážá¡áá¯á¶ážááŒá¯ááŸá¯ááá á¹á áá»á¬ážááœáẠááá¯ážáá»á²á·ááŒááºážá
ConfigMapGenerator ááœáẠáá»áœááºá¯ááºááá¯á·ááá·áºáá¬ážáá±á¬ ááá¯ááºáá»á¬ážá¡á¬ážáá¯á¶ážááẠáááºážááœáŸááºá¡áá
áºááœáẠáááá¯ááºáá«áááºá /etc/config
. áááºááá¯á¡ááºáá±á¬ á¡ááŒá¬ážááœá²á·á
ááºážáá¯á¶ááá¯ááºáá»á¬ážááᯠáááºáááºááẠá€áá¯á¶á
á¶áááááºááᯠááá¯ážáá»á²á·ááá¯ááºáááºá startup script á¡áá
áºááá¯áá±á¬áẠáááºáááºááá¯ááºáá«áááºá áá¯á¶ážááá¯á·ááááºá
ááá¹ááááºážáá»á¬áž
ááááºážáá±á¬ááºáž! á¥ááá¬á¡á¬ážááŒáá·áº stdout ááœáẠá¡ááá®áá±ážááŸááºážááŸááºáááºážáá»á¬ážááᯠáááŸáááá¯ááºáá«ááŒá®á kubectl logs
. Fluentd (GKE ááœáẠáá°áááºážá¡ááá¯ááºážááá·áºááœááºážáá¬ážáááº) ááẠáááºáááŸááºáááºážáá»á¬ážááᯠElasticsearchá Loki ááá¯á·ááá¯áẠáááºááá¯ááºáááºážáá¯á¶áž ááŸááºáááºážááááºáá±á¬ááºážááá¯á· áá±ážááá¯á·áááºááŒá
áºáááºá ááŸááºáááºážáá»á¬ážá¡ááœáẠjsonify ááᯠá¡áá¯á¶ážááŒá¯ááá¯áá«á ááá·áºááœááºážááẠá¡áááºáá±á¬áºááŒáá« ááá°áá¬áá¯á¶á
á¶á¡ááá¯ááºáž áá¯ááºáá±á¬ááºááá¯ááºáá«áááºá
áá±áá¬áá±á·á
áá¯á¶áá±á¡á¬ážááŒáá·áºá áá¯á¶ááœáẠH2 áá±áá¬áá±á·á áºáá áºáᯠááŸááá«áááºá áááºážááẠáá»áœááºá¯ááºááá¯á·á¡ááœáẠáááá·áºáá»á±á¬áºáá«á áá»áœááºá¯ááºááá¯á·ááẠCloud SQL Proxy ááŒáá·áº Google Cloud SQL ááᯠá¡áá¯á¶ážááŒá¯áá«ááẠ- áááºážááẠá¡ááœááºážááá¯ááºážááŒá¿áá¬áá»á¬ážááᯠááŒá±ááŸááºážáááºá¡ááœáẠáá±á¬ááºááá¯ááºážááœáẠááá¯á¡ááºáááºááŒá áºáááºá áá±áá¬áá±á·á áºááá¯áááºáá±á¬ááºáá¬ááœáẠááá·áºááœáẠááá¯ááºááá¯ááºá áááºááŒáá¯ááºááœá±ážáá»ááºááœáá·áºáááŸááá«á áááºážááẠááá¯ážááŸááºážááŒá®áž áá¯á¶ááŒááºá áááºáá»ááá±á¬ááœá±ážáá»ááºááŸá¯áá áºáá¯ááŒá áºáááºá 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 áá»áŸáá¯á·ááŸááºáá»ááºáá»á¬ážááᯠá
á®áá¶ááá·áºááœá²ááẠááá·áºááœáẠááŸá
áºáááºáá±á¬ á
áá
áºáá
áºáᯠááŸáááŸáá·áºááŒá®ážááŒá
áºááœááºááŸááááºá ááá¯ááºáá«áá á€áááºááŸá¬ ááœá±ážáá»ááºá
áá¬á¡áá»áá¯á·ááŒá
áºáááº- áááºážááá¯á·ááᯠáááºá cloud áááºáá±á¬ááºááŸá¯áá±ážáá°á KMS ááŒáá·áº áá¯ááºááŸááºááŒá®áž áááºážááá¯á·ááᯠCD ááá¯ááºááá¯ááºážááŸáá
áºááá·áº áá»áŸáá¯á·ááŸááºáá»ááºáá»á¬ážá¡ááŒá
ẠK8S áá²ááá¯á· ááá¯ážááœááºážááŒááºáž -
Ingress
áá±áááœááºáž ááá¯á·ááºááᯠáááºááá·áºááá¯á·ááŒááºážááᯠáááºá¡áá¯á¶ážááŒá¯ááẠááœá±ážáá»ááºááá¬ážáá«áá áááºááŒááºáááºáá¬ážáá±á¬ Ingress Controller áá
áºáᯠááá¯á¡ááºáááºááŒá
áºáááºá ááá¯á¶ážááẠingress-patch.yaml.tmpl
ááá¯á·ááá¯áẠplatform/ingress.yaml
. á¡áááºá áááºááẠingress-nginx ááá¯á¡áá¯á¶ážááŒá¯ááŒá®áž áááºážááá¯ááœáŸááºááŒáá±á¬ load balancer ááŸáá·áº ááŒááºá DNS ááá¯á·ááá¯áẠwildcard DNS entry ááᯠááœáŸááºááŒáá±á¬ nginx ingress class ááá¯ááœá±á·áá«áá áááºááẠááœá¬ážáááºáá±á¬ááºážááœááºáá«áááºá ááá¯ááºáá«á Ingress Controller ááŸáá·áº DNS ááᯠá
á®á
ááºáááºááŸááºáá« ááá¯á·ááá¯áẠá€á¡ááá·áºáá»á¬ážááᯠáá»á±á¬áºááŒá®áž pod ááŸáá·áº ááá¯ááºááá¯ááºáá»áááºáááºááŸá¯ááᯠáááºáá¬ážáá«á
TLS
áááºá¡áá¯á¶ážááŒá¯áá±áááºááá¯ááẠingress-patch.yaml.tmpl
áááºáááá¯á¡ááºáá»ááºáá»á¬ážááŸáá·áºááá¯ááºáá®á
á±ááẠáááºážááᯠá
áááºááŒáá¯ááºááŒááºáááºáá«á
áá áºááœáŸááºáá«á
á¡áááºááŸá¬áá±ážáá¬ážáá²á·á¡áá¬á¡á¬ážáá¯á¶ážááᯠááá¯ááºáá¬áááºááá¯áááºáá±á¬á· command áá±á«á·á 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
ááŒá±á¬ááºáá®áž áá¯á¶ážáá¡áááºááá·áºááŒá áºáááºá¡áá áááá áºá¡áááºážáááºá á±á¬áá·áºáá«á áááºááŸááºáááºáá±áá»á¬ááẠááá¯ááááºážá¡áááºááᯠá¡áááºááŒá¯ááẠá¡áá»áááºá¡áááºážáááºááŒá¬áááá·áºáááºá ááá¯á·áá±á¬áẠkubetail áá²á·ááá¯á·áá±á¬ áááááá¬áá²á·ááá¯á· áááŸáááá¯ááºáá±á¬ áááááá¬áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á ááá¯á·ááá¯áẠkubectl ááᯠááá¯ážááá¯ážááŸááºážááŸááºáž á¡áá¯á¶ážááŒá¯á ááŸááºáááºážáá»á¬ážááᯠááẠá á±á¬áá·áºááŒáá·áºááá¯ááºáááº-
kubectl logs -n camunda-bpm-demo $(kubectl get pods -o=name -n camunda-bpm-demo) -f
áá±á¬ááºá¡ááá·áºáá»á¬áž
á¡ááœáá·áºá¡á¬áá¬áá±ážááŒááºáž
áááºážááẠKubernetes ááẠCamunda BPM ááᯠconfigure áá¯ááºááŒááºážááŸáá·áº ááá¯ááá¯áááºááá¯ááºáááºá ááá¯á·áá±á¬áº áá°áááºážá¡á¬ážááŒáá·áº REST API ááœáẠá¡áá±á¬ááºá¡áá¬ážá
áá
á
áºááŒááºážááᯠááááºáá¬ážááŒá±á¬ááºáž áááááŒá¯ááẠá¡áá±ážááŒá®ážáá«áááºá áááºáá¯ááºááá¯ááºáááº
á¡ááá¯ááºážá á®áá¶ááá·áºááœá²ááŸá¯
á¡ááŒá¬ážá¡ááá®áá±ážááŸááºážáá»á¬ážá
áœá¬áá²á·ááá¯á·ááẠCamunda BPM ááẠJVM ááœáẠsessions áá»á¬ážááᯠááá¯ááºááœááºáá±ážáááºá ááá¯á·ááŒá±á¬áá·áº áááºááẠáá¯á¶áá°áá»á¬ážá
áœá¬ááᯠrun ááá¯áá«áá áááºááẠsticky sessions ááá¯ááœáá·áºááá¯ááºááẠ(
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
ááœá±á¬ááá¯: áááºááẠsed á¡á á¬áž xmlstarlet ááá¯áá¯á¶ážááá¯ááºáááºá
áá¯á¶ážáááºá
á¡ááá¯ááºážá¡áá¬
á¡áááºá áááºááẠsessions áá»á¬ážááᯠáá¬ážáááºááŒá®ážááŒá
áºáá«á Camunda BPM ááᯠáá»á²á·ááœááºááẠááááá¯á¶áž (ááŸáá·áº áááŒá¬áá áá±á¬ááºáá¯á¶áž) ááá·áºáááºáá»ááºááẠáá±áá¬áá±á·á
áºááá¯á· áá»áááºáááºááŸá¯ ááŒá
áºááá¯ááºáááºá áá
áºá
áááºáá
áºááá¯ááºáž á
áááºááŒáá¯ááºááŒá¯áá¯ááºááá¯ááºáá±ááŒá®"
áá±á¬ááºážááá¯ááŸá¯áá»á¬ážááŸáá·áº ááá·áºáááºáá»ááºáá»á¬áž
Ð platform/deployment.yaml
áá»áœááºá¯ááºááá¯á·ááẠá¡áááºážá¡ááŒá
áºá¡ááœááºááᯠhard-code áá¯ááºáá¬ážáááºááᯠáááºááœá±á·ááá«áááºá áááºážááẠHPA ááŸáá·áº áá±á¬ááºážááœááºá
áœá¬á¡áá¯ááºáá¯ááºáááºá ááá¯á·áá±á¬áº áááºáá±á¬ááºážááœá²á·á
ááºážááŸá¯ ááá¯á¡ááºááá¯ááºáááºá Customize patch ááẠá€á¡ááœáẠááá·áºáá»á±á¬áºáááºá á
ááºáá®áá®áá¬á ingress-patch.yaml.tmpl О ./kustomization.yaml.tmpl
áá±á¬ááºáá»ááº
ááá¯á·ááŒá±á¬áá·áº áá»áœááºá¯ááºááá¯á·ááẠPrometheus áááºááá áºáá»á¬ážá ááŸááºáááºážáá»á¬ážá H2 áá±áá¬áá±á·á áºá TLS ááŸáá·áº Ingress ááá¯á·ááŒáá·áº Kubernetes ááœáẠCamunda BPM ááᯠááá·áºááœááºážáá²á·áááºá áá»áœááºá¯ááºááá¯á·ááẠConfigMaps ááŸáá·áº Dockerfile ááᯠá¡áá¯á¶ážááŒá¯á jar ááá¯ááºáá»á¬ážááŸáá·áº ááœá²á·á ááºážááŸá¯áá¯á¶á á¶ááá¯ááºáá»á¬ážááᯠáá±á«ááºážááá·áºáá²á·áááºá áá»áŸáá¯á·ááŸááºáá»ááºáá»á¬ážá០áááºáááºážáá»áẠááŒá±á¬ááºážáá²ááá¯ááºáá±á¬ ááááºážááŸááºáá»á¬ážáá¶ááá¯á· áá±áá¬ááá¬ááá»á¬áž áááŸááºááŒááºážá¡ááŒá±á¬ááºáž áá»áœááºá¯ááºááá¯á· ááœá±ážááœá±ážáá²á·ááŒáá«áááºá ááá¯á·á¡ááŒááºá áá»áœááºá¯ááºááá¯á·ááẠáá¯á¶á á¶áá°áá»á¬ážá áœá¬á¡ááœáẠ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
áá/á/ááááá áá¬áá¬ááŒááº
source: www.habr.com