Rith Camunda BPM ar Kubernetes

Rith Camunda BPM ar Kubernetes

An bhfuil Kubernetes in úsáid agat? Réidh chun do chásanna Camunda BPM a bhogadh amach as meaisíní fíorúla, nó b'fhéidir iarracht a dhéanamh iad a rith ar Kubernetes? Breathnaímid ar roinnt cumraíochtaí coitianta agus míreanna aonair is féidir a chur in oiriúint do do riachtanais shonracha.

Glacann sé leis gur úsáid tú Kubernetes roimhe seo. Mura bhfuil, cén fáth nach mbreathnaíonn tú ar treoir agus gan tús a chur le do chéad bhraisle?

Údair

  • Alastair Firth (Alastair Firth) - Innealtóir Sinsearach Iontaofachta Láithreáin ar fhoireann Camunda Cloud;
  • Lars Lange (Lars Lange) - Innealtóir DevOps ag Camunda.

I mbeagán focal:

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

Ceart go leor, is dócha nár oibrigh sé toisc nach bhfuil scafall agus kustomize suiteáilte agat. Bhuel léigh ansin!

Cad é Camunda BPM?

Is ardán foinse oscailte bainistíochta próiseas gnó agus uathoibrithe cinntí é Camunda BPM a nascann úsáideoirí gnó agus forbróirí bogearraí. Tá sé iontach chun daoine, seirbhísí (micrea) nó fiú róbónna a chomhordú agus a nascadh! Is féidir leat tuilleadh a léamh faoi na cásanna úsáide éagsúla ag nasc.

Cén fáth a úsáid Kubernetes

Is é Kubernetes an caighdeán de facto chun feidhmchláir nua-aimseartha a rith ar Linux. Trí ghlaonna córais a úsáid in ionad aithrise crua-earraí agus cumas na heithne chun cuimhne agus aistriú tascanna a bhainistiú, coinnítear am tosaithe agus am tosaithe chomh híseal agus is féidir. Mar sin féin, b'fhéidir go dtiocfaidh an tairbhe is mó as an API caighdeánach a sholáthraíonn Kubernetes chun an bonneagar a theastaíonn ó gach feidhmchlár a chumrú: stóráil, líonrú agus monatóireacht. Chas sé 2020 bliana d’aois i mí an Mheithimh 6 agus b’fhéidir gurb é an dara tionscadal foinse oscailte is mó (tar éis Linux). Tá a fheidhmiúlacht á chobhsú go gníomhach le déanaí tar éis atriallta tapa le blianta beaga anuas de réir mar a éiríonn sé ríthábhachtach maidir le hualaí oibre táirgthe ar fud an domhain.

Is féidir le Camunda BPM Engine ceangal go héasca le hiarratais eile atá ag rith ar an mbraisle céanna, agus soláthraíonn Kubernetes scalability den scoth, rud a ligeann duit costais bonneagair a mhéadú ach amháin nuair is gá i ndáiríre (agus iad a laghdú go héasca de réir mar is gá).

Feabhsaítear cáilíocht na monatóireachta go mór freisin le huirlisí ar nós Prometheus, Grafana, Loki, Fluentd agus Elasticsearch, a ligeann duit féachaint go lárnach ar na hualaí oibre go léir i gcnuasach. Inniu beimid ag féachaint ar conas an t-onnmhaireoir Prometheus a chur i bhfeidhm sa Meaisín Fíorúil Java (JVM).

Cuspóirí

Breathnaímid ar roinnt réimsí inar féidir linn íomhá Camunda BPM Docker a shaincheapadh (github) ionas go n-idirghníomhaíonn sé go maith le Kubernetes.

  1. Logchomhaid agus méadracht;
  2. naisc bunachar sonraí;
  3. Fíordheimhniú;
  4. Bainistíocht seisiúin.

Breathnóimid ar bhealaí éagsúla leis na spriocanna seo a bhaint amach agus léireoimid an próiseas iomlán go soiléir.

Tabhair faoi deara: An bhfuil an leagan Enterprise á úsáid agat? Féach anseo agus naisc íomhá a nuashonrú de réir mar is gá.

Forbairt sreabhadh oibre

Sa taispeántas seo, úsáidfimid Skaffold chun íomhánna Docker a thógáil ag baint úsáide as Google Cloud Build. Tá tacaíocht mhaith aige d'uirlisí éagsúla (cosúil le Kustomize agus Helm), uirlisí CI agus tógáil, agus soláthraithe bonneagair. Comhad skaffold.yaml.tmpl áiríonn sé socruithe do Google Cloud Build agus GKE, ag soláthar bealach an-simplí chun bonneagar de ghrád táirgeachta a rith.

