Lancement de Camunda BPM sur Kubernetes

Lancement de Camunda BPM sur Kubernetes


Vous utilisez Kubernetes? PrĂȘt Ă  dĂ©placer vos instances Camunda BPM Ă  partir de VM ou simplement Ă  essayer de les exĂ©cuter sur Kubernetes? Jetons un coup d'Ɠil Ă  certaines configurations courantes et Ă©lĂ©ments individuels qui peuvent ĂȘtre adaptĂ©s Ă  vos besoins spĂ©cifiques.



Cela suppose que vous avez déjà utilisé Kubernetes. Sinon, pourquoi ne pas consulter le manuel et démarrer votre premier cluster?



Auteurs



  • Alastair Firth - IngĂ©nieur Senior Site Reliability dans l'Ă©quipe Camunda Cloud;
  • Lars Lange est ingĂ©nieur DevOps chez Camunda.


En bref:



git clone https://github.com/camunda-cloud/camunda-examples.git

cd camunda-examples/camunda-bpm-demo

make skaffold



Ok, cela n'a probablement pas fonctionné, car vous n'avez pas installé skaffold et kustomize. Eh bien, lisez la suite!



Qu'est-ce que Camunda BPM



Camunda BPM est une plateforme open source de gestion des processus mĂ©tier et d'automatisation des dĂ©cisions qui relie les utilisateurs mĂ©tier et les dĂ©veloppeurs de logiciels. C'est parfait pour coordonner et connecter des personnes, des (micro) services ou mĂȘme des robots! Vous pouvez en savoir plus sur les diffĂ©rents cas d'utilisation ici .



Pourquoi utiliser 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.



  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 .









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

[...]



: Kustomize : .



: 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





Nous avons donc installé Camunda BPM sur Kubernetes avec les métriques Prometheus, les journaux, la base de données H2, TLS et Ingress. Nous avons ajouté des fichiers jar et de configuration à l'aide de ConfigMaps et Dockerfile. Nous avons parlé de communiquer avec des volumes et directement dans des variables d'environnement à partir de secrets. En outre, nous avons fourni un aperçu de la configuration de Camunda pour plusieurs répliques et API authentifiées.



Liens



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, traduction de l' article d' Alastair Firth, Lars Lange




All Articles