Cursor Camunda BPM in Kubernetes

Cursor Camunda BPM in Kubernetes

Uteris Kubernetes? Instantias tuas Camundae BPM e virtualis machinis admovere parati, vel forte modo eas in Kubernetes currere conari? Intueamur aliquas figuras communes et singulas res quae ad certas necessitates formandas possunt.

Ponit ante Kubernetes usos esse. Sin minus, cur non inspice ducis et non est botrus primus incipiet?

auctores

  • Alastair Firth (Alastair Firth) - Senior Site Reliability Engineering on the Camunda Cloud team;
  • Lars Lange (Lars Lange) — DevOps praefectus fabrum Camundae.

In brevi:

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

Bene, probabiliter opus non est quod skaffold et kustomize non habet installed. Bene ergo lege in!

Quid est Camunda BPM

Camunda BPM fons apertus est processus negotii administrationis ac tribunal automation decisionum quae connectit negotia utentium ac programmatum tincidunt. Est specimen coordinandi et applicandi homines, officia vel minores! Plura legere potes de variis casibus usui Link.

Cur Kubernetes?

Kubernetes vexillum de facto factus est ad applicationes recentiores in Linux currens. Utendo systema vocat pro odio emulationis et nuclei facultatem administrandi memoriam et negotium mutandi, tempus tabernus et satus tempus servantur ad minimum. Maximum autem beneficium potest venire ex vexillo API quod Kubernetes praebet ad configurandum infrastructuram ab omnibus applicationibus requisitam: repositionis, retis, ac vigilantiae. Conversa 2020 annos nata mense Iunio 6 et fortasse secunda maxima propositi fons aperta (post Linux). Nuper actuose stabiliens suam functionem post celeri iteratione per hos annos, cum critica fit ad labores productionis circa mundum.

Camunda BPM Engine facile coniungi potest ad alias applicationes in eodem botro currens, et Kubernetes optimam scalam praebet, permittens te augere sumptibus infrastructuram tantum cum vere opus est (et facile eas ut opus est minuere).

Qualitas vigilantiae etiam valde emendatur instrumentis qualibus Prometheus, Grafana, Loki, Fluentd et Elastica inquisitione, permittens te centraliter explorare omnia opera in botro. Hodie spectabimus quomodo Prometheum exportatorem in Machina Virtualis Java (JVM) efficere.

proposita

Intueamur paucas areas ubi possumus imaginem Camundae BPM Docker customize (GitHub) ut bene cum Kuberneto conveniat.

  1. Acta et metrica;
  2. hospites Database;
  3. Authentication;
  4. Sessionis procuratio.

Pluribus modis haec proposita consequi et totam processum clare demonstrabimus.

illud: Tu versione incepti utens? Vide hic et renovatio imaginis nexus ut opus fuerit.

Workflow progressio

In hoc demo, Skaffold utemur ad imagines Docker aedificandas utens Google Cloud Build. Variis instrumentis (ut Kustomize et Helm) bonum subsidium habet, CI instrumenta aedificandi et provisores infrastructuras. File skaffold.yaml.tmpl includit occasus pro Google Cloud Aedificium et GKE, viam simplicissimam praebens ad infrastructuram productionis gradus currendi.

make skaffold contextum Dockerfile in Cloud Aedificare, imaginem fabricare et in GCR repone, et manifestas botro tuo appone. Hoc est quod facit make skaffold, sed Scaffold multa alia notat.

Pro yaml templates in Kubernetes, kustomize utimur ut curo yaml obducat sine obducendo totam manifestam, sino vos uti. git pull --rebase ad ulteriora meliora. Nunc est in kubectl et ad talia bene operatur.

Etiam envsubst utimur ad populandum hostname et GCP id in lima in *.yaml.tmpl. Potes videre quomodo operatur in makefile vel tantum ulterius permanere.

DE PRAEREQUISITIS

  • Opus botri Kubernetes
  • Mos
  • Skaffold - ad creandas proprias officinas imagines et facilem instruere GKE
  • Exemplar huius codicis
  • Envsubst

Workflow uti manifestat

Si non vis kustomize vel skaffold uti, potes referre ad manifestas in generated-manifest.yaml et aptet eas ad electionis tuae fluxum.