make skaffold luchtóidh an comhthéacs Dockerfile isteach i Cloud Build, tógfaidh sé an íomhá agus stórálfaidh sé i GCR í, agus ansin cuirfidh sé na manifests i bhfeidhm ar do bhraisle. Seo a dhéanann sé make skaffold, ach tá go leor gnéithe eile ag Skaffold.

Le haghaidh teimpléid yaml in Kubernetes, bainimid úsáid as kustomize chun forleagan yaml a bhainistiú gan foráil a dhéanamh ar an léiriú iomlán, rud a ligeann duit úsáid a bhaint as git pull --rebase le haghaidh tuilleadh feabhsuithe. Anois tá sé i kubectl agus oibríonn sé go maith do rudaí den sórt sin.

Bainimid úsáid freisin as envsubst chun an óstainm agus aitheantas an tionscadail GCP a líonadh sna comhaid *.yaml.tmpl. Is féidir leat a fheiceáil conas a oibríonn sé i makefile nó díreach leanúint ar aghaidh níos faide.

Réamhriachtanais

  • Cnuasach oibre Kubernetes
  • Saincheap
  • Scafall - chun do chuid íomhánna docker féin a chruthú agus chun iad a imscaradh go héasca chuig GKE
  • Cóip den chód seo
  • Envsubst

Sreabhadh oibre ag baint úsáide as manifests

Mura bhfuil tú ag iarraidh kustomize nó skaffold a úsáid, is féidir leat tagairt a dhéanamh do na manifests i generated-manifest.yaml agus iad a chur in oiriúint do do rogha sreabhadh oibre.

Logs agus méadracht

Is é Prometheus an caighdeán chun méadracht a bhailiú i Kubernetes. Tá an nideoige céanna aige le AWS Cloudwatch Metrics, Cloudwatch Alerts, Stackdriver Metrics, StatsD, Datadog, Nagios, vSphere Metrics agus daoine eile. Is foinse oscailte é agus tá teanga chumhachtach fiosrúcháin aige. Cuirfimid an léirshamhlú ar iontaoibh Grafana - tagann sé le líon mór de na dashboards atá ar fáil as an mbosca. Tá siad ceangailte lena chéile agus tá siad sách éasca a shuiteáil leo prometheus-oibreoir.

De réir réamhshocraithe, úsáideann Prometheus an tsamhail eastósctha <service>/metrics, agus tá sé coitianta coimeádáin taobhcharr a chur leis. Ar an drochuair, is fearr méadracht JMX a logáil laistigh den JVM, mar sin níl coimeádáin taobhcharr chomh héifeachtach. Déanaimis ceangal jmx_onnmhaireoir foinse oscailte ó Prometheus chuig an JVM trína chur leis an íomhá coimeádán a sholáthróidh an cosán /metrics ar phort eile.

Cuir Prometheus jmx_exporter leis an gcoimeádán

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

Bhuel, bhí sé sin éasca. Déanfaidh an t-onnmhaireoir monatóireacht ar tomcat agus taispeánfaidh sé a mhéadracht i bhformáid Prometheus ag <svc>:9404/metrics

Socrú onnmhaireora

Seans go n-iontas ar an léitheoir aireach cén áit ar tháinig sé prometheus-jmx.yaml? Tá go leor rudaí éagsúla is féidir a reáchtáil sa JVM, agus tá tomcat ach ceann amháin acu, mar sin ní mór don onnmhaireoir roinnt cumraíochta breise. Tá cumraíochtaí caighdeánacha do tomcat, wildfly, kafka agus mar sin de ar fáil anseo. Cuirfimid tomcat mar ConfigMap i Kubernetes agus ansin é a fheistiú mar imleabhar.

Ar dtús, cuirimid an comhad cumraíochta onnmhaireora chuig ár n-ardán / config / eolaire

platform/config
└── prometheus-jmx.yaml

Ansin cuirimid ConfigMapGenerator в kustomization.yaml.tmpl:

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

Cuirfidh sé seo gach eilimint files[] mar eilimint chumraíochta ConfigMap. Tá ConfigMapGenerators iontach mar go bhfuil na sonraí cumraíochta hash acu agus cuireann siad iallach ar pod a atosú má athraíonn sé. Laghdaíonn siad freisin an méid cumraíochta in Imscaradh toisc gur féidir leat "fillteán" iomlán de chomhaid chumraíochta a fheistiú in VolumeMount amháin.

