A 'ruith Camunda BPM air Kubernetes

A 'ruith Camunda BPM air Kubernetes

A bheil thu a’ cleachdadh Kubernetes? Deiseil airson na h-eisimpleirean Camunda BPM agad a ghluasad a-mach à innealan brìgheil, no is dòcha dìreach feuch an ruith air Kubernetes? Bheir sinn sùil air cuid de rèiteachaidhean cumanta agus nithean fa leth a dh’ fhaodar a dhealbhadh a rèir na feumalachdan sònraichte agad.

Tha e a’ gabhail ris gu bheil thu air Kubernetes a chleachdadh roimhe seo. Mura h-eil, carson nach toir thu sùil air stiùireadh agus nach tòisich thu air a' chiad bhasgaid agad?

ùghdaran

  • Alastair Firth (Alastair Firth) - Àrd Einnseanair earbsachd Làraich air sgioba Camunda Cloud;
  • Lars Lange (Lars Lange) - Einnseanair DevOps aig Camunda.

Ann an ùine ghoirid:

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

Ceart gu leòr, is dòcha nach do dh'obraich e a chionn 's nach eil skaffold agus kustomize agad air a stàladh. Uill an uairsin leugh air adhart!

Dè a th’ ann an Camunda BPM

Tha Camunda BPM na àrd-ùrlar stiùireadh pròiseas gnìomhachais fosgailte agus fèin-ghluasad co-dhùnaidh a tha a’ ceangal luchd-cleachdaidh gnìomhachais agus luchd-leasachaidh bathar-bog. Tha e air leth freagarrach airson daoine a cho-òrdanachadh agus a cheangal, seirbheisean (micro) no eadhon botaichean! Faodaidh tu barrachd a leughadh mu na diofar chùisean cleachdaidh aig cheangal.

Carson a chleachdas tu Kubernetes

Tha Kubernetes air a thighinn gu bhith na inbhe de facto airson a bhith a’ ruith thagraidhean ùr-nodha air Linux. Le bhith a’ cleachdadh gairmean siostaim an àite atharrais bathar-cruaidh agus comas an kernel gus cuimhne agus atharrachadh gnìomh a riaghladh, thathas a’ cumail an ùine tòiseachaidh agus an ùine tòiseachaidh aig an ìre as ìsle. Ach, dh ’fhaodadh gum bi a’ bhuannachd as motha a ’tighinn bhon API àbhaisteach a bheir Kubernetes seachad gus am bun-structar a dh’ fheumas a h-uile tagradh a rèiteachadh: stòradh, lìonrachadh agus sgrùdadh. Thionndaidh e 2020 bliadhna a dh'aois san Ògmhios 6 agus is dòcha gur e seo an dàrna pròiseact stòr fosgailte as motha (às deidh Linux). O chionn ghoirid tha e air a bhith gu gnìomhach a’ bunailteachadh a ghnìomhachd às deidh ath-aithris luath thar nam beagan bhliadhnaichean a dh’ fhalbh leis gu bheil e a’ fàs deatamach airson eallach obrach cinneasachaidh air feadh an t-saoghail.

Is urrainn dha Einnsean Camunda BPM ceangal gu furasta ri tagraidhean eile a tha a ’ruith air an aon bhuidheann, agus tha Kubernetes a’ toirt seachad scalability sàr-mhath, a ’toirt cothrom dhut cosgaisean bun-structair àrdachadh dìreach nuair a tha fìor fheum orra (agus an lughdachadh gu furasta mar a dh’ fheumar).

Tha càileachd sgrùdaidh cuideachd air a leasachadh gu mòr le innealan leithid Prometheus, Grafana, Loki, Fluentd agus Elasticsearch, a’ toirt cothrom dhut coimhead sa mheadhan air a h-uile uallach obrach ann am brabhsair. An-diugh seallaidh sinn ri mar a chuireas sinn an t-às-mhalairt Prometheus an sàs anns an Java Virtual Machine (JVM).

