Kubernetesలో Camunda BPMని అమలు చేస్తోంది

Kubernetesలో Camunda BPMని అమలు చేస్తోంది

మీరు Kubernetes ఉపయోగిస్తున్నారా? మీ Camunda BPM దృష్టాంతాలను వర్చువల్ మెషీన్‌ల నుండి తరలించడానికి సిద్ధంగా ఉన్నారా లేదా వాటిని కుబెర్నెట్స్‌లో అమలు చేయడానికి ప్రయత్నించవచ్చా? మీ నిర్దిష్ట అవసరాలకు అనుగుణంగా కొన్ని సాధారణ కాన్ఫిగరేషన్‌లు మరియు వ్యక్తిగత అంశాలను చూద్దాం.

మీరు ఇంతకు ముందు కుబెర్నెట్స్‌ని ఉపయోగించారని ఇది ఊహిస్తుంది. కాకపోతే, ఎందుకు పరిశీలించకూడదు గైడ్ మరియు మీ మొదటి క్లస్టర్‌ను ప్రారంభించలేదా?

రచయితలు

సంక్షిప్తంగా:

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

సరే, మీరు స్కాఫోల్డ్ మరియు కస్టమైజ్ ఇన్‌స్టాల్ చేయనందున ఇది బహుశా పని చేయకపోవచ్చు. బాగా, అప్పుడు చదవండి!

కముండా BPM అంటే ఏమిటి

Camunda BPM అనేది వ్యాపార వినియోగదారులు మరియు సాఫ్ట్‌వేర్ డెవలపర్‌లను కనెక్ట్ చేసే ఓపెన్ సోర్స్ బిజినెస్ ప్రాసెస్ మేనేజ్‌మెంట్ మరియు డెసిషన్ ఆటోమేషన్ ప్లాట్‌ఫారమ్. వ్యక్తులు, (సూక్ష్మ) సేవలు లేదా బాట్‌లను సమన్వయం చేయడానికి మరియు కనెక్ట్ చేయడానికి ఇది అనువైనది! మీరు వివిధ వినియోగ కేసుల గురించి మరింత చదువుకోవచ్చు లింక్.

ఎందుకు Kubernetes ఉపయోగించండి

Linuxలో ఆధునిక అనువర్తనాలను అమలు చేయడానికి Kubernetes వాస్తవ ప్రమాణంగా మారింది. హార్డ్‌వేర్ ఎమ్యులేషన్‌కు బదులుగా సిస్టమ్ కాల్‌లను ఉపయోగించడం ద్వారా మరియు మెమరీని నిర్వహించే కెర్నల్ సామర్థ్యం మరియు టాస్క్ స్విచింగ్, బూట్ సమయం మరియు ప్రారంభ సమయం కనిష్టంగా ఉంచబడతాయి. అయినప్పటికీ, అన్ని అప్లికేషన్‌లకు అవసరమైన మౌలిక సదుపాయాలను కాన్ఫిగర్ చేయడానికి Kubernetes అందించే ప్రామాణిక API నుండి అతిపెద్ద ప్రయోజనం రావచ్చు: నిల్వ, నెట్‌వర్కింగ్ మరియు పర్యవేక్షణ. ఇది జూన్ 2020లో 6 సంవత్సరాలు నిండింది మరియు ఇది బహుశా రెండవ అతిపెద్ద ఓపెన్ సోర్స్ ప్రాజెక్ట్ (Linux తర్వాత). ప్రపంచవ్యాప్తంగా ఉత్పత్తి పనిభారానికి ఇది కీలకంగా మారినందున గత కొన్ని సంవత్సరాలుగా వేగవంతమైన పునరావృతం తర్వాత ఇది ఇటీవల దాని కార్యాచరణను చురుకుగా స్థిరీకరిస్తోంది.