Ar deireadh, ní mór dúinn an ConfigMap a fheistiú mar imleabhar don phod:

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

Iontach. Mura bhfuil Prometheus cumraithe le glanadh iomlán a dhéanamh, b'fhéidir go mbeadh ort a rá leis na pods a ghlanadh. Is féidir le húsáideoirí Oibreoir Prometheus a úsáid service-monitor.yaml chun tús a chur leis. Déan iniúchadh Service-monitor.yaml, dearadh oibreoir и ServiceMonitorSpec sula dtosaíonn tú.

An patrún seo a leathnú go cásanna úsáide eile

Beidh gach comhad a chuirimid le ConfigMapGenerator ar fáil san eolaire nua /etc/config. Is féidir leat an teimpléad seo a leathnú chun aon chomhaid chumraíochta eile a theastaíonn uait a fheistiú. Is féidir leat fiú script tosaithe nua a shuiteáil. Is féidir leat úsáid a bhaint as fochonair chun comhaid aonair a shuiteáil. Chun comhaid xml a nuashonrú, smaoinigh ar úsáid a bhaint as xmlstarlet in ionad sed. Tá sé san áireamh cheana féin san íomhá.

Irisí

Nuacht iontach! Tá logaí feidhmchlár ar fáil cheana féin ar stdout, mar shampla le kubectl logs. Cuirfidh Fluentd (suiteáilte de réir réamhshocraithe in GKE) do logaí ar aghaidh chuig Elasticsearch, Loki, nó d'ardán logála fiontair. Más mian leat jsonify a úsáid le haghaidh logaí is féidir leat an teimpléad thuas a leanúint chun a shuiteáil aischothú.

Bunachar Sonraí

De réir réamhshocraithe, beidh bunachar sonraí H2 ag an íomhá. Níl sé seo oiriúnach dúinn, agus úsáidfimid Google Cloud SQL le Cloud SQL Proxy - beidh sé seo ag teastáil níos déanaí chun fadhbanna inmheánacha a réiteach. Is rogha shimplí iontaofa é seo mura bhfuil do shainroghanna féin agat agus an bunachar sonraí á chur ar bun agat. Soláthraíonn AWS RDS seirbhís den chineál céanna.

Is cuma cén bunachar sonraí a roghnaíonn tú, ach amháin gur H2 é, beidh ort na hathróga timpeallachta cuí a shocrú i platform/deploy.yaml. Breathnaíonn sé rud éigin 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
[...]

Tabhair faoi deara: Is féidir leat Kustomize a úsáid chun imscaradh chuig timpeallachtaí éagsúla ag baint úsáide as forleagan: mar shampla.

Tabhair faoi deara: úsáid valueFrom: secretKeyRef. Le do thoil, bain úsáid as an ghné Kubernetes seo fiú le linn forbartha a choinneáil do rúin sábháilte.

Is dócha go bhfuil córas roghnaithe agat cheana féin chun rúin Kubernetes a bhainistiú. Mura bhfuil, seo roinnt roghanna: Déan iad a chriptiú le KMS do sholáthraí néal agus ansin iad a instealladh isteach i K8S mar rúin tríd an bpíblíne CD - MozillaSOPS - oibreoidh sé go han-mhaith i gcomhcheangal le rúin Kustomize. Tá uirlisí eile ann, mar dotGPG, a chomhlíonann feidhmeanna comhchosúla: Cruinneachán HashiCorp, Saincheap Breiseáin Luach Rúnda.

Ingress

Mura roghnaíonn tú cur ar aghaidh poirt áitiúil a úsáid, beidh Rialaitheoir Ingress cumraithe uait. Mura n-úsáideann tú ingress-nginx (Cairt Helm) ansin is dócha go bhfuil a fhios agat cheana féin go gcaithfidh tú na nótaí riachtanacha a shuiteáil i ingress-patch.yaml.tmplplatform/ingress.yaml. Má tá ingress-nginx á úsáid agat agus má fheiceann tú rang ingress nginx le cothromóir ualaigh ag díriú air agus iontráil DNS seachtrach nó cárta saoróg, tá tú go maith chun dul. Seachas sin, cumraigh an Rialaitheoir Ingress agus DNS, nó scipeáil na céimeanna seo agus coinnigh an nasc díreach leis an pod.

