
Menggunakan Kubernetes? Siap untuk memindahkan instance Camunda BPM Anda dari VM, atau coba jalankan di Kubernetes? Mari kita lihat beberapa konfigurasi umum dan elemen individu yang dapat disesuaikan dengan kebutuhan spesifik Anda.
Ini mengasumsikan Anda telah menggunakan Kubernetes sebelumnya. Jika tidak, mengapa tidak melihat manual dan memulai cluster pertama Anda?
Penulis
- Alastair Firth - Insinyur Keandalan Situs Senior di Tim Cloud Camunda;
- Lars Lange adalah Engineer DevOps di Camunda.
Pendeknya:
git clone https://github.com/camunda-cloud/camunda-examples.git
cd camunda-examples/camunda-bpm-demo
make skaffold
Oke, mungkin tidak berhasil, karena Anda tidak menginstal skaffold dan kustomize. Baiklah, lanjutkan membaca!
Apa itu Camunda BPM
Camunda BPM adalah manajemen proses bisnis open source dan platform otomatisasi keputusan yang menghubungkan pengguna bisnis dan pengembang perangkat lunak. Ini sempurna untuk mengoordinasikan dan menghubungkan orang, layanan (mikro), atau bahkan bot! Anda dapat membaca lebih lanjut tentang berbagai kasus penggunaan di sini .
Mengapa menggunakan Kubernetes
Kubernetes - Linux. , . API-, Kubernetes , : , . 2020 6 , , , ( Linux). , .
Camunda BPM Engine , , Kubernetes , , ( ).
, Prometheus, Grafana, Loki, Fluentd Elasticsearch, . , Prometheus Java (JVM).
, Docker- Camunda BPM (github), Kubernetes.
- ;
- ;
- ;
- .
.
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 <service>/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 <svc>:9404/metrics
, prometheus-jmx.yaml? , JVM, tomcat β , . tomcat, wildfly, kafka . tomcat ConfigMap Kubernetes, .
-, platform/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, operator design 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
[...]
: valueFrom: secretKeyRef. , Kubernetes , .
, Kubernetes. , : KMS , K8S CD- β MozillaSOPS β Kustomize. , dotGPG β : HashiCorp Vault, Kustomize Secret Value Plugins.
Ingress
, Ingress Controller. ingress-nginx (Helm chart) , , , ingress-patch.yaml.tmpl platform/ingress.yaml. ingress-nginx nginx ingress class , DNS DNS, β . Ingress Controller DNS .
TLS
cert-manager 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 . 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 cookie. 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-session-manager ( Redis) .
, ( ) Camunda BPM . Β« Β». intialSize settings.xml. HorizontalPodAutoscaler (HPA) .
platform/deployment.yaml , . HPA, . kustomize. . ingress-patch.yaml.tmpl ./kustomization.yaml.tmpl
Jadi kami menginstal Camunda BPM di Kubernetes dengan metrik Prometheus, log, database H2, TLS, dan Ingress. Kami telah menambahkan file jar dan config menggunakan ConfigMaps dan Dockerfile. Kami berbicara tentang berkomunikasi dengan volume dan langsung ke variabel lingkungan dari rahasia. Selain itu, diberikan gambaran tentang setup Camunda untuk beberapa replika dan API terotentikasi.
Tautan
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
08/05/2020, terjemahan artikel oleh Alastair Firth, Lars Lange