Amasan

Bheir sinn sùil air beagan raointean far an urrainn dhuinn ìomhaigh Camunda BPM Docker a ghnàthachadh (GitHub) gus am bi e ag eadar-obrachadh gu math le Kubernetes.

  1. Logaichean agus slatan-tomhais;
  2. Ceanglaichean stòr-dàta;
  3. Dearbhadh;
  4. Stiùireadh seisean.

Seallaidh sinn air grunn dhòighean gus na h-amasan sin a choileanadh agus seallaidh sinn gu soilleir am pròiseas air fad.

thuirt: A bheil thu a 'cleachdadh an tionndadh Iomairt? Seall an seo agus ùraich ceanglaichean ìomhaigh mar a dh’ fheumar.

Leasachadh sruth-obrach

Anns an demo seo, cleachdaidh sinn Skaffold gus ìomhaighean Docker a thogail a’ cleachdadh Google Cloud Build. Tha taic mhath aige airson diofar innealan (leithid Kustomize and Helm), CI agus innealan togail, agus solaraichean bun-structair. Faidhle skaffold.yaml.tmpl a’ toirt a-steach suidheachaidhean airson Google Cloud Build agus GKE, a’ toirt seachad dòigh gu math sìmplidh airson bun-structar ìre toraidh a ruith.

make skaffold luchdaichidh e an co-theacsa Dockerfile a-steach do Cloud Build, togaidh e an ìomhaigh agus stòraichidh e ann an GCR e, agus an uairsin cuiridh e na manifestos ris a’ bhuidheann agad. Seo na nì e make skaffold, ach tha mòran fheartan eile aig Skaffold.

Airson teamplaidean yaml ann an Kubernetes, bidh sinn a’ cleachdadh kustomize gus ath-chòmhdach yaml a riaghladh gun a bhith a’ sparradh am foillseachadh gu lèir, a’ toirt cothrom dhut a chleachdadh git pull --rebase airson tuilleadh leasachaidhean. A-nis tha e ann an kubectl agus tha e ag obair gu math airson rudan mar sin.

Bidh sinn cuideachd a’ cleachdadh envsubst gus an t-ainm aoigheachd agus ID pròiseict GCP a lìonadh anns na faidhlichean *.yaml.tmpl. Chì thu mar a tha e ag obair ann an makefile no dìreach lean air adhart nas fhaide.

Ro-ghoireasan riatanach

  • Buidheann-obrach Kubernetes
  • Gnàthaich
  • Sgeadaich - airson na h-ìomhaighean docker agad fhèin a chruthachadh agus an cleachdadh gu furasta gu GKE
  • Dèan lethbhreac den chòd seo
  • Envsubst

Sruth-obrach a’ cleachdadh taisbeanairean

Mura h-eil thu airson kustomize no skaffold a chleachdadh, faodaidh tu iomradh a thoirt air na manifestos ann generated-manifest.yaml agus atharraich iad a rèir an t-sruth-obrach as fheàrr leat.

Clàran agus metrics

Tha Prometheus air a thighinn gu bhith na inbhe airson metrics a chruinneachadh ann an Kubernetes. Tha e san aon àite ri AWS Cloudwatch Metrics, Cloudwatch Alerts, Stackdriver Metrics, StatsD, Datadog, Nagios, vSphere Metrics agus feadhainn eile. Tha e fosgailte le còd agus tha cànan ceiste cumhachdach aige. Cuiridh sinn earbsa anns an fhradharc do Grafana - thig e le àireamh mhòr de chlàran-deasachaidh rim faighinn a-mach às a’ bhogsa. Tha iad ceangailte ri chèile agus tha iad gu math furasta an stàladh leotha gnìomhaiche prometheus.

