Mampiasa Kubernetes ve ianao? Vonona ny hamindra ny trangan'ny Camunda BPM anao amin'ny milina virtoaly, na mety hanandrana fotsiny amin'ny Kubernetes? Andeha hojerentsika ireo tefy mahazatra sy singa tsirairay izay azo ampifanarahana amin'ny filanao manokana.
Heverina fa efa nampiasa Kubernetes ianao taloha. Raha tsy izany, nahoana raha mijery mpitarika ary tsy manomboka ny cluster voalohany?
mpanoratra
Alastair Firth (Alastair Firth) - Injeniera mahatoky amin'ny toerana ambony ao amin'ny ekipa Camunda Cloud;
Lars Lange (Lars Lange) - injeniera DevOps ao amin'ny Camunda.
Raha afohezina:
git clone https://github.com/camunda-cloud/camunda-examples.git
cd camunda-examples/camunda-bpm-demo
make skaffold
Eny ary, mety tsy nety izany satria tsy nametraka skaffold sy kustomize ianao. Dia vakio ary!
Inona no atao hoe Camunda BPM
Camunda BPM dia sehatra fitantanana ny fizotran'ny raharaham-barotra sy ny fanapahan-kevitra automatique izay mampifandray ireo mpampiasa orinasa sy mpamorona rindrambaiko. Tena mety amin'ny fandrindrana sy fampifandraisana olona, serivisy (mikro) na bots mihitsy aza! Afaka mamaky bebe kokoa momba ireo tranga fampiasana samihafa ianao ao amin'ny rohy.
Nahoana no mampiasa Kubernetes
Ny Kubernetes dia lasa fenitra de facto amin'ny fampandehanana fampiharana maoderina amin'ny Linux. Amin'ny alàlan'ny fampiasana antso an-tariby fa tsy ny emulation hardware sy ny fahafahan'ny kernel mitantana ny fitadidiana sy ny fiovan'ny asa, dia tazonina ho faran'izay kely ny fotoana boot sy ny fotoana fanombohana. Na izany aza, ny tombony lehibe indrindra dia mety ho avy amin'ny API mahazatra omen'i Kubernetes mba handrindrana ny fotodrafitrasa takian'ny fampiharana rehetra: fitahirizana, tambajotra ary fanaraha-maso. Nivadika 2020 taona izy io tamin'ny Jona 6 ary angamba no tetikasa loharano misokatra faharoa lehibe indrindra (taorian'ny Linux). Vao haingana izy no nazoto nanamafy ny fampiasany taorian'ny famerimberenana haingana tao anatin'ny taona vitsivitsy izay lasa manakiana ny enta-mamokatra eran'izao tontolo izao.
Ny Camunda BPM Engine dia afaka mifandray mora amin'ny rindranasa hafa mandeha amin'ny cluster iray ihany, ary manome scalability tena tsara i Kubernetes, mamela anao hampitombo ny vidin'ny fotodrafitrasa raha tsy rehefa tena ilaina (ary mampihena azy ireo mora foana raha ilaina).
Ny kalitaon'ny fanaraha-maso dia nohatsaraina be ihany koa miaraka amin'ny fitaovana toa ny Prometheus, Grafana, Loki, Fluentd ary Elasticsearch, ahafahanao mijery afovoany ny enta-mavesatra rehetra ao anaty cluster. Androany isika dia hijery ny fomba fampiharana ny mpanondrana Prometheus ao amin'ny Java Virtual Machine (JVM).
tanjona
Andeha hojerentsika faritra vitsivitsy ahafahantsika manamboatra ny sary Camunda BPM Docker (github) mba hifaneraserany tsara amin'ny Kubernetes.
fanamarihana: Mampiasa ny dikan-teny Enterprise ve ianao? Jereo eto ary manavao rohy sary raha ilaina.
Fampandrosoana ny workflow
Amin'ity demo ity dia hampiasa Skaffold izahay hananganana sary Docker amin'ny alàlan'ny Google Cloud Build. Manana fanohanana tsara ho an'ny fitaovana isan-karazany (toy ny Kustomize sy Helm), CI ary fitaovana fananganana, ary mpamatsy fotodrafitrasa. rakitra skaffold.yaml.tmpl ahitana ny firafitry ny Google Cloud Build sy GKE, izay manome fomba tena tsotra hampandehanana fotodrafitrasa ambaratonga famokarana.
make skaffold dia hampiditra ny tontolon'ny Dockerfile ao amin'ny Cloud Build, manangana ny sary ary mitahiry izany ao amin'ny GCR, ary avy eo ampiharo amin'ny cluster anao ny fisehoana. Izany no ataony make skaffold, fa manana endri-javatra maro hafa i Skaffold.
Ho an'ny maodely yaml ao amin'ny Kubernetes, mampiasa kustomize izahay mba hitantana ireo overlay yaml nefa tsy manapaka ny fanehoana manontolo, ahafahanao mampiasa git pull --rebase ho fanatsarana bebe kokoa. Amin'izao fotoana izao dia ao amin'ny kubectl ary miasa tsara amin'ny zavatra toy izany.
Mampiasa envsubst koa izahay mba hamenoana ny anaran'ny mpampiantrano sy ny ID tetikasa GCP ao amin'ny rakitra *.yaml.tmpl. Hitanao ny fomba fiasa ao makefile na tohizo hatrany.
Skaffold - amin'ny famoronana sary docker anao manokana sy fametrahana mora amin'ny GKE
Kopia amin'ity kaody ity
Envsubst
Workflow mampiasa manifests
Raha tsy te hampiasa kustomize na skaffold ianao dia azonao atao ny manondro ny manifests in generated-manifest.yaml ary ampifanaraho amin'ny fizotran'ny asa tianao.
Log sy metrika
Prometheus dia lasa fenitra amin'ny fanangonana metrika ao amin'ny Kubernetes. Izy io dia mitana toerana mitovy amin'ny AWS Cloudwatch Metrics, Cloudwatch Alerts, Stackdriver Metrics, StatsD, Datadog, Nagios, vSphere Metrics ary ny hafa. Loharanom-baovao misokatra izy io ary manana fiteny manaitaitra mahery vaika. Ankininay amin'i Grafana ny sary an-tsary - miaraka amin'ny dashboard marobe azo alaina ivelan'ny boaty. Mifamatotra izy ireo ary mora apetraka prometheus-operator.
Amin'ny alàlan'ny default, Prometheus dia mampiasa ny maodely fitrandrahana <service>/metrics, ary matetika ny fampidirana fitoeran'entana ho an'izany. Indrisy anefa, ny metrik'i JMX dia tafiditra tsara indrindra ao anatin'ny JVM, noho izany dia tsy mahomby ny kaontenera sidecar. Andao hifandray jmx_exporter loharano misokatra avy amin'ny Prometheus mankany amin'ny JVM amin'ny fampidirana azy amin'ny sarin'ny container izay hanome ny lalana /metrics amin'ny seranana hafa.
Ampio Prometheus jmx_exporter amin'ny kaontenera
-- 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
Eny, mora izany. Ny mpanondrana dia hanara-maso ny tomcat ary hampiseho ny metrika ao amin'ny endrika Prometheus amin'ny <svc>:9404/metrics
Fametrahana mpanondrana
Mety hanontany tena ny mpamaky tsara hoe avy aiza ilay izy prometheus-jmx.yaml? Misy zavatra maro samihafa azo atao ao amin'ny JVM, ary ny tomcat dia iray amin'izy ireo, noho izany dia mila fanitsiana fanampiny ny mpanondrana. Misy fanamafisam-peo mahazatra ho an'ny tomcat, wildfly, kafka sy ny sisa eto. Hanampy tomcat ho ConfigMap ao amin'ny Kubernetes ary apetaho ho toy ny boky.
Voalohany, ampidirinay ao amin'ny lahatahiry sehatra / config / ny rakitra fanamafisana mpanondrana
Izany dia hanampy ny singa tsirairay files[] ho singa fanamafisana ConfigMap. Tena tsara ny ConfigMapGenerators satria manefy ny angon-drakitra fanamafisana izy ireo ary manery ny famerenana ny pod raha miova izany. Mampihena ny habetsaky ny fanamafisana ao amin'ny Deployment ihany koa izy ireo satria azonao atao ny mametraka "folder" iray manontolo amin'ny rakitra fanamafisana ao anaty VolumeMount iray.
Farany, mila mametraka ny ConfigMap ho toy ny volume amin'ny pod:
Mahafinaritra. Raha tsy namboarina hanao fanadiovana tanteraka ny Prometheus, dia mety tsy maintsy lazainao izany mba hanadio ny pods. Ny mpampiasa Prometheus Operator dia afaka mampiasa service-monitor.yaml hanombohana. hijery Service-monitor.yaml, famolavolana mpandraharaha и ServiceMonitorSpec alohan'ny hanombohanao.
Manitatra ity lamina ity amin'ny tranga fampiasana hafa
Ny rakitra rehetra ampianay amin'ny ConfigMapGenerator dia ho hita ao amin'ny lahatahiry vaovao /etc/config. Azonao atao ny manitatra ity môdely ity mba hametahana rakitra hafa ilainao. Azonao atao mihitsy aza ny mametraka script fanombohana vaovao. Azonao ampiasaina subPath hametahana rakitra tsirairay. Mba hanavaozana ny rakitra xml, diniho ny fampiasana xmlstarlet fa tsy sed. Efa tafiditra ao anatin'ny sary izany.
gazety
Vaovao mahafaly! Ny diarin'ny fampiharana dia efa misy amin'ny stdout, ohatra amin'ny kubectl logs. Ny Fluentd (apetraka amin'ny alàlan'ny default ao amin'ny GKE) dia handefa ny dianao any amin'ny Elasticsearch, Loki, na ny sehatra firaketana orinasanao. Raha te hampiasa jsonify ho an'ny logs ianao dia azonao atao ny manaraka ny modely etsy ambony mba hametrahana logback.
banky angona
Amin'ny alàlan'ny default, ny sary dia hanana tahiry H2. Tsy mety aminay izany, ary hampiasa Google Cloud SQL miaraka amin'ny Cloud SQL Proxy izahay - ilaina izany any aoriana mba hamahana ny olana anatiny. Safidy tsotra sy azo itokisana ity raha tsy manana ny safidinao manokana amin'ny fametrahana ny angon-drakitra ianao. AWS RDS dia manome serivisy mitovy.
Na inona na inona angona nofidinao, raha tsy hoe H2 izany, dia mila mametraka ny fari-piainan'ny tontolo iainana mifanaraka amin'izany ianao. platform/deploy.yaml. Toa toy izao izany:
fanamarihana: Azonao atao ny mampiasa Kustomize mba hiparitaka amin'ny tontolo samihafa amin'ny fampiasana overlay: ohatra.
fanamarihana: fampiasana valueFrom: secretKeyRef. Azafady, ampiasao ity endri-javatra Kubernetes ity na dia mandritra ny fampandrosoana aza mba hitazomana ny tsiambaratelonao.
Azo inoana fa efa manana rafitra tianao indrindra ianao amin'ny fitantanana ny tsiambaratelo Kubernetes. Raha tsy izany dia ireto misy safidy vitsivitsy: Ampidiro amin'ny KMS an'ny mpanome rahona anao izy ireo ary ampidiro ao amin'ny K8S ho tsiambaratelo amin'ny alàlan'ny fantsona CD − Mozilla SOPS - hiasa tsara miaraka amin'ny tsiambaratelo Kustomize. Misy fitaovana hafa, toy ny dotGPG, izay manao asa mitovy: HashiCorp Vault, Amboary ny Plugins Secret Value.
Ingress
Raha tsy misafidy ny hampiasa seranan-tsambo eo an-toerana ianao, dia mila Ingress Controller voarindra. Raha tsy mampiasa ianao ingress-nginx (Sarin'ny familiana) dia azo inoana fa efa fantatrao fa mila mametraka ireo fanamarihana ilaina ianao ingress-patch.yaml.tmpl na platform/ingress.yaml. Raha mampiasa ingress-nginx ianao ary mahita kilasy ingress nginx misy mpifandanja entana manondro azy ary fidirana DNS ivelany na wildcard DNS, dia tsara ny mandeha. Raha tsy izany, amboary ny Ingress Controller sy DNS, na tsidiho ireto dingana ireto ary tazony ny fifandraisana mivantana amin'ny pod.
TLS
Raha mampiasa ianao mpitantana fanamarinana na kube-lego sy letsencrypt - ny mari-pankasitrahana ho an'ny fidirana vaovao dia ho azo ho azy. Raha tsy izany, sokafy ingress-patch.yaml.tmpl ary amboary mifanaraka amin'ny filanao.
Alefaso!
Raha nanaraka izay rehetra voasoratra etsy ambony ianao, dia ny baiko make skaffold HOSTNAME=<you.example.com> tokony hanomboka ohatra misy ao <hostname>/camunda
Raha mbola tsy nametraka ny fidiranao amin'ny URL ho an'ny daholobe ianao dia azonao atao ny mamindra azy amin'ny localhost: kubectl port-forward -n camunda-bpm-demo svc/camunda-bpm 8080:8080 amin'ny localhost:8080/camunda
Miandrasa minitra vitsivitsy mandra-pahatongan'ny tomcat ho vonona tanteraka. Maka fotoana kely hanamarina ny anaran'ny sehatra ny Cert-manager. Azonao atao ny manara-maso ny logs amin'ny fampiasana fitaovana misy toy ny fitaovana toy ny kubetail, na mampiasa fotsiny kubectl:
Mifanaraka kokoa amin'ny fanefena ny Camunda BPM noho ny Kubernetes izany, saingy zava-dehibe ny manamarika fa amin'ny alàlan'ny default, ny fanamarinana dia kilemaina ao amin'ny REST API. Ianao dia afaka avelao ny fanamarinana fototra na mampiasa fomba hafa toy ny J.W.T.. Azonao atao ny mampiasa configmaps sy volumes hametahana ny xml, na xmlstarlet (jereo etsy ambony) hanitsiana ny rakitra efa misy ao amin'ny sary, ary na mampiasa wget na mametaka azy ireo amin'ny fampiasana container init sy volume iombonana.
Fitantanana fivoriana
Sahala amin'ny rindranasa maro hafa, ny Camunda BPM dia mitantana fotoam-pivoriana ao amin'ny JVM, ka raha te hanao kopia maro ianao dia azonao atao ny mametaka sessions (ohatra ho an'ny ingress-nginx), izay hisy mandra-panjavona ny kopia, na mametraka ny toetra Max-Age ho an'ny cookies. Ho an'ny vahaolana matanjaka kokoa dia azonao atao ny mametraka Session Manager ao amin'ny Tomcat. Lars manana lahatsoratra misaraka amin'ity lohahevitra ity, fa zavatra toy izao:
fanamarihana: azonao ampiasaina xmlstarlet fa tsy sed
Nampiasainay twemproxy eo anoloan'ny Google Cloud Memorystore, miaraka amin'ny memcached-session-manager (manohana an'i Redis) hampandeha azy.
Scaling
Raha efa azonao ny fotoam-pivoriana, dia ny famerana voalohany (ary matetika ny farany) amin'ny famerana ny Camunda BPM dia ny fifandraisana amin'ny angon-drakitra. Efa misy ny fanamboarana ampahany "avy amin'ny boaty" Andeha hofoanana koa ny intialSize ao amin'ny rakitra settings.xml. hametraka Horizontal Pod Autoscaler (HPA) ary azonao atao ny manitsy mora foana ny isan'ny pods.
Fangatahana sy fameperana
В platform/deployment.yaml Ho hitanao fa nosokajinay mafy ny sehatry ny loharanon-karena. Ity dia miasa tsara amin'ny HPA, saingy mety mitaky fanitsiana fanampiny. Ny patch kustomize dia mety amin'izany. Cm. ingress-patch.yaml.tmpl и ./kustomization.yaml.tmpl
famaranana
Noho izany dia nametraka Camunda BPM tao amin'ny Kubernetes izahay miaraka amin'ny metrika Prometheus, logs, database H2, TLS ary Ingress. Nanampy rakitra jar sy rakitra fikirakirana izahay mampiasa ConfigMaps sy Dockerfile. Niresaka momba ny fifanakalozana angon-drakitra amin'ny volume sy mivantana amin'ny fari-piainan'ny tontolo iainana avy amin'ny tsiambaratelo. Ho fanampin'izay, nanome topimaso momba ny fametrahana Camunda ho an'ny kopia marobe sy API voamarina izahay.