TLS

Má úsáideann tú bainisteoir deimhnithe nó kube-lego agus letsencrypt - gheofar deimhnithe don logáil isteach nua go huathoibríoch. Seachas sin, oscail ingress-patch.yaml.tmpl agus é a shaincheapadh chun freastal ar do chuid riachtanas.

Seoladh!

Má lean tú gach rud scríofa thuas, ansin an t-ordú make skaffold HOSTNAME=<you.example.com> ba chóir dóibh sampla atá ar fáil a sheoladh i <hostname>/camunda

Mura bhfuil do logáil isteach socraithe agat chuig URL poiblí, is féidir leat é a atreorú localhost: kubectl port-forward -n camunda-bpm-demo svc/camunda-bpm 8080:8080 ar localhost:8080/camunda

Fan cúpla nóiméad go dtí go bhfuil Tomcat go hiomlán réidh. Tógfaidh bainisteoir teastas roinnt ama chun an t-ainm fearainn a fhíorú. Is féidir leat monatóireacht a dhéanamh ar na logaí ansin ag baint úsáide as uirlisí atá ar fáil mar uirlis mar kubetail, nó go simplí ag baint úsáide as kubectl:

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

Na chéad chéimeanna eile

Údarú

Tá sé seo níos ábhartha maidir le Camunda BPM a chumrú ná Kubernetes, ach tá sé tábhachtach a thabhairt faoi deara, de réir réamhshocraithe, go bhfuil fíordheimhniú díchumasaithe san API REST. Is féidir leat fíordheimhniú bunúsach a chumasú nó modh eile a úsáid mar J.W.T.. Is féidir leat configmaps agus toirteanna a úsáid chun xml a luchtú, nó xmlstarlet (féach thuas) chun comhaid reatha san íomhá a chur in eagar, agus wget a úsáid nó iad a luchtú ag baint úsáide as coimeádán init agus toirt roinnte.

Bainistíocht seisiúin

Cosúil le go leor feidhmchlár eile, láimhseálann Camunda BPM seisiúin sa JVM, mar sin más mian leat go leor macasamhla a rith, is féidir leat seisiúin ghreamaitheacha a chumasú (mar shampla le haghaidh ingress-nginx), a bheidh ann go dtí go n-imíonn an macasamhail, nó go socrófar an tréith Max-Aois le haghaidh fianáin. Chun réiteach níos láidre a fháil, is féidir leat Bainisteoir Seisiúin a imscaradh i Tomcat. Tá Lars post ar leith ar an ábhar seo, ach rud éigin 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

Tabhair faoi deara: is féidir leat xmlstarlet a úsáid in ionad sed

Bhaineamar úsáid as twemproxy os comhair Google Cloud Memorystore, le memcached-session-manager (tacaíonn Redis) chun é a rith.

Scálú

Má thuigeann tú seisiúin cheana féin, is féidir gurb é an chéad teorainn (agus go minic an ceann deireanach) le Camunda BPM a scálú ná an nasc leis an mbunachar sonraí. Tá oiriúnú páirteach ar fáil cheana féin"ón mbosca" A ligean ar a dhíchumasú freisin intialSize sa chomhad settings.xml. Cuir Uathscálaálaí Pod Cothrománach (HPA) agus is féidir leat go héasca scála go huathoibríoch ar líon na pods.

Iarratais agus srianta

В platform/deployment.yaml Feicfidh tú go bhfuil an réimse acmhainní códaithe go dian againn. Oibríonn sé seo go maith le HPA, ach d'fhéadfadh go mbeadh cumraíocht bhreise ag teastáil. Tá an paiste kustomize oiriúnach do seo. Cm. ingress-patch.yaml.tmpl и ./kustomization.yaml.tmpl

Aschur

Mar sin chuireamar isteach Camunda BPM ar Kubernetes le méadracht Prometheus, logaí, bunachar sonraí H2, TLS agus Ingress. Chuireamar comhaid jar agus comhaid cumraíochta leis ag baint úsáide as ConfigMaps agus Dockerfile. Labhair muid faoi shonraí a mhalartú go toirteanna agus go díreach chuig athróga timpeallachta ó rúin. Ina theannta sin, sholáthraíomar forbhreathnú ar Camunda a bhunú le haghaidh il-macasamhla agus API fíordheimhnithe.

tagairtí

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, aistriúchán Airteagal Alastair Firth, Lars Lange

Foinse: will.com

Add a comment