Gu gnàthach, bidh Prometheus a’ cleachdadh a’ mhodail às-tharraing <service>/metrics, agus tha e cumanta soithichean càr-taobh a chuir ris airson seo. Gu mì-fhortanach, tha e nas fheàrr metrics JMX a chlàradh taobh a-staigh an JVM, agus mar sin chan eil soithichean taobh càr cho èifeachdach. Dèanamaid ceangal jmx_às-mhalairt stòr fosgailte bho Prometheus chun JVM le bhith ga chur ris an ìomhaigh container a bheir seachad an t-slighe /metrics air port eile.

Cuir Prometheus jmx_exporter ris a 'ghobhar

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

Uill, bha sin furasta. Bidh an às-mhalairt a’ cumail sùil air tomcat agus a’ taisbeanadh na meatrach aige ann an cruth Prometheus aig <svc>:9404/metrics

Suidheachadh às-mhalairt

Is dòcha gum bi an leughadair furachail a’ faighneachd cò às a thàinig e prometheus-jmx.yaml? Tha mòran rudan eadar-dhealaichte ann as urrainn ruith anns an JVM, agus chan eil ann an tomcat ach aon dhiubh, agus mar sin feumaidh an t-às-mhalairt beagan rèiteachaidh a bharrachd. Tha rèiteachaidhean àbhaisteach airson tomcat, wildfly, kafka is mar sin air adhart rim faighinn an seo. Cuiridh sinn tomcat mar Mapa config ann an Kubernetes agus an uairsin cuir suas e mar leabhar.

An toiseach, cuiridh sinn am faidhle rèiteachaidh às-mhalairt ris an àrd-ùrlar / config / eòlaire againn

platform/config
└── prometheus-jmx.yaml

An uairsin bidh sinn a 'cur ris ConfigMapGenerator в kustomization.yaml.tmpl:

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

Cuiridh seo ris gach eileamaid files[] mar eileamaid rèiteachaidh ConfigMap. Tha ConfigMapGenerators air leth math oir tha an dàta rèiteachaidh aca agus bidh iad a’ toirt air pod ath-thòiseachadh ma dh’ atharraicheas e. Bidh iad cuideachd a’ lughdachadh na tha de rèiteachadh ann an cleachdadh oir is urrainn dhut “pasgan” iomlan de fhaidhlichean rèiteachaidh a chuir suas ann an aon VolumeMount.

Mu dheireadh, feumaidh sinn an ConfigMap a chuir suas mar leabhar don pod:

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

Gu h-iongantach. Mura h-eil Prometheus air a rèiteachadh gus làn ghlanadh a dhèanamh, is dòcha gum feum thu innse dha na pods a ghlanadh. Faodaidh luchd-cleachdaidh Prometheus Operator a chleachdadh service-monitor.yaml airson tòiseachadh. Rannsaich Service-monitor.yaml, dealbhadh gnìomhaiche и SeirbheisMonitorSpec mus tòisich thu.

Leudaich am pàtran seo gu cùisean cleachdaidh eile

Bidh a h-uile faidhle a chuireas sinn ri ConfigMapGenerator ri fhaighinn san eòlaire ùr /etc/config. Faodaidh tu an teamplaid seo a leudachadh gus faidhlichean rèiteachaidh sam bith eile a tha a dhìth ort a chuir suas. Faodaidh tu eadhon sgriobt tòiseachaidh ùr a chuir suas. Faodaidh tu a chleachdadh fo-shlighe gus faidhlichean fa leth a chuir suas. Gus faidhlichean xml ùrachadh, smaoinich air cleachdadh rionnag xml an àite sed. Tha e mu thràth air a ghabhail a-steach san ìomhaigh.

Irisean

Deagh naidheachd! Tha logaichean tagraidh rim faighinn mu thràth air stdout, mar eisimpleir le kubectl logs. Cuiridh Fluentd (air a chuir a-steach gu bunaiteach ann an GKE) na logaichean agad air adhart gu Elasticsearch, Loki, no an àrd-ùrlar logaidh iomairt agad. Ma tha thu airson jsonify a chleachdadh airson logaichean faodaidh tu an teamplaid gu h-àrd a leantainn gus a stàladh logadh air ais.

