Qed tuża Kubernetes? Lest biex iċċaqlaq l-istanzi tiegħek ta' Camunda BPM minn magni virtwali, jew forsi sempliċement ipprova tħaddemhom fuq Kubernetes? Ejja nħarsu lejn xi konfigurazzjonijiet komuni u oġġetti individwali li jistgħu jiġu mfassla apposta għall-bżonnijiet speċifiċi tiegħek.
Jassumi li użajt Kubernetes qabel. Jekk le, għaliex ma tagħtix ħarsa lejn gwida u ma tibda l-ewwel cluster tiegħek?
Awturi
Alastair Firth (Alastair Firth) - Senior Site Reliability Engineer fit-tim ta' Camunda Cloud;
Lars Lange (Lars Lange) - Inġinier DevOps f'Camunda.
Fil-qosor:
git clone https://github.com/camunda-cloud/camunda-examples.git
cd camunda-examples/camunda-bpm-demo
make skaffold
Okay, probabbilment ma ħadimx għax m'għandekx skaffold u kustomize installati. Tajjeb allura aqra!
X'inhu Camunda BPM
Camunda BPM hija pjattaforma ta 'ġestjoni tal-proċess tan-negozju u awtomazzjoni tad-deċiżjonijiet ta' sors miftuħ li tgħaqqad l-utenti tan-negozju u l-iżviluppaturi tas-softwer. Huwa ideali għall-koordinazzjoni u l-konnessjoni ta 'nies, (mikro) servizzi jew saħansitra bots! Tista' taqra aktar dwar il-każijiet ta' użu differenti fuq rabta.
Għaliex tuża Kubernetes
Kubernetes sar l-istandard de facto għat-tħaddim ta 'applikazzjonijiet moderni fuq Linux. Bl-użu tas-sejħiet tas-sistema minflok l-emulazzjoni tal-ħardwer u l-abbiltà tal-kernel li jimmaniġġja l-memorja u l-bidla tal-kompitu, il-ħin tal-ibbutjar u l-ħin tal-istartjar jinżammu għall-minimu. Madankollu, l-akbar benefiċċju jista 'jiġi mill-API standard li Kubernetes jipprovdi biex jiġi kkonfigurat l-infrastruttura meħtieġa mill-applikazzjonijiet kollha: ħażna, netwerking u monitoraġġ. Għalaq 2020 snin f'Ġunju 6 u huwa forsi t-tieni l-akbar proġett ta' sors miftuħ (wara Linux). Dan l-aħħar ilu jistabbilizza b'mod attiv il-funzjonalità tiegħu wara iterazzjoni mgħaġġla matul l-aħħar ftit snin hekk kif din issir kritika għall-piżijiet tax-xogħol tal-produzzjoni madwar id-dinja.
Camunda BPM Engine jista 'faċilment jgħaqqad ma' applikazzjonijiet oħra li jaħdmu fuq l-istess cluster, u Kubernetes jipprovdi skalabbiltà eċċellenti, li tippermettilek iżżid l-ispejjeż tal-infrastruttura biss meta tkun verament meħtieġa (u tnaqqashom faċilment kif meħtieġ).
Il-kwalità tal-monitoraġġ hija wkoll imtejba ħafna b'għodod bħal Prometheus, Grafana, Loki, Fluentd u Elasticsearch, li jippermettulek tara ċentralment il-piżijiet tax-xogħol kollha fi cluster. Illum se nħarsu lejn kif nimplimentaw l-esportatur Prometheus fil-Magni Virtwali Java (JVM).
Għanijiet
Ejja nħarsu lejn ftit oqsma fejn nistgħu nippersonalizzaw l-immaġni Camunda BPM Docker (GitHub) sabiex jinteraġixxi tajjeb ma' Kubernetes.
Zkuk u metriċi;
Konnessjonijiet ta' database;
Awtentikazzjoni;
Ġestjoni tas-sessjoni.
Se nħarsu lejn diversi modi kif nilħqu dawn l-għanijiet u nuru b'mod ċar il-proċess kollu.
Innota: Qed tuża l-verżjoni Enterprise? Ħares hawn u aġġorna links tal-immaġni kif meħtieġ.
Żvilupp tal-fluss tax-xogħol
F'din id-demo, se nużaw Skaffold biex nibnu immaġini Docker billi tuża Google Cloud Build. Għandu appoġġ tajjeb għal diversi għodod (bħal Kustomize u Helm), għodod CI u build, u fornituri tal-infrastruttura. Fajl skaffold.yaml.tmpl jinkludi settings għal Google Cloud Build u GKE, li jipprovdi mod sempliċi ħafna biex titħaddem infrastruttura tal-produzzjoni.
make skaffold se jgħabbi l-kuntest Dockerfile fis-Cloud Build, jibni l-immaġni u aħżenha f'GCR, u mbagħad tapplika l-manifesti għall-cluster tiegħek. Dan huwa dak li jagħmel make skaffold, iżda Skaffold għandu ħafna karatteristiċi oħra.
Għall-mudelli tal-yaml f'Kubernetes, nużaw kustomize biex niġġestixxu s-superpożizzjonijiet tal-yaml mingħajr ma nfork il-manifest kollu, li jippermettilek tuża git pull --rebase għal aktar titjib. Issa huwa f'kubectl u jaħdem pjuttost tajjeb għal affarijiet bħal dawn.
Aħna nużaw ukoll envsubst biex timla l-hostname u l-ID tal-proġett GCP fil-fajls *.yaml.tmpl. Tista' tara kif taħdem fiha makefile jew sempliċement kompli aktar.
Skaffold - għall-ħolqien ta' l-immaġini tad-docker tiegħek u l-iskjerament faċli għall-GKE
Kopja ta' dan il-kodiċi
Envsubst
Fluss tax-xogħol bl-użu ta 'manifesti
Jekk ma tridx tuża kustomize jew skaffold, tista' tirreferi għall-manifesti fi generated-manifest.yaml u tadattahom għall-fluss tax-xogħol tal-għażla tiegħek.
Zkuk u metriċi
Prometheus sar l-istandard għall-ġbir tal-metriċi f'Kubernetes. Tokkupa l-istess niċċa bħal AWS Cloudwatch Metrics, Cloudwatch Alerts, Stackdriver Metrics, StatsD, Datadog, Nagios, vSphere Metrics u oħrajn. Huwa sors miftuħ u għandu lingwa ta' mistoqsija qawwija. Aħna ser nafdaw il-viżwalizzazzjoni lil Grafana - tiġi flimkien ma 'numru kbir ta' dashboards disponibbli barra mill-kaxxa. Huma konnessi ma 'xulxin u huma relattivament faċli biex jiġu installati magħhom prometheus-operatur.
B'mod awtomatiku, Prometheus juża l-mudell ta 'estrazzjoni <service>/metrics, u żżid kontenituri sidecar għal dan huwa komuni. Sfortunatament, il-metriċi JMX huma l-aħjar illoggjati fi ħdan il-JVM, għalhekk il-kontenituri sidecar mhumiex daqshekk effiċjenti. Ejja ngħaqqdu jmx_exporter sors miftuħ minn Prometheus għall-JVM billi żżidha mal-immaġni tal-kontenitur li se tipprovdi l-mogħdija /metrics fuq port differenti.
Żid Prometheus jmx_exporter mal-kontenitur
-- 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
Ukoll, dan kien faċli. L-esportatur se jimmonitorja tomcat u juri l-metriċi tiegħu fil-format Prometheus fuq <svc>:9404/metrics
Setup tal-esportatur
Il-qarrej attent jista’ jistaqsi minn fejn ġie prometheus-jmx.yaml? Hemm ħafna affarijiet differenti li jistgħu jaħdmu fil-JVM, u tomcat huwa biss wieħed minnhom, għalhekk l-esportatur jeħtieġ xi konfigurazzjoni addizzjonali. Konfigurazzjonijiet standard għal tomcat, wildfly, kafka u l-bqija huma disponibbli hawn. Se nżidu tomcat bħala ConfigMap f'Kubernetes u mbagħad mmuntah bħala volum.
Dan iżid kull element files[] bħala element ta' konfigurazzjoni ConfigMap. Il-ConfigMapGenerators huma tajbin għax iħaffu d-dejta tal-konfigurazzjoni u jġiegħlu l-pod restart jekk tinbidel. Huma jnaqqsu wkoll l-ammont ta 'konfigurazzjoni fl-Iskjerament peress li tista' timmonta "folder" sħiħ ta 'fajls ta' konfigurazzjoni f'VolumeMount wieħed.
Fl-aħħarnett, irridu nimmuntaw il-ConfigMap bħala volum mal-pod:
Sabiħ. Jekk Prometheus mhux ikkonfigurat biex jagħmel tindif sħiħ, jista 'jkollok tgħidlu biex tnaddaf il-miżwed. L-utenti tal-Operatur Prometheus jistgħu jużaw service-monitor.yaml biex tibda. Esplora Service-monitor.yaml, disinn tal-operatur и ServiceMonitorSpec qabel tibda.
L-estensjoni ta' dan il-mudell għal każijiet ta' użu oħra
Il-fajls kollha li nżidu ma' ConfigMapGenerator se jkunu disponibbli fid-direttorju l-ġdid /etc/config. Tista' testendi dan il-mudell biex timmonta kwalunkwe fajl ta' konfigurazzjoni ieħor li għandek bżonn. Tista 'anki jintramaw skript tal-istartjar ġdid. Tista 'tuża subPath biex jintramaw fajls individwali. Biex taġġorna l-fajls xml, ikkunsidra li tuża xmlstarlet minflok sed. Huwa diġà inkluż fl-immaġini.
Magażins
Aħbar kbira! Ir-reġistri tal-applikazzjonijiet huma diġà disponibbli fuq stdout, pereżempju ma ' kubectl logs. Fluentd (installat awtomatikament fil-GKE) jgħaddi r-zkuk tiegħek lil Elasticsearch, Loki, jew il-pjattaforma tal-illoggjar tal-intrapriża tiegħek. Jekk trid tuża jsonify għal zkuk allura tista 'ssegwi l-mudell ta' hawn fuq biex tinstalla logback.
Database
B'mod awtomatiku, l-immaġni se jkollha database H2. Dan mhux adattat għalina, u se nużaw Google Cloud SQL ma Cloud SQL Proxy - dan ikun meħtieġ aktar tard biex issolvi problemi interni. Din hija għażla sempliċi u affidabbli jekk ma jkollokx il-preferenzi tiegħek fit-twaqqif tad-database. AWS RDS jipprovdi servizz simili.
Irrispettivament mid-database li tagħżel, sakemm ma tkunx H2, ikollok bżonn tissettja l-varjabbli ambjentali xierqa f' platform/deploy.yaml. Jidher xi ħaġa bħal din:
Innota: Tista' tuża Kustomize biex tiskjera f'ambjenti differenti billi tuża overlay: eżempju.
Innota: użu valueFrom: secretKeyRef. Jekk jogħġbok, uża din il-karatteristika Kubernetes anke waqt l-iżvilupp biex iżżomm is-sigrieti tiegħek siguri.
Huwa probabbli li diġà għandek sistema preferuta għall-ġestjoni tas-sigrieti ta 'Kubernetes. Jekk le, hawn xi għażliet: Kriptaġġhom bil-KMS tal-fornitur tas-sħab tiegħek u mbagħad tinjettahom fil-K8S bħala sigrieti permezz tal-pipeline tas-CD - Mozilla SOPS - se taħdem tajjeb ħafna flimkien ma 'sigrieti Kustomize. Hemm għodod oħra, bħal dotGPG, li jwettqu funzjonijiet simili: HashiCorp Vault, Ippersonalizza Plugins tal-Valur Sigriet.
Ingress
Sakemm ma tagħżelx li tuża port forwarding lokali, ser ikollok bżonn Ingress Controller konfigurat. Jekk ma tużax ingress-nginx (Tabella tat-Tmun) allura x'aktarx diġà taf li għandek bżonn tinstalla l-annotazzjonijiet meħtieġa fi ingress-patch.yaml.tmpl jew platform/ingress.yaml. Jekk qed tuża ingress-nginx u tara nginx ingress klassi b'load balancer jipponta lejha u DNS esterna jew dħul DNS wildcard, int tajjeb li tmur. Inkella, ikkonfigura l-Kontrollur tal-Ingress u d-DNS, jew aqbeż dawn il-passi u żomm il-konnessjoni diretta mal-pod.
TLS
Jekk tuża maniġer taċ-ċert jew kube-lego u letsencrypt - ċertifikati għall-login il-ġdid se jinkisbu awtomatikament. Inkella, tiftaħ ingress-patch.yaml.tmpl u tippersonalizzaha biex taqdi l-bżonnijiet tiegħek.
Tnedija!
Jekk segwejt dak kollu miktub hawn fuq, allura l-kmand make skaffold HOSTNAME=<you.example.com> għandha tniedi istanza disponibbli fi <hostname>/camunda
Jekk ma ssettjajtx il-login tiegħek għal URL pubbliku, tista 'tidderieġiha mill-ġdid localhost: kubectl port-forward -n camunda-bpm-demo svc/camunda-bpm 8080:8080 fuq localhost:8080/camunda
Stenna ftit minuti sakemm it-tomcat ikun kompletament lest. Cert-manager se jieħu xi żmien biex jivverifika l-isem tad-dominju. Imbagħad tista' tissorvelja r-zkuk billi tuża għodod disponibbli bħal għodda bħal kubetail, jew sempliċement tuża kubectl:
Dan huwa aktar rilevanti għall-konfigurazzjoni ta 'Camunda BPM milli Kubernetes, iżda huwa importanti li wieħed jinnota li b'mod awtomatiku, l-awtentikazzjoni hija diżattivata fl-API REST. Tista jippermettu awtentikazzjoni bażika jew uża metodu ieħor bħal J.W.T.. Tista' tuża configmaps u volumi biex tgħabbi xml, jew xmlstarlet (ara hawn fuq) biex teditja fajls eżistenti fl-immaġni, u jew tuża wget jew tgħabbihom billi tuża kontenitur init u volum kondiviż.
Ġestjoni tas-sessjoni
Bħal ħafna applikazzjonijiet oħra, Camunda BPM jimmaniġġja sessjonijiet fil-JVM, għalhekk jekk trid tħaddem repliki multipli, tista 'tippermetti sessjonijiet li jwaħħlu (per eżempju għal ingress-nginx), li se jeżistu sakemm ir-replika tisparixxi, jew issettja l-attribut Max-Age għall-cookies. Għal soluzzjoni aktar robusta, tista' tuża Session Manager f'Tomcat. Lars għandu post separat fuq dan is-suġġett, iżda xi ħaġa bħal:
Jekk diġà tifhem is-sessjonijiet, allura l-ewwel (u ħafna drabi l-aħħar) limitazzjoni għall-iskala ta 'Camunda BPM tista' tkun il-konnessjoni mad-database. Personalizzazzjoni parzjali hija diġà disponibbli "mill-kaxxa" Ejja tiddiżattiva wkoll intialSize fil-fajl settings.xml. Żid Autoscaler tal-Pod Orizzontali (HPA) u tista 'faċilment tiskala awtomatikament in-numru ta' imżiewed.
Talbiet u restrizzjonijiet
В platform/deployment.yaml Int ser tara li konna hard-coded il-qasam tar-riżorsi. Dan jaħdem tajjeb ma 'HPA, iżda jista' jeħtieġ konfigurazzjoni addizzjonali. Il-garża kustomize hija adattata għal dan. Cm. ingress-patch.yaml.tmpl и ./kustomization.yaml.tmpl
Output
Allura installajna Camunda BPM fuq Kubernetes b'metriċi Prometheus, zkuk, database H2, TLS u Ingress. Żidna fajls vażetti u fajls ta 'konfigurazzjoni bl-użu ta' ConfigMaps u Dockerfile. Tkellimna dwar l-iskambju tad-dejta għal volumi u direttament għal varjabbli ambjentali minn sigrieti. Barra minn hekk, ipprovdejna ħarsa ġenerali lejn it-twaqqif ta 'Camunda għal repliki multipli u API awtentikata.