Acta publica omnia et metrics

Prometheus in Kubernetes metri colligendi norma factus est. Idem angulum obtinet ac AWS Cloudwatch Metrica, Cloudwatch Alerts, Stackdriver Metrica, StatsD, Datadog, Nagios, vSphere Metrica et alia. Fons apertus est et validam linguae interrogationem habet. Visusizationem Grafanae committemus - venit cum pluribus ashboardis quae e archa praesto sunt. Connexa sunt inter se et facilia sunt ut install prometheus operarius.

Defalta Prometheus exemplar extrahendi utitur <service>/metricset additis vasis sidecar hoc commune est. Infeliciter, metricae JMX optime initium intra JVM sunt, ergo continentia sidecara non sunt efficientia. Lets connect jmx_exporter fontem apertum a Prometheo ad JVM addendo ad imaginem continentis, quae viam praebebit /metrics in alium portum.

Prometheum addere jmx_exporter continens

-- 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

Etiam id facilisis erat. Exportator tomcat monitorem et metricam suam in Prometheo forma ostendet <svc>:9404/metrics

Exporter setup

Attentus lector miretur unde esset prometheus-jmx.yaml? Multa diversa sunt quae in JVM currere possunt, et unus ex illis est tomcat, ergo exportator aliquo addito configuratione eget. Vexillae figurationes pro tomcat, wildfka, kafka et sic in promptu sunt hic. Addemus tomcat as ConfigMap in Kubernetes et deinde in eo ut volumen conscendimus.

Primum, exportatorius configurationem lima ad suggestum/config/presulem nostrum addimus

platform/config
└── prometheus-jmx.yaml

Addimus ConfigMapGenerator в kustomization.yaml.tmpl:

-- platform/kustomization.yaml.tmpl
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
[...] configMapGenerator:
- name: config
files:
- config/prometheus-jmx.yaml

Hoc unumquodque elementum files[] ut ConfigMap configuratione elementum. ConfigMapGeneratores magni sunt quia informationem configurationem detrahent et siletum legumen si mutatur cogunt. Etiam quantitatem configurationis in instruere possunt cum totum "folder" tabularum configurationum in uno VolumeMount conscendere potes.

Demum opus est ut volumen ad vasculum Mando conscendamus:

-- 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
[...]

Mirabilis. Si Prometheus non configuratus est totum tersus facere, referre potes illud siliquas emundare. Prometheus Operator users potest service-monitor.yaml ut incipiat. Explore Service-monitor.yaml, operator design и ServiceMonitorSpec antequam incipias.

Extendit exemplar ad alios usus casus

Omnia imagini addimus ad ConfigMapGenerator in novo indice /etc/config. Hoc template extendere potes ut quaslibet alias configurationes limas quas debes conscendere. Etiam novum scriptorium startup conscendere potes. Vos can utor subPath scandere singula files. Ad update xml files, considera utens xmlstarlet pro sed. Iam in imagine comprehenditur.

Magazines

Magna nuntium! Acta applicationis iam praesto sunt in stdout, e.g. with kubectl logs. Fluentd (per defaltam in GKE constitutus) ligna tua ad Elasticationem, Lokium, aut catasta tua incepta proferet. Si vis uti jsonify ligna ergo potes sequi supra template ut install logback.

database

Defalta imago database H2 habebit. Hoc nobis non convenit, et Google Cloud SQL cum Cloud SQL Proxy utemur - hoc postea requiretur ad quaestiones internas solvendas. Haec optio simplex et certa est si optiones tuas non habes in datorum instituendis. AWS RDS simile servitium praebet.

Neglegentiae datorum quod vis, nisi H2 est, necesse est ut variabiles ambitus congruentes constituant in platform/deploy.yaml. Spectat aliquid simile hoc;

-- 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
[...]

illud: Kustomize uti potes ad explicandam diversis ambitibus utendo operimento: exempli gratia.

illud: consuetudinem valueFrom: secretKeyRef. Quaeso, utere hoc Kubernetes pluma etiam in progressu ad secreta tua custodienda.

