Kuberneteset használsz? Készen áll arra, hogy a Camunda BPM-példányait kihelyezze a virtuális gépekből, vagy esetleg megpróbálja futtatni őket Kubernetesen? Nézzünk meg néhány gyakori konfigurációt és egyedi elemet, amelyek az Ön egyedi igényeihez szabhatók.
Feltételezi, hogy korábban használta a Kuberneteset. Ha nem, miért ne nézzen meg vezetés és nem indítja el az első klasztert?
Szerzők
Alastair Firth (Alastair Firth) - vezető helyszíni megbízhatósági mérnök a Camunda Cloud csapatban;
Lars Lange (Lars Lange) - DevOps mérnök a Camundánál.
Röviden akkor:
git clone https://github.com/camunda-cloud/camunda-examples.git
cd camunda-examples/camunda-bpm-demo
make skaffold
Oké, valószínűleg nem működött, mert nincs telepítve a szkffold és a kustomize. Hát akkor olvass tovább!
Mi az a Camunda BPM
A Camunda BPM egy nyílt forráskódú üzleti folyamatkezelési és döntésautomatizálási platform, amely összeköti az üzleti felhasználókat és a szoftverfejlesztőket. Ideális emberek, (mikro) szolgáltatások vagy akár botok koordinálására, összekapcsolására! A különböző használati esetekről bővebben itt olvashat link.
Miért használja a Kuberneteset?
A Kubernetes a modern alkalmazások Linuxon való futtatásának de facto szabványává vált. A hardveres emuláció helyett rendszerhívások használatával, valamint a kernel azon képességével, hogy kezelje a memóriát és a feladatváltást, a rendszerindítási és az indítási idő minimálisra csökken. A legnagyobb előny azonban a Kubernetes által biztosított szabványos API-ból származhat az összes alkalmazáshoz szükséges infrastruktúra konfigurálásához: tárolás, hálózat és felügyelet. 2020 júniusában lett 6 éves, és talán a második legnagyobb nyílt forráskódú projekt (a Linux után). A közelmúltban aktívan stabilizálta funkcionalitását az elmúlt néhány év gyors iterációja után, mivel világszerte kritikussá válik a termelési munkaterhelés szempontjából.
A Camunda BPM Engine könnyen csatlakozhat más, ugyanazon a fürtön futó alkalmazásokhoz, a Kubernetes pedig kiváló skálázhatóságot biztosít, így csak akkor lehet növelni az infrastruktúra költségeit, ha valóban szükség van rá (és szükség szerint egyszerűen csökkenteni).
A megfigyelés minősége is nagymértékben javult az olyan eszközökkel, mint a Prometheus, a Grafana, a Loki, a Fluentd és az Elasticsearch, lehetővé téve az összes munkaterhelés központi megtekintését egy fürtben. Ma megnézzük, hogyan lehet a Prometheus exportőrt a Java virtuális gépbe (JVM) implementálni.
célok
Nézzünk meg néhány területet, ahol testreszabhatjuk a Camunda BPM Docker képet (GitHub), hogy jól együttműködjön a Kubernetes-szel.
Naplók és mérőszámok;
Adatbázis kapcsolatok;
Hitelesítés;
Munkamenet menedzsment.
Megvizsgálunk több módot e célok elérésére, és világosan bemutatjuk a teljes folyamatot.
Megjegyzés: Enterprise verziót használsz? Néz itt és szükség szerint frissítse a képlinkeket.
Munkafolyamat-fejlesztés
Ebben a demóban a Skaffoldot használjuk Docker-képek létrehozásához a Google Cloud Build segítségével. Jól támogatja a különféle eszközöket (például Kustomize és Helm), CI és build eszközöket, valamint infrastruktúra-szolgáltatókat. Fájl skaffold.yaml.tmpl tartalmazza a Google Cloud Build és a GKE beállításait, amelyek nagyon egyszerű módot biztosítanak az éles szintű infrastruktúra futtatására.
make skaffold betölti a Dockerfile-környezetet a Cloud Buildbe, összeállítja a képet és tárolja a GCR-ben, majd alkalmazza a jegyzékeket a fürtre. Ez az, amit csinál make skaffold, de a Skaffold sok más funkcióval is rendelkezik.
A Kubernetes yaml-sablonjaihoz a kustomize-t használjuk a yaml-fedvények kezelésére anélkül, hogy a teljes jegyzéket elágaznánk, így git pull --rebase további fejlesztésekre. Most a kubectl-ben van, és elég jól működik ilyen dolgokhoz.
Az envsubst-ot is használjuk a gazdagépnév és a GCP-projektazonosító feltöltésére a *.yaml.tmpl fájlokban. Megnézheti, hogyan működik benne makefile vagy csak folytasd tovább.
Skaffold - saját docker image-ek létrehozásához és a GKE-be való egyszerű telepítéshez
Ennek a kódnak a másolata
Envsubst
Munkafolyamat jegyzékek használatával
Ha nem szeretné használni a kustomize-t vagy a skaffold-ot, akkor hivatkozhat a manifesztekre generated-manifest.yaml és igazítsa őket az Ön által választott munkafolyamathoz.
Naplók és mérőszámok
A Prometheus a Kubernetes mérőszámok gyűjtésének szabványává vált. Ugyanazt a rést foglalja el, mint az AWS Cloudwatch Metrics, Cloudwatch Alerts, Stackdriver Metrics, StatsD, Datadog, Nagios, vSphere Metrics és mások. Nyílt forráskódú, és erőteljes lekérdezési nyelvvel rendelkezik. A vizualizációt a Grafana-ra bízzuk – számos műszerfallal szállítjuk. Össze vannak kötve egymással, és viszonylag könnyen telepíthetők prométheusz-operátor.
Alapértelmezés szerint a Prometheus a kinyerési modellt használja <service>/metrics, és ehhez gyakori az oldalkocsis konténerek hozzáadása. Sajnos a JMX metrikák a legjobban a JVM-en belül rögzíthetők, így az oldalkocsis konténerek nem olyan hatékonyak. Kapcsolódjunk jmx_exporter nyílt forráskódú a Prometheustól a JVM-hez úgy, hogy hozzáadja az elérési utat biztosító tárolóképhez /metrics egy másik porton.
Adja hozzá a Prometheus jmx_exportert a tárolóhoz
-- 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
Hát ez könnyű volt. Az exportőr figyeli a tomcat-ot, és Prometheus formátumban jeleníti meg a mutatóit a címen <svc>:9404/metrics
Exportőr beállítása
A figyelmes olvasó elgondolkodhat, honnan származik prometheus-jmx.yaml? Sok különböző dolog futhat a JVM-ben, és a tomcat csak egy ezek közül, így az exportőrnek további konfigurációra van szüksége. A tomcat, a wildfly, a kafka és így tovább szabványos konfigurációk állnak rendelkezésre itt. Hozzáadjuk a tomcat as ConfigMap a Kubernetesben, majd rögzítse kötetként.
Először is hozzáadjuk az exportőr konfigurációs fájlját a platform/config/ könyvtárunkhoz
Ez hozzáad minden elemet files[] ConfigMap konfigurációs elemként. A ConfigMapGenerators nagyszerűek, mert kivonatolja a konfigurációs adatokat, és ha módosulnak, kényszerítik a pod újraindítását. Csökkentik a telepítés mennyiségét is, mivel a konfigurációs fájlok teljes "mappáját" csatlakoztathatja egyetlen VolumeMountba.
Végül fel kell csatolnunk a ConfigMap-et kötetként a podhoz:
Csodálatos. Ha a Prometheus nincs beállítva teljes tisztítás elvégzésére, akkor előfordulhat, hogy szólnia kell neki, hogy tisztítsa meg a hüvelyeket. A Prometheus Operator felhasználói használhatják service-monitor.yaml kezdeni. Fedezd fel Service-monitor.yaml, operátor tervezés и ServiceMonitorSpec mielőtt elkezded.
A minta kiterjesztése más felhasználási esetekre
A ConfigMapGeneratorhoz hozzáadott összes fájl elérhető lesz az új könyvtárban /etc/config. Ezt a sablont kibővítheti bármely más konfigurációs fájl csatlakoztatásához, amelyre szüksége van. Akár új indítószkriptet is csatlakoztathat. Te tudod használni alútvonal az egyes fájlok csatolásához. Az xml fájlok frissítéséhez fontolja meg a használatát xmlstarlet sed helyett. A képen már benne van.
Magazinok
Jó hír! Az alkalmazásnaplók már elérhetőek az stdout-on, például a következővel kubectl logs. A Fluentd (alapértelmezés szerint telepítve van a GKE-ben) továbbítja naplóit az Elasticsearch, a Loki vagy a vállalati naplózási platform felé. Ha a jsonify-t szeretné használni a naplókhoz, kövesse a fenti sablont a telepítéshez logback.
Adatbázis
Alapértelmezés szerint a képnek H2 adatbázisa lesz. Ez nekünk nem megfelelő, és a Google Cloud SQL-t Cloud SQL Proxyval fogjuk használni – erre később szükség lesz a belső problémák megoldásához. Ez egy egyszerű és megbízható lehetőség, ha nincs saját preferenciája az adatbázis beállításában. Az AWS RDS hasonló szolgáltatást nyújt.
A választott adatbázistól függetlenül, hacsak nem H2, be kell állítania a megfelelő környezeti változókat platform/deploy.yaml. Valahogy így néz ki:
Megjegyzés: A Kustomize segítségével különböző környezetekben is telepíthet fedvényt: példa.
Megjegyzés: használat valueFrom: secretKeyRef. Kérlek használd ez a Kubernetes funkció még a fejlesztés során is, hogy titkai biztonságban legyenek.
Valószínűleg már rendelkezik egy preferált rendszerrel a Kubernetes-titkok kezelésére. Ha nem, akkor itt van néhány lehetőség: Titkosítsa őket a felhőszolgáltató KMS-ével, majd titkosítsa őket a K8S-be a CD-folyamon keresztül – Mozilla SOPS - nagyon jól fog működni a Kustomize titkokkal kombinálva. Vannak más eszközök, például a dotGPG, amelyek hasonló funkciókat látnak el: HashiCorp Vault, Testreszabhatja a titkos értékű beépülő modulokat.
Bemenetel
Hacsak nem a helyi porttovábbítást választja, szüksége lesz egy konfigurált belépésvezérlőre. Ha nem használod ingress-nginx (Helm diagram), akkor valószínűleg már tudja, hogy telepítenie kell a szükséges megjegyzéseket ingress-patch.yaml.tmpl vagy platform/ingress.yaml. Ha az ingress-nginxet használja, és egy nginx bemeneti osztályt lát, amelyre egy terheléselosztó mutat, és egy külső DNS- vagy helyettesítő karakteres DNS-bejegyzést, akkor készen áll. Ellenkező esetben konfigurálja a Belépés-vezérlőt és a DNS-t, vagy hagyja ki ezeket a lépéseket, és tartsa meg a közvetlen kapcsolatot a podhoz.
TLS
Ha használja cert-menedzser vagy kube-lego és letsencrypt - az új bejelentkezéshez tartozó tanúsítványok automatikusan megérkeznek. Ellenkező esetben nyissa ki ingress-patch.yaml.tmpl és testreszabhatja az igényeinek megfelelően.
Dob!
Ha követte a fent leírtakat, akkor a parancsot make skaffold HOSTNAME=<you.example.com> el kell indítania egy elérhető példányt <hostname>/camunda
Ha nem állította be bejelentkezési adatait nyilvános URL-re, átirányíthatja a következővel localhost: kubectl port-forward -n camunda-bpm-demo svc/camunda-bpm 8080:8080 on localhost:8080/camunda
Várjon néhány percet, amíg a kanca teljesen készen áll. A tanúsítványkezelőnek némi időbe telik a domain név ellenőrzése. Ezután figyelheti a naplókat a rendelkezésre álló eszközökkel, például egy olyan eszközzel, mint a kubetail, vagy egyszerűen a kubectl használatával:
Ez a Camunda BPM konfigurálása szempontjából relevánsabb, mint a Kubernetes, de fontos megjegyezni, hogy alapértelmezés szerint a hitelesítés le van tiltva a REST API-ban. tudsz engedélyezze az alapvető hitelesítést vagy használjon más módszert, mint pl J.W.T.. Használhatja a konfigurációs térképeket és a köteteket az xml betöltéséhez, vagy az xmlstarletet (lásd fent) a képben lévő meglévő fájlok szerkesztéséhez, és vagy használja a wget-et, vagy töltse be őket egy indítótároló és egy megosztott kötet segítségével.
Munkamenet menedzsment
Sok más alkalmazáshoz hasonlóan a Camunda BPM is kezeli a munkameneteket a JVM-ben, így ha több replikát szeretne futtatni, engedélyezheti a ragadós munkameneteket (például az ingress-nginx esetében), amely addig létezik, amíg a replika el nem tűnik, vagy állítsa be a Max-Age attribútumot a cookie-khoz. Robusztusabb megoldás érdekében telepítheti a Session Managert a Tomcatban. Larsnak van külön poszt ebben a témában, de valami ilyesmi:
Ha már ismeri a munkameneteket, akkor a Camunda BPM méretezésének első (és gyakran az utolsó) korlátozása az adatbázishoz való csatlakozás lehet. A részleges testreszabás már elérhető"a dobozból" Kapcsoljuk ki az intialSize-t is a settings.xml fájlban. Hozzáadás Horizontal Pod Autoscaler (HPA) és egyszerűen automatikusan skálázhatja a hüvelyek számát.
Kérések és korlátozások
В platform/deployment.yaml Látni fogja, hogy keményen kódoltuk az erőforrások mezőjét. Ez jól működik a HPA-val, de további konfigurációt igényelhet. Erre alkalmas a kustomize tapasz. Cm. ingress-patch.yaml.tmpl и ./kustomization.yaml.tmpl
Teljesítmény
Így telepítettük a Camunda BPM-et a Kubernetesre Prometheus metrikákkal, naplókkal, H2 adatbázissal, TLS-sel és Ingressel. Jar fájlokat és konfigurációs fájlokat adtunk hozzá a ConfigMaps és a Dockerfile segítségével. Beszéltünk arról, hogy adatokat cserélünk kötetekre és közvetlenül környezeti változókra a titkokból. Ezenkívül áttekintést adtunk a Camunda beállításáról több replikához és egy hitelesített API-hoz.