Stòr-dàta

Gu gnàthach, bidh stòr-dàta H2 aig an ìomhaigh. Chan eil seo freagarrach dhuinn, agus cleachdaidh sinn Google Cloud SQL le Cloud SQL Proxy - bidh feum air seo nas fhaide air adhart gus fuasgladh fhaighinn air duilgheadasan a-staigh. Is e roghainn sìmplidh agus earbsach a tha seo mura h-eil na roghainnean agad fhèin ann a bhith a’ stèidheachadh an stòr-dàta. Tha AWS RDS a’ toirt seachad seirbheis den aon seòrsa.

Ge bith dè an stòr-dàta a thaghas tu, mura h-e H2 a th’ ann, feumaidh tu na caochladairean àrainneachd iomchaidh a shuidheachadh ann an platform/deploy.yaml. Tha e a’ coimhead rudeigin mar seo:

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

thuirt: Faodaidh tu Kustomize a chleachdadh airson a chuir gu diofar àrainneachdan a’ cleachdadh ath-chòmhdach: eisimpleir.

thuirt: cleachdadh valueFrom: secretKeyRef. Feuch, cleachd am feart seo de Kubernetes eadhon rè leasachadh gus na dìomhaireachdan agad a chumail sàbhailte.

Tha e coltach gu bheil siostam as fheàrr leat mu thràth airson riaghladh dìomhaireachd Kubernetes. Mura h-eil, seo cuid de roghainnean: gan cuairteachadh le KMS an t-solaraiche sgòthan agad agus an uairsin gan stealladh a-steach do K8S mar dhìomhaireachd tro loidhne-phìoban CD - SOPS airson Mozilla - obraichidh e glè mhath ann an co-bhonn ri dìomhaireachdan Kustomize. Tha innealan eile ann, leithid dotGPG, a bhios a’ coileanadh gnìomhan co-chosmhail: Cruth-clò HashiCorp, Gnàthaich Plugins Luach Dìomhair.

Ingress

Mura roghnaicheas tu cur air adhart puirt ionadail, bidh feum agad air Rianadair Ingress a tha air a rèiteachadh. Mura cleachd thu ingress-nginx (Clàr stiùiridh) is dòcha gu bheil fios agad mu thràth gum feum thu na notaichean riatanach a chuir a-steach ingress-patch.yaml.tmpl no platform/ingress.yaml. Ma tha thu a’ cleachdadh ingress-nginx agus gum faic thu clas ingress nginx le cothromachadh luchdan a’ comharrachadh e agus inntrigeadh DNS taobh a-muigh no cairt fiadhaich DNS, tha thu math a dhol. Air neo eile, cuir air dòigh an Rianadair Ingress agus DNS, no sgiob na ceumannan seo agus cùm an ceangal dìreach ris a’ pod.

TLS

Ma chleachdas tu manaidsear-teisteanais no kube-lego agus letsencrypt - gheibhear teisteanasan airson an logadh a-steach ùr gu fèin-obrachail. Mur eil, fosgail ingress-patch.yaml.tmpl agus gnàthaich e a rèir na feumalachdan agad.

Cur air bhog!

Ma lean thu a h-uile dad a tha sgrìobhte gu h-àrd, an uairsin an àithne make skaffold HOSTNAME=<you.example.com> bu chòir eisimpleir a tha ri fhaighinn a chuir air bhog ann an <hostname>/camunda

Mura h-eil thu air do logadh a-steach a shuidheachadh gu URL poblach, faodaidh tu ath-stiùireadh leis localhost: kubectl port-forward -n camunda-bpm-demo svc/camunda-bpm 8080:8080 air localhost:8080/camunda