Camunda BPM ఇంజిన్ అదే క్లస్టర్‌పై నడుస్తున్న ఇతర అప్లికేషన్‌లకు సులభంగా కనెక్ట్ చేయగలదు మరియు కుబెర్నెట్స్ అద్భుతమైన స్కేలబిలిటీని అందిస్తుంది, ఇది నిజంగా అవసరమైనప్పుడు మాత్రమే మౌలిక సదుపాయాల ఖర్చులను పెంచడానికి మిమ్మల్ని అనుమతిస్తుంది (మరియు అవసరమైనప్పుడు వాటిని సులభంగా తగ్గించండి).

ప్రోమేతియస్, గ్రాఫానా, లోకీ, ఫ్లూయెంట్డ్ మరియు ఎలాస్టిక్‌సెర్చ్ వంటి సాధనాలతో పర్యవేక్షణ నాణ్యత కూడా బాగా మెరుగుపడింది, క్లస్టర్‌లోని అన్ని వర్క్‌లోడ్‌లను సెంట్రల్‌గా వీక్షించడానికి మిమ్మల్ని అనుమతిస్తుంది. ఈ రోజు మనం ప్రోమేతియస్ ఎగుమతిదారుని జావా వర్చువల్ మెషీన్ (JVM)లో ఎలా అమలు చేయాలో చూద్దాం.

గోల్స్

మేము Camunda BPM డాకర్ చిత్రాన్ని అనుకూలీకరించగల కొన్ని ప్రాంతాలను చూద్దాం (github) తద్వారా ఇది కుబెర్నెట్స్‌తో బాగా సంకర్షణ చెందుతుంది.

  1. లాగ్‌లు మరియు కొలమానాలు;
  2. డేటాబేస్ కనెక్షన్లు;
  3. ప్రమాణీకరణ;
  4. సెషన్ నిర్వహణ.

మేము ఈ లక్ష్యాలను సాధించడానికి అనేక మార్గాలను పరిశీలిస్తాము మరియు మొత్తం ప్రక్రియను స్పష్టంగా చూపుతాము.

వ్యాఖ్య: మీరు ఎంటర్‌ప్రైజ్ వెర్షన్‌ని ఉపయోగిస్తున్నారా? చూడు ఇక్కడ మరియు అవసరమైన విధంగా చిత్ర లింక్‌లను నవీకరించండి.

వర్క్‌ఫ్లో అభివృద్ధి

ఈ డెమోలో, మేము Google క్లౌడ్ బిల్డ్‌ని ఉపయోగించి డాకర్ చిత్రాలను రూపొందించడానికి స్కాఫోల్డ్‌ని ఉపయోగిస్తాము. ఇది వివిధ టూల్స్ (కస్టమైజ్ మరియు హెల్మ్ వంటివి), CI మరియు బిల్డ్ టూల్స్ మరియు ఇన్‌ఫ్రాస్ట్రక్చర్ ప్రొవైడర్‌లకు మంచి మద్దతును కలిగి ఉంది. ఫైల్ skaffold.yaml.tmpl Google క్లౌడ్ బిల్డ్ మరియు GKE కోసం సెట్టింగ్‌లను కలిగి ఉంటుంది, ఉత్పత్తి-గ్రేడ్ మౌలిక సదుపాయాలను అమలు చేయడానికి చాలా సులభమైన మార్గాన్ని అందిస్తుంది.

make skaffold క్లౌడ్ బిల్డ్‌లో డాకర్‌ఫైల్ సందర్భాన్ని లోడ్ చేస్తుంది, చిత్రాన్ని రూపొందించి, దానిని GCRలో నిల్వ చేస్తుంది, ఆపై మీ క్లస్టర్‌కు మానిఫెస్ట్‌లను వర్తింపజేస్తుంది. ఇది చేస్తుంది make skaffold, కానీ స్కాఫోల్డ్ అనేక ఇతర లక్షణాలను కలిగి ఉంది.

