Kubernetes tau dhau los ua tus qauv de facto rau kev khiav cov ntawv thov niaj hnub ntawm Linux. Los ntawm kev siv lub kaw lus hu es tsis txhob kho vajtse emulation thiab lub kernel lub peev xwm los tswj kev nco thiab ua haujlwm hloov, lub sijhawm khau raj thiab lub sijhawm pib yog khaws cia kom tsawg. Txawm li cas los xij, qhov txiaj ntsig loj tshaj plaws tuaj yeem yog los ntawm tus qauv API uas Kubernetes muab los teeb tsa cov txheej txheem tsim nyog los ntawm txhua daim ntawv thov: khaws cia, sib tham, thiab saib xyuas. Nws muaj 2020 xyoo nyob rau lub Rau Hli 6 thiab tej zaum yog qhov thib ob loj tshaj plaws qhib qhov project (tom qab Linux). Nws tsis ntev los no tau ua haujlwm ruaj khov rau nws txoj haujlwm tom qab kev rov ua haujlwm nrawm dua ob peb xyoos dhau los vim nws dhau los ua qhov tseem ceeb rau kev tsim khoom ua haujlwm thoob ntiaj teb.
Camunda BPM Cav tuaj yeem txuas tau yooj yim rau lwm daim ntawv thov khiav ntawm tib pawg, thiab Kubernetes muab kev ua kom zoo tshaj plaws, tso cai rau koj kom nce cov nqi vaj tsev tsuas yog thaum xav tau tiag tiag (thiab yooj yim txo lawv raws li xav tau).
Kev saib xyuas zoo kuj tseem txhim kho zoo nrog cov cuab yeej xws li Prometheus, Grafana, Loki, Fluentd thiab Elasticsearch, tso cai rau koj los saib xyuas tag nrho cov haujlwm hauv ib pawg. Niaj hnub no peb yuav saib yuav ua li cas los siv Prometheus exporter rau hauv Java Virtual Machine (JVM).
Cov hom phiaj
Cia peb saib ob peb thaj chaw uas peb tuaj yeem hloov kho Camunda BPM Docker duab (github) kom nws cuam tshuam zoo nrog Kubernetes.
Log thiab ntsuas;
Database kev sib txuas;
Kev lees paub tseeb;
Kev tswj hwm kev sib tham.
Peb yuav saib ntau txoj hauv kev kom ua tiav cov hom phiaj no thiab qhia meej txog tag nrho cov txheej txheem.
Примечание: Koj puas siv Enterprise version? Saib no thiab hloov kho cov duab txuas raws li xav tau.
Kev txhim kho kev ua haujlwm
Hauv qhov demo no, peb yuav siv Skaffold los tsim Docker dluab siv Google Cloud Build. Nws muaj kev txhawb nqa zoo rau ntau yam cuab yeej (xws li Kustomize thiab Helm), CI thiab tsim cov cuab yeej, thiab cov chaw muab kev pabcuam. Cov ntaub ntawv skaffold.yaml.tmpl suav nrog kev teeb tsa rau Google Cloud Tsim thiab GKE, muab txoj hauv kev yooj yim heev los khiav cov txheej txheem tsim khoom-qib.
make skaffold yuav thauj cov ntsiab lus Dockerfile rau hauv Huab Tsim, tsim cov duab thiab khaws cia rau hauv GCR, thiab tom qab ntawd siv cov manifests rau koj pawg. Qhov no yog qhov nws ua make skaffold, tab sis Skaffold muaj ntau lwm yam nta.
Rau yaml templates hauv Kubernetes, peb siv kustomize los tswj yaml overlays yam tsis muaj forking tag nrho manifest, cia koj siv. git pull --rebase rau kev txhim kho ntxiv. Tam sim no nws nyob hauv kubectl thiab nws ua haujlwm zoo heev rau tej yam zoo li no.
Peb kuj siv envsubst kom populate hostname thiab GCP project ID nyob rau hauv cov ntaub ntawv *.yaml.tmpl. Koj tuaj yeem pom nws ua haujlwm li cas hauv makefile los yog cia li txuas ntxiv mus.
-- 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
Zoo, qhov ntawd yog qhov yooj yim. Tus xa tawm yuav saib xyuas tomcat thiab tso saib nws cov ntsuas hauv Prometheus hom ntawm <svc>:9404/metrics
Exporter teeb tsa
Tus neeg nyeem nyeem yuav xav tias nws tuaj qhov twg los prometheus-jmx.yaml? Muaj ntau yam sib txawv uas tuaj yeem khiav hauv JVM, thiab tomcat tsuas yog ib qho ntawm lawv, yog li tus neeg xa khoom xav tau qee qhov kev teeb tsa ntxiv. Cov qauv kev teeb tsa rau tomcat, wildfly, kafka thiab lwm yam muaj no. Peb yuav ntxiv tomcat li ConfigMap hauv Kubernetes thiab tom qab ntawd mount nws li ntim.
Ua ntej, peb ntxiv cov ntaub ntawv exporter configuration rau peb lub platform / config / directory
Zoo kawg. Yog tias Prometheus tsis tau teeb tsa los ua kev tu tag nrho, koj yuav tsum tau qhia nws kom ntxuav cov pods. Cov neeg siv Prometheus Operator tuaj yeem siv service-monitor.yaml pib. Tshawb nrhiav Service-monitor.yaml, tus neeg ua haujlwm tsim и ServiceMonitorSpec ua ntej koj pib.
Txuas tus qauv no mus rau lwm yam kev siv
Tag nrho cov ntaub ntawv peb ntxiv rau ConfigMapGenerator yuav muaj nyob rau hauv cov npe tshiab /etc/config. Koj tuaj yeem txuas ntxiv cov qauv no rau mount lwm cov ntaub ntawv teeb tsa koj xav tau. Koj muaj peev xwm txawm mount ib tug tshiab startup tsab ntawv. Koj siv tau subPath mus mount ib tug neeg cov ntaub ntawv. Txhawm rau hloov cov ntaub ntawv xml, xav txog kev siv xmlstarlet es sed. Nws twb suav nrog hauv daim duab.
Cov ntawv xov xwm
Xov xwm zoo heev! Daim ntawv thov cav twb muaj nyob rau ntawm stdout, piv txwv li nrog kubectl logs. Fluentd (tshem los ntawm lub neej ntawd hauv GKE) yuav xa koj cov ntawv teev npe mus rau Elasticsearch, Loki, lossis koj lub lag luam nkag platform. Yog tias koj xav siv jsonify rau cov cav ces koj tuaj yeem ua raws li cov qauv saum toj no los nruab logback.
Database
Los ntawm lub neej ntawd, daim duab yuav muaj H2 database. Qhov no tsis haum rau peb, thiab peb yuav siv Google Cloud SQL nrog Huab SQL Proxy - qhov no yuav xav tau tom qab los daws teeb meem sab hauv. Qhov no yog qhov kev xaiv yooj yim thiab txhim khu kev qha yog tias koj tsis muaj koj tus kheej nyiam hauv kev teeb tsa cov ntaub ntawv. AWS RDS muab kev pabcuam zoo sib xws.
Примечание: Koj tuaj yeem siv Kustomize los xa mus rau qhov chaw sib txawv siv qhov sib tshooj: Piv txwv.
Примечание: siv valueFrom: secretKeyRef. Thov, siv Qhov no Kubernetes feature txawm tias thaum lub sij hawm txoj kev loj hlob kom koj secrets muaj kev ruaj ntseg.
Nws zoo li koj twb muaj qhov kev nyiam rau kev tswj Kubernetes zais cia. Yog tias tsis yog, ntawm no yog qee qhov kev xaiv: Encrypting lawv nrog koj tus kws kho mob huab cua KMS thiab tom qab ntawd txhaj rau hauv K8S raws li kev zais ntawm CD pipeline − Mozilla SOPS - yuav ua hauj lwm zoo heev ua ke nrog Kustomize secrets. Muaj lwm yam cuab yeej, xws li dotGPG, uas ua haujlwm zoo sib xws: HashiCorp Vault, Customize Secret Value Plugins.
Ingress
Tshwj tsis yog tias koj xaiv siv qhov chaw nres nkoj xa mus hauv zos, koj yuav xav tau Ingress Controller teeb tsa. Yog koj tsis siv ingress-nginx (Helm daim duab) ces koj feem ntau yuav paub tias koj yuav tsum tau nruab qhov tsim nyog annotations hauv ingress-patch.yaml.tmpl los yog platform/ingress.yaml. Yog tias koj siv ingress-nginx thiab pom nginx ingress chav kawm nrog lub load balancer taw rau nws thiab ib qho DNS sab nraud lossis wildcard DNS nkag, koj zoo mus. Txwv tsis pub, teeb tsa Ingress Controller thiab DNS, lossis hla cov kauj ruam no thiab khaws cov kev sib txuas ncaj qha mus rau lub pod.
TLS
Yog koj siv ntawv pov thawj-thawj coj los yog kube-lego thiab letsencrypt - daim ntawv pov thawj rau tus ID nkag mus tshiab yuav tau txais. Txwv tsis pub, qhib ingress-patch.yaml.tmpl thiab kho nws kom haum koj cov kev xav tau.
Tua tawm!
Yog tias koj ua raws txhua yam uas tau sau saum toj no, ces cov lus txib make skaffold HOSTNAME=<you.example.com> yuav tsum tso ib qho piv txwv muaj nyob rau hauv <hostname>/camunda
Tos ob peb feeb kom txog thaum tomcat npaj txhij. Cert-manager yuav siv qee lub sijhawm los txheeb xyuas lub npe sau npe. Tom qab ntawd koj tuaj yeem saib xyuas cov cav uas siv cov cuab yeej muaj, xws li cov cuab yeej xws li kubetail, lossis tsuas yog siv kubectl:
Qhov no muaj feem cuam tshuam rau kev teeb tsa Camunda BPM dua li Kubernetes, tab sis nws yog ib qho tseem ceeb uas yuav tsum nco ntsoov tias los ntawm lub neej ntawd, kev lees paub yog neeg tsis taus hauv REST API. Koj ua tau pab kom yooj yim authentication los yog siv lwm txoj kev zoo li J.W.T.. Koj tuaj yeem siv configmaps thiab ntim kom thauj khoom xml, lossis xmlstarlet (saib saum toj no) los kho cov ntaub ntawv uas twb muaj lawm hauv daim duab, thiab siv wget lossis thauj lawv siv lub thawv init thiab ntim sib koom.
Kev tswj hwm kev sib tham
Zoo li ntau lwm daim ntawv thov, Camunda BPM tuav cov kev sib tham hauv JVM, yog li yog tias koj xav khiav ntau qhov kev hloov pauv, koj tuaj yeem ua kom cov ntu nplaum (piv txwv li rau ingress-nginx), uas yuav muaj nyob kom txog rau thaum lub replica ploj, los yog teem lub Max-Age attribute rau ncuav qab zib. Rau qhov kev daws teeb meem zoo dua, koj tuaj yeem xa Tus Thawj Saib Xyuas Session hauv Tomcat. Lars muaj cais ncej ntawm lub ncauj lus no, tab sis ib yam dab tsi zoo li:
Yog tias koj twb nkag siab cov kev sib tham, ces thawj zaug (thiab feem ntau qhov kawg) txwv rau kev ntsuas Camunda BPM tej zaum yuav yog qhov kev sib txuas rau cov ntaub ntawv. Ib nrab customization twb muaj "los ntawm lub thawv" Wb kuj lov tes taw intialSize hauv cov ntaub ntawv settings.xml. Ntxiv Kab rov tav Pod Autoscaler (HPA) thiab koj tuaj yeem yooj yim cia li ntsuas tus naj npawb ntawm cov pods.
Kev thov thiab kev txwv
В platform/deployment.yaml Koj yuav pom tias peb tau hard-coded cov chaw muab kev pab. Qhov no ua haujlwm zoo nrog HPA, tab sis tej zaum yuav xav tau kev teeb tsa ntxiv. Lub kustomize thaj yog haum rau qhov no. Cm. ingress-patch.yaml.tmpl и ./kustomization.yaml.tmpl
xaus
Yog li peb tau nruab Camunda BPM ntawm Kubernetes nrog Prometheus metrics, cav, H2 database, TLS thiab Ingress. Peb ntxiv cov ntaub ntawv ntim thiab cov ntaub ntawv teeb tsa siv ConfigMaps thiab Dockerfile. Peb tham txog kev sib pauv cov ntaub ntawv rau ntim thiab ncaj qha rau ib puag ncig hloov pauv los ntawm kev zais cia. Tsis tas li ntawd, peb tau muab cov ntsiab lus ntawm kev teeb tsa Camunda rau ntau yam replicas thiab authenticated API.