Verisimile est te iam rationem habere praelatam secretorum Kubernetensium administrandi. Si non, hic sunt optiones aliquae: Encrypting eas cum tuo provisore KMS nubeculae et eas in K8S ut secreta per CD pipeline injicias. Mozilla SOPS — bene operabitur in compositione secretorum cum Kustomize. Alia instrumenta sunt, ut dotGPG, similia munera praestantia; Buy HashiCorp, Customize Secret Value Plugins.

Ingress

Nisi portu locali uti procures, figuratum Ingress Controller opus erit. Si non utor ingressus-nginx (Galea chart) tunc maxime verisimile iam scis te necessarias annotationes in ingress-patch.yaml.tmpl aut platform/ingress.yaml. Si ingress-nginx uteris et vide nginx ingressum genus cum onere librario ei demonstrando et DNS externum seu wildcard DNS ingressum, bonus es ad eundum. Alioquin configurare Ingressorem moderatoris et DNS, vel hos gradus omittere et directam connexionem ad vasculum conservare.

TLS

Si vos es usura cert-amet vel kube-lego et letsencrypt - testimonia pro novo login sponte obtinebitur. Alioquin aperta ingress-patch.yaml.tmpl and customize it to suit your needs.

Lorem!

Si omnia suprascripta secutus fueris, tunc mandatum make skaffold HOSTNAME=<you.example.com> exempli gratia praesto esse in launch debet <hostname>/camunda

Si aperiens conventum tuum ad domicilium publicum non posuisti, illum cum . redigere potes localhost: kubectl port-forward -n camunda-bpm-demo svc/camunda-bpm 8080:8080 on localhost:8080/camunda

Exspecta paulisper donec tomcat perfecte paratus est. Procurator cert-amet tempus aliquod nomen dominii verificandum. Potes igitur trabes monitores utentes instrumenta prompta ut instrumentum sicut kubetail vel simpliciter utens kubectl;

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

Deinde gradibus

auctoritas

Hoc magis pertinet ad configurandum Camunda BPM quam Kubernetes, sed interest notare per defaltam, authenticas in REST API debilitari. Potes enable basic authenticas aut utere alium modum ut J.W.T.. Potes configmatibus et voluminibus uti ad xml onerandum, vel xmlstarlet (vide supra) ad limas in imagine emendes, et vel ad usum wget vel onera utendo vase et volumine communi.

Sessio procuratio

Sicut multae aliae applicationes, Camunda BPM sessiones in JVM tractat, ita si vis multiplices replicationes currere, sessiones viscosas efficere potes (exempli gratia pro ingressu-nginx) quae erit donec imago evanescat vel attributum max-Age crustulorum. Ad solutionem robustiorem, Sessio Procurator in Tomcat explicari potes. Lartem separatum post hoc loco, sed aliquid simile;

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

illud: uti potes xmlstarlet loco sed

usi sumus twemproxy in conspectu Google Cloud Memorystore, with memcached-sessionis procurator Redis subsidia currere est.

Scaling

Si sessiones iam intellegis, prima limitatio (et saepe postrema) limitatio ad Camundam BPM scandendi nexum datorum esse potest. Partialis customization iam praesto est "ex arca" Etiam in intialSize disable in occasus.xml tabella. Add Pod Horizontalis Autoscaler (HPA) et siliquarum numerum facile statim conscendere potes.

Petitiones et restrictiones

В platform/deployment.yaml Agrum opes videbis nos laborare. Hoc bene cum HPA operatur, sed configurationem additionalm requirere. Kustomize commissura huic aptum est. Cm. ingress-patch.yaml.tmpl и ./kustomization.yaml.tmpl

conclusio,

Ita Camunda BPM in Kubernetes constituimus cum Prometheo metrice, tigna, H2 datorum, TLS et Ingress. Files hydrias et schemata conformationes addimus utentes configMaps et Dockerfile. Locuti sumus de notitia permutandi ad volumina et directe ad variabilium ambitum a secretis. Praeterea perspectum praebebamus Camundae erigendi propter multiplices replicationes et API authentico.

References

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/XNUMX/XNUMX, translation vasa Alastair Firth, Lars Lange

Source: www.habr.com

Add a comment