Fuirich beagan mhionaidean gus am bi Tomcat gu tur deiseil. Bheir Cert-manager beagan ùine gus an t-ainm fearainn a dhearbhadh. Faodaidh tu an uairsin sùil a chumail air na logaichean a’ cleachdadh innealan a tha rim faighinn leithid inneal mar kubetail, no dìreach a’ cleachdadh kubectl:

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

Na h-ath cheumannan

Ùghdarrachadh

Tha seo nas buntainniche ri bhith a’ rèiteachadh Camunda BPM na Kubernetes, ach tha e cudromach toirt fa-near, gu bunaiteach, gu bheil dearbhadh ciorramach anns an REST API. Faodaidh tu cuir an comas dearbhadh bunaiteach no cleachd dòigh eile mar J.W.T.. Faodaidh tu configmaps agus leabhraichean a chleachdadh gus xml, no xmlstarlet (faic gu h-àrd) a luchdachadh gus na faidhlichean a tha san ìomhaigh a dheasachadh, agus an dàrna cuid cleachd wget no an luchdachadh le bhith a’ cleachdadh inneal init agus tomhas-lìonaidh co-roinnte.

Stiùireadh seisean

Coltach ri mòran thagraidhean eile, bidh Camunda BPM a’ làimhseachadh seiseanan anns an JVM, mar sin ma tha thu airson iomadh mac-samhail a ruith, faodaidh tu seiseanan steigeach a chomasachadh (mar eisimpleir airson ingress-nginx), a bhios ann gus an tèid am mac-samhail à sealladh, no ma shuidhicheas tu am feart Max-Age airson briosgaidean. Airson fuasgladh nas làidire, faodaidh tu Manaidsear an t-Seisein a chleachdadh ann an Tomcat. Tha aig Lars post fa leth air a’ chuspair seo, ach rudeigin mar:

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

thuirt: faodaidh tu xmlstarlet a chleachdadh an àite sed

Chleachd sinn twemproxy air beulaibh Google Cloud Memorystore, le memcached-seisean-manaidsear (a’ toirt taic do Redis) airson a ruith.

Sgèileadh

Ma tha thu a’ tuigsinn seiseanan mu thràth, is dòcha gur e a’ chiad (agus gu tric an tè mu dheireadh) a’ chuingealachadh ri sgèileadh Camunda BPM an ceangal ris an stòr-dàta. Tha gnàthachadh pàirteach ri fhaighinn mu thràth"bhon bhogsa" Leig leinn cuideachd intialSize a dhì-cheadachadh anns an fhaidhle settings.xml. Cuir ris Autoscaler pod còmhnard (HPA) agus is urrainn dhut gu furasta an àireamh de pods a sgèileadh gu fèin-ghluasadach.

Iarrtasan agus cuingeachaidhean

В platform/deployment.yaml Chì thu gu bheil sinn air còd cruaidh a dhèanamh air an raon ghoireasan. Bidh seo ag obair gu math le HPA, ach dh’ fhaodadh gum bi feum air rèiteachadh a bharrachd. Tha am paiste kustomize freagarrach airson seo. Cm. ingress-patch.yaml.tmpl и ./kustomization.yaml.tmpl

co-dhùnadh

Mar sin chuir sinn a-steach Camunda BPM air Kubernetes le metrics Prometheus, logaichean, stòr-dàta H2, TLS agus Ingress. Chuir sinn faidhlichean jar agus faidhlichean rèiteachaidh ris a’ cleachdadh ConfigMaps agus Dockerfile. Bhruidhinn sinn mu bhith ag iomlaid dàta gu meudan agus gu dìreach ri caochladairean àrainneachd bho dhìomhaireachd. A bharrachd air an sin, thug sinn seachad sealladh farsaing air stèidheachadh Camunda airson iomadh mac-samhail agus API dearbhte.

iomraidhean

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, eadar-theangachadh artaigilean Alastair Firth, Lars Lange

Source: www.habr.com

Cuir beachd ann