Kubernetesలోని yaml టెంప్లేట్‌ల కోసం, మేము మొత్తం మానిఫెస్ట్‌ను ఫోర్క్ చేయకుండా yaml ఓవర్‌లేలను నిర్వహించడానికి kustomizeని ఉపయోగిస్తాము, ఇది మిమ్మల్ని ఉపయోగించడానికి అనుమతిస్తుంది git pull --rebase మరిన్ని మెరుగుదలల కోసం. ఇప్పుడు అది kubectlలో ఉంది మరియు అలాంటి వాటి కోసం ఇది బాగా పని చేస్తుంది.

మేము *.yaml.tmpl ఫైల్‌లలో హోస్ట్ పేరు మరియు GCP ప్రాజెక్ట్ IDని నింపడానికి envsubstని కూడా ఉపయోగిస్తాము. ఇది ఎలా పని చేస్తుందో మీరు చూడవచ్చు makefile లేదా ఇంకా కొనసాగండి.

కనీసావసరాలు

మానిఫెస్ట్‌లను ఉపయోగించి వర్క్‌ఫ్లో

మీరు కస్టమైజ్ లేదా స్కాఫోల్డ్‌ని ఉపయోగించకూడదనుకుంటే, మీరు మానిఫెస్ట్‌లను ఇన్‌లో చూడవచ్చు generated-manifest.yaml మరియు వాటిని మీకు నచ్చిన వర్క్‌ఫ్లోకు అనుగుణంగా మార్చుకోండి.

లాగ్‌లు మరియు కొలమానాలు

కుబెర్నెట్స్‌లో కొలమానాలను సేకరించడానికి ప్రోమేతియస్ ప్రమాణంగా మారింది. ఇది AWS క్లౌడ్‌వాచ్ మెట్రిక్‌లు, క్లౌడ్‌వాచ్ హెచ్చరికలు, స్టాక్‌డ్రైవర్ మెట్రిక్‌లు, స్టాట్స్‌డి, డేటాడాగ్, నాగియోస్, vSphere మెట్రిక్‌లు మరియు ఇతర వాటితో సమానమైన స్థానాన్ని ఆక్రమించింది. ఇది ఓపెన్ సోర్స్ మరియు శక్తివంతమైన ప్రశ్న భాషని కలిగి ఉంది. మేము విజువలైజేషన్‌ను గ్రాఫానాకు అప్పగిస్తాము - ఇది పెద్ద సంఖ్యలో డ్యాష్‌బోర్డ్‌లతో బాక్స్ వెలుపల అందుబాటులో ఉంటుంది. అవి ఒకదానికొకటి అనుసంధానించబడి ఉంటాయి మరియు ఇన్‌స్టాల్ చేయడం చాలా సులభం ప్రోమేతియస్-ఆపరేటర్.

డిఫాల్ట్‌గా, ప్రోమేతియస్ వెలికితీత నమూనాను ఉపయోగిస్తుంది <service>/metrics, మరియు దీని కోసం సైడ్‌కార్ కంటైనర్‌లను జోడించడం సాధారణం. దురదృష్టవశాత్తూ, JMX మెట్రిక్‌లు JVMలో ఉత్తమంగా లాగ్ చేయబడ్డాయి, కాబట్టి సైడ్‌కార్ కంటైనర్‌లు అంత ప్రభావవంతంగా ఉండవు. కనెక్ట్ చేద్దాం jmx_exporter మార్గాన్ని అందించే కంటైనర్ ఇమేజ్‌కి జోడించడం ద్వారా ప్రోమేతియస్ నుండి JVMకి ఓపెన్ సోర్స్ /metrics వేరే పోర్ట్‌లో.

కంటైనర్‌కు Prometheus jmx_exporterని జోడించండి

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

బాగా, అది సులభం. ఎగుమతిదారు టామ్‌క్యాట్‌ను పర్యవేక్షిస్తారు మరియు దాని కొలమానాలను ప్రోమేతియస్ ఆకృతిలో ప్రదర్శిస్తారు <svc>:9404/metrics

ఎగుమతిదారు సెటప్

శ్రద్ధగల పాఠకుడు అది ఎక్కడ నుండి వచ్చిందని ఆశ్చర్యపోవచ్చు prometheus-jmx.yaml? JVMలో అమలు చేయగల అనేక విభిన్న అంశాలు ఉన్నాయి మరియు టామ్‌క్యాట్ వాటిలో ఒకటి మాత్రమే, కాబట్టి ఎగుమతిదారుకు కొంత అదనపు కాన్ఫిగరేషన్ అవసరం. టామ్‌క్యాట్, వైల్డ్‌ఫ్లై, కాఫ్కా మొదలైన వాటికి ప్రామాణిక కాన్ఫిగరేషన్‌లు అందుబాటులో ఉన్నాయి ఇక్కడ. మేము టామ్‌క్యాట్‌ని ఇలా జోడిస్తాము ConfigMap కుబెర్నెటెస్‌లో ఆపై దానిని వాల్యూమ్‌గా మౌంట్ చేయండి.

ముందుగా, మేము ఎగుమతిదారు కాన్ఫిగరేషన్ ఫైల్‌ను మా ప్లాట్‌ఫారమ్/కాన్ఫిగరేషన్/ డైరెక్టరీకి జోడిస్తాము

platform/config
└── prometheus-jmx.yaml

అప్పుడు మేము జోడిస్తాము ConfigMapGenerator в kustomization.yaml.tmpl:

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

ఇది ప్రతి మూలకాన్ని జోడిస్తుంది files[] ConfigMap కాన్ఫిగరేషన్ మూలకం వలె. ConfigMapGenerators గొప్పవి ఎందుకంటే అవి కాన్ఫిగరేషన్ డేటాను హాష్ చేస్తాయి మరియు అది మారితే పాడ్ రీస్టార్ట్ చేయమని బలవంతం చేస్తుంది. మీరు ఒక వాల్యూమ్‌మౌంట్‌లో కాన్ఫిగరేషన్ ఫైల్‌ల యొక్క మొత్తం "ఫోల్డర్"ని మౌంట్ చేయవచ్చు కాబట్టి అవి డిప్లాయ్‌మెంట్‌లో కాన్ఫిగరేషన్ మొత్తాన్ని కూడా తగ్గిస్తాయి.

చివరగా, మేము పాడ్‌కు కాన్ఫిగ్‌మ్యాప్‌ను వాల్యూమ్‌గా మౌంట్ చేయాలి:

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

అద్భుతమైన. ప్రోమేతియస్ పూర్తి క్లీనప్ చేయడానికి కాన్ఫిగర్ చేయకపోతే, మీరు పాడ్‌లను శుభ్రం చేయమని చెప్పవలసి ఉంటుంది. ప్రోమేతియస్ ఆపరేటర్ వినియోగదారులు ఉపయోగించవచ్చు service-monitor.yaml ప్రారంభించడానికి. అన్వేషించండి Service-monitor.yaml, ఆపరేటర్ డిజైన్ и ServiceMonitorSpec మీరు బయలు దేరే ముందు లేదా మీరు ప్రారంభించ బోయే ముందు.

ఈ నమూనాను ఇతర ఉపయోగ సందర్భాలకు విస్తరించడం

మేము ConfigMapGeneratorకి జోడించే అన్ని ఫైల్‌లు కొత్త డైరెక్టరీలో అందుబాటులో ఉంటాయి /etc/config. మీకు అవసరమైన ఏవైనా ఇతర కాన్ఫిగరేషన్ ఫైల్‌లను మౌంట్ చేయడానికి మీరు ఈ టెంప్లేట్‌ని పొడిగించవచ్చు. మీరు కొత్త స్టార్టప్ స్క్రిప్ట్‌ని కూడా మౌంట్ చేయవచ్చు. మీరు ఉపయోగించవచ్చు ఉపమార్గం వ్యక్తిగత ఫైళ్లను మౌంట్ చేయడానికి. xml ఫైల్‌లను అప్‌డేట్ చేయడానికి, ఉపయోగించడాన్ని పరిగణించండి xmlstarlet బదులుగా సెడ్. ఇది ఇప్పటికే చిత్రంలో చేర్చబడింది.

పత్రికలు

మంచి వార్త! అప్లికేషన్ లాగ్‌లు ఇప్పటికే stdoutలో అందుబాటులో ఉన్నాయి, ఉదాహరణకు kubectl logs. Fluentd (GKEలో డిఫాల్ట్‌గా ఇన్‌స్టాల్ చేయబడింది) మీ లాగ్‌లను Elasticsearch, Loki లేదా మీ ఎంటర్‌ప్రైజ్ లాగింగ్ ప్లాట్‌ఫారమ్‌కు ఫార్వార్డ్ చేస్తుంది. మీరు లాగ్‌ల కోసం jsonifyని ఉపయోగించాలనుకుంటే, మీరు ఇన్‌స్టాల్ చేయడానికి పై టెంప్లేట్‌ని అనుసరించవచ్చు లాగ్బ్యాక్.

డేటాబేస్

డిఫాల్ట్‌గా, ఇమేజ్‌కి H2 డేటాబేస్ ఉంటుంది. ఇది మాకు తగినది కాదు మరియు మేము Cloud SQL ప్రాక్సీతో Google Cloud SQLని ఉపయోగిస్తాము - అంతర్గత సమస్యలను పరిష్కరించడానికి ఇది తర్వాత అవసరం అవుతుంది. డేటాబేస్ను సెటప్ చేయడంలో మీకు మీ స్వంత ప్రాధాన్యతలు లేకుంటే ఇది సులభమైన మరియు నమ్మదగిన ఎంపిక. AWS RDS ఇదే విధమైన సేవను అందిస్తుంది.

మీరు ఎంచుకున్న డేటాబేస్‌తో సంబంధం లేకుండా, అది H2 కాకపోతే, మీరు తగిన ఎన్విరాన్‌మెంట్ వేరియబుల్స్‌ను సెట్ చేయాలి platform/deploy.yaml. ఇది ఇలా కనిపిస్తుంది:

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

వ్యాఖ్య: మీరు అతివ్యాప్తిని ఉపయోగించి విభిన్న వాతావరణాలకు అమర్చడానికి కస్టమైజ్‌ని ఉపయోగించవచ్చు: ఒక ఉదాహరణ.

వ్యాఖ్య: వినియోగం valueFrom: secretKeyRef. దయచేసి వాడండి ఈ కుబెర్నెట్స్ ఫీచర్ మీ రహస్యాలను సురక్షితంగా ఉంచడానికి అభివృద్ధి సమయంలో కూడా.

కుబెర్నెట్స్ రహస్యాలను నిర్వహించడానికి మీరు ఇప్పటికే ప్రాధాన్య వ్యవస్థను కలిగి ఉండవచ్చు. కాకపోతే, ఇక్కడ కొన్ని ఎంపికలు ఉన్నాయి: వాటిని మీ క్లౌడ్ ప్రొవైడర్ KMSతో గుప్తీకరించడం మరియు CD పైప్‌లైన్ ద్వారా రహస్యాలుగా K8Sలోకి వాటిని ఇంజెక్ట్ చేయడం - MozillaSOPS - కస్టమైజ్ సీక్రెట్స్‌తో కలిపి చాలా బాగా పని చేస్తుంది. ఇలాంటి విధులను నిర్వర్తించే dotGPG వంటి ఇతర సాధనాలు ఉన్నాయి: హషికార్ప్ వాల్ట్, రహస్య విలువ ప్లగిన్‌లను అనుకూలీకరించండి.

లోపల ప్రవేశించుట

మీరు లోకల్ పోర్ట్ ఫార్వార్డింగ్‌ని ఉపయోగించాలని ఎంచుకుంటే తప్ప, మీకు కాన్ఫిగర్ చేయబడిన ఇన్‌గ్రెస్ కంట్రోలర్ అవసరం. మీరు ఉపయోగించకపోతే ప్రవేశం-nginx (హెల్మ్ చార్ట్) అప్పుడు మీరు అవసరమైన ఉల్లేఖనాలను ఇన్‌స్టాల్ చేయాలని మీకు ఇప్పటికే తెలిసి ఉండవచ్చు ingress-patch.yaml.tmpl లేదా platform/ingress.yaml. మీరు ingress-nginxని ఉపయోగిస్తుంటే మరియు nginx ఇన్‌గ్రెస్ క్లాస్‌ని లోడ్ బ్యాలెన్సర్ గురిపెట్టి, బాహ్య DNS లేదా వైల్డ్‌కార్డ్ DNS ఎంట్రీని చూసినట్లయితే, మీరు వెళ్లడం మంచిది. లేకపోతే, ఇన్‌గ్రెస్ కంట్రోలర్ మరియు DNSని కాన్ఫిగర్ చేయండి లేదా ఈ దశలను దాటవేసి, పాడ్‌కి డైరెక్ట్ కనెక్షన్‌ని ఉంచండి.

TLS

మీరు ఉపయోగిస్తే సర్టిట్ మేనేజర్ లేదా kube-lego మరియు letsencrypt - కొత్త లాగిన్ కోసం ధృవపత్రాలు స్వయంచాలకంగా పొందబడతాయి. లేకపోతే, తెరవండి ingress-patch.yaml.tmpl మరియు మీ అవసరాలకు అనుగుణంగా అనుకూలీకరించండి.

ప్రారంభించు!

మీరు పైన వ్రాసిన ప్రతిదాన్ని అనుసరించినట్లయితే, అప్పుడు ఆదేశం make skaffold HOSTNAME=<you.example.com> లో అందుబాటులో ఉన్న ఉదాహరణను ప్రారంభించాలి <hostname>/camunda

మీరు మీ లాగిన్‌ని పబ్లిక్ URLకి సెట్ చేయకుంటే, మీరు దీన్ని దీనితో మళ్లించవచ్చు localhost: kubectl port-forward -n camunda-bpm-demo svc/camunda-bpm 8080:8080localhost:8080/camunda

టామ్‌క్యాట్ పూర్తిగా సిద్ధమయ్యే వరకు కొన్ని నిమిషాలు వేచి ఉండండి. డొమైన్ పేరును ధృవీకరించడానికి Cert-manager కొంత సమయం పడుతుంది. మీరు kubetail వంటి సాధనం వంటి అందుబాటులో ఉన్న సాధనాలను ఉపయోగించి లేదా కేవలం kubectlని ఉపయోగించి లాగ్‌లను పర్యవేక్షించవచ్చు:

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

తదుపరి దశలు

అధికార

ఇది Kubernetes కంటే Camunda BPMని కాన్ఫిగర్ చేయడానికి చాలా సందర్భోచితంగా ఉంటుంది, అయితే డిఫాల్ట్‌గా, REST APIలో ప్రామాణీకరణ నిలిపివేయబడిందని గమనించడం ముఖ్యం. నువ్వు చేయగలవు ప్రాథమిక ప్రమాణీకరణను ప్రారంభించండి లేదా మరొక పద్ధతిని ఉపయోగించండి J.W.T.. మీరు ఇమేజ్‌లో ఇప్పటికే ఉన్న ఫైల్‌లను సవరించడానికి xml లేదా xmlstarlet (పైన చూడండి) లోడ్ చేయడానికి కాన్ఫిగ్‌మ్యాప్‌లు మరియు వాల్యూమ్‌లను ఉపయోగించవచ్చు మరియు wgetని ఉపయోగించవచ్చు లేదా వాటిని init కంటైనర్ మరియు షేర్డ్ వాల్యూమ్ ఉపయోగించి లోడ్ చేయవచ్చు.

సెషన్ నిర్వహణ

అనేక ఇతర అప్లికేషన్‌ల వలె, Camunda BPM JVMలో సెషన్‌లను నిర్వహిస్తుంది, కాబట్టి మీరు బహుళ ప్రతిరూపాలను అమలు చేయాలనుకుంటే, మీరు స్టిక్కీ సెషన్‌లను ప్రారంభించవచ్చు (ఉదాహరణకు ingress-nginx కోసం), ఇది ప్రతిరూపం అదృశ్యమయ్యే వరకు ఉంటుంది లేదా కుక్కీల కోసం గరిష్ట-వయస్సు లక్షణాన్ని సెట్ చేస్తుంది. మరింత బలమైన పరిష్కారం కోసం, మీరు టామ్‌క్యాట్‌లో సెషన్ మేనేజర్‌ని అమలు చేయవచ్చు. లార్స్ కలిగి ఉంది ప్రత్యేక పోస్ట్ ఈ అంశంపై, కానీ ఇలాంటివి:

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

వ్యాఖ్య: మీరు సెడ్‌కు బదులుగా xmlstarletని ఉపయోగించవచ్చు

మేము ఉపయోగించాము ట్వెంప్రాక్సీ Google Cloud Memorystore ముందు, తో memcached-sesion-manager (Rediస్‌కు మద్దతు ఇస్తుంది) దీన్ని అమలు చేయడానికి.

స్కేలింగ్

మీరు ఇప్పటికే సెషన్‌లను అర్థం చేసుకున్నట్లయితే, Camunda BPMని స్కేలింగ్ చేయడానికి మొదటి (మరియు తరచుగా చివరిది) పరిమితి డేటాబేస్‌కు కనెక్షన్ కావచ్చు. పాక్షిక అనుకూలీకరణ ఇప్పటికే అందుబాటులో ఉంది "పెట్టె నుండి" settings.xml ఫైల్‌లో intialSizeని కూడా డిసేబుల్ చేద్దాం. జోడించు క్షితిజసమాంతర పాడ్ ఆటోస్కేలర్ (HPA) మరియు మీరు పాడ్‌ల సంఖ్యను సులభంగా స్వయంచాలకంగా స్కేల్ చేయవచ్చు.

అభ్యర్థనలు మరియు పరిమితులు

В platform/deployment.yaml మేము వనరుల ఫీల్డ్‌ను హార్డ్-కోడ్ చేసినట్లు మీరు చూస్తారు. ఇది HPAతో బాగా పనిచేస్తుంది, కానీ అదనపు కాన్ఫిగరేషన్ అవసరం కావచ్చు. కస్టమైజ్ ప్యాచ్ దీనికి అనుకూలంగా ఉంటుంది. సెం.మీ. ingress-patch.yaml.tmpl и ./kustomization.yaml.tmpl

తీర్మానం

కాబట్టి మేము ప్రోమెథియస్ మెట్రిక్‌లు, లాగ్‌లు, H2 డేటాబేస్, TLS మరియు ఇంగ్రెస్‌తో కుబెర్నెట్స్‌లో Camunda BPMని ఇన్‌స్టాల్ చేసాము. మేము ConfigMaps మరియు Dockerfileని ఉపయోగించి jar ఫైల్‌లు మరియు కాన్ఫిగరేషన్ ఫైల్‌లను జోడించాము. మేము డేటాను వాల్యూమ్‌లకు మరియు నేరుగా ఎన్విరాన్‌మెంట్ వేరియబుల్స్‌కు రహస్యాల నుండి మార్పిడి చేయడం గురించి మాట్లాడాము. అదనంగా, మేము బహుళ ప్రతిరూపాలు మరియు ప్రామాణీకరించబడిన API కోసం Camundaని సెటప్ చేయడం యొక్క అవలోకనాన్ని అందించాము.

సూచనలు

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, అనువాదం వ్యాసాలు అలస్టర్ ఫిర్త్, లార్స్ లాంగే

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి