์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ฌ์ฉํ๊ณ ์๋์? Camunda BPM ์ธ์คํด์ค๋ฅผ ๊ฐ์ ๋จธ์ ๋ฐ์ผ๋ก ์ด๋ํ ์ค๋น๊ฐ ๋์ จ๋์, ์๋๋ฉด Kubernetes์์ ์คํํด ๋ณผ ์ค๋น๊ฐ ๋์ จ๋์? ํน์ ์๊ตฌ ์ฌํญ์ ๋ง๊ฒ ์กฐ์ ํ ์ ์๋ ๋ช ๊ฐ์ง ์ผ๋ฐ์ ์ธ ๊ตฌ์ฑ๊ณผ ๊ฐ๋ณ ํญ๋ชฉ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์ด์ ์ Kubernetes๋ฅผ ์ฌ์ฉํ ์ ์ด ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ๊ทธ๋ ์ง ์๋ค๋ฉด ํ๋ฒ ์ดํด๋ณด์ธ์.
์ ์
์๋ผ์คํ ์ด ํผ์ค (Alastair Firth) - Camunda Cloud ํ์ ์์ ์ฌ์ดํธ ์์ ์ฑ ์์ง๋์ด;๋ผ์ค ๋ญ (Lars Lange) - Camunda์ DevOps ์์ง๋์ด.
์์ปจ๋,
git clone https://github.com/camunda-cloud/camunda-examples.git
cd camunda-examples/camunda-bpm-demo
make skaffold
์ข์ต๋๋ค. Skaffold์ Kustomize๊ฐ ์ค์น๋์ด ์์ง ์๊ธฐ ๋๋ฌธ์ ์๋ง๋ ์๋ํ์ง ์์์ ๊ฒ์ ๋๋ค. ๊ทธ๋ผ ๊ณ์ ์ฝ์ด๋ณด์ธ์!
Camunda BPM์ด๋ ๋ฌด์์ ๋๊น?
Camunda BPM์ ๋น์ฆ๋์ค ์ฌ์ฉ์์ ์ํํธ์จ์ด ๊ฐ๋ฐ์๋ฅผ ์ฐ๊ฒฐํ๋ ์คํ ์์ค ๋น์ฆ๋์ค ํ๋ก์ธ์ค ๊ด๋ฆฌ ๋ฐ ์์ฌ๊ฒฐ์ ์๋ํ ํ๋ซํผ์
๋๋ค. ์ฌ๋, (๋ง์ดํฌ๋ก) ์๋น์ค ๋๋ ๋ด์ ์กฐ์ ํ๊ณ ์ฐ๊ฒฐํ๋ ๋ฐ ์ด์์ ์
๋๋ค! ๋ค์ํ ์ฌ์ฉ ์ฌ๋ก์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ค์์์ ํ์ธํ ์ ์์ต๋๋ค.
์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ฌ์ฉํ๋ ์ด์
Kubernetes๋ Linux์์ ์ต์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๊ธฐ ์ํ ์ฌ์ค์์ ํ์ค์ด ๋์์ต๋๋ค. ํ๋์จ์ด ์๋ฎฌ๋ ์ด์ ๋์ ์์คํ ํธ์ถ์ ์ฌ์ฉํ๊ณ ์ปค๋์ ๋ฉ๋ชจ๋ฆฌ ๋ฐ ์์ ์ ํ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ๋ถํ ์๊ฐ๊ณผ ์์ ์๊ฐ์ ์ต์ํํฉ๋๋ค. ๊ทธ๋ฌ๋ ๊ฐ์ฅ ํฐ ์ด์ ์ ์คํ ๋ฆฌ์ง, ๋คํธ์ํน, ๋ชจ๋ํฐ๋ง ๋ฑ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ํ ์ธํ๋ผ๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํด Kubernetes๊ฐ ์ ๊ณตํ๋ ํ์ค API์์ ๋์ฌ ์ ์์ต๋๋ค. 2020๋ 6์์ XNUMX์ฃผ๋ ์ ๋ง์ดํ์ผ๋ฉฐ ์๋ง๋ (Linux ๋ค์์ผ๋ก) ๋ ๋ฒ์งธ๋ก ํฐ ์คํ ์์ค ํ๋ก์ ํธ์ผ ๊ฒ์ ๋๋ค. ์ด๋ ์ ์ธ๊ณ ํ๋ก๋์ ์ํฌ๋ก๋์ ์ค์ํด์ง์ ๋ฐ๋ผ ์ง๋ ๋ช ๋ ๊ฐ ๋น ๋ฅธ ๋ฐ๋ณต์ ๊ฑฐ์ณ ์ต๊ทผ ์ ๊ทน์ ์ผ๋ก ๊ธฐ๋ฅ์ ์์ ํํด ์์ต๋๋ค.
Camunda BPM ์์ง์ ๋์ผํ ํด๋ฌ์คํฐ์์ ์คํ๋๋ ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฝ๊ฒ ์ฐ๊ฒฐํ ์ ์์ผ๋ฉฐ Kubernetes๋ ๋ฐ์ด๋ ํ์ฅ์ฑ์ ์ ๊ณตํ๋ฏ๋ก ์ค์ ๋ก ํ์ํ ๋๋ง ์ธํ๋ผ ๋น์ฉ์ ๋๋ฆด ์ ์์ต๋๋ค(ํ์์ ๋ฐ๋ผ ์ฝ๊ฒ ์ค์ผ ์ ์์).
Prometheus, Grafana, Loki, Fluentd ๋ฐ Elasticsearch์ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ชจ๋ํฐ๋ง ํ์ง๋ ํฌ๊ฒ ํฅ์๋์ด ํด๋ฌ์คํฐ์ ๋ชจ๋ ์ํฌ๋ก๋๋ฅผ ์ค์์์ ๋ณผ ์ ์์ต๋๋ค. ์ค๋์ Prometheus ๋ด๋ณด๋ด๊ธฐ ํ๋ก๊ทธ๋จ์ JVM(Java Virtual Machine)์ผ๋ก ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋์
Camunda BPM Docker ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉ์ ์ ์ํ ์ ์๋ ๋ช ๊ฐ์ง ์์ญ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค(
- ๋ก๊ทธ ๋ฐ ์ธก์ ํญ๋ชฉ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ;
- ์ ์ฆ;
- ์ธ์ ๊ด๋ฆฌ.
์ด๋ฌํ ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๊ธฐ ์ํ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ณ ์ ์ฒด ํ๋ก์ธ์ค๋ฅผ ๋ช ํํ๊ฒ ๋ณด์ฌ ๋๋ฆฌ๊ฒ ์ต๋๋ค.
์ฃผ์: Enterprise ๋ฒ์ ์ ์ฌ์ฉํ๊ณ ๊ณ์๋์? ๋ฐ๋ผ๋ณด๋ค
์ํฌํ๋ก์ฐ ๊ฐ๋ฐ
์ด ๋ฐ๋ชจ์์๋ Skaffold๋ฅผ ์ฌ์ฉํ์ฌ Google Cloud Build๋ฅผ ์ฌ์ฉํ์ฌ Docker ์ด๋ฏธ์ง๋ฅผ ๋น๋ํฉ๋๋ค. ๋ค์ํ ๋๊ตฌ(์: Kustomize ๋ฐ Helm), CI ๋ฐ ๋น๋ ๋๊ตฌ, ์ธํ๋ผ ์ ๊ณต์๋ฅผ ํ๋ฅญํ๊ฒ ์ง์ํฉ๋๋ค. ํ์ผ skaffold.yaml.tmpl
Google Cloud Build ๋ฐ GKE์ ๋ํ ์ค์ ์ด ํฌํจ๋์ด ์์ด ํ๋ก๋์
๊ธ ์ธํ๋ผ๋ฅผ ์คํํ๋ ๋งค์ฐ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
make skaffold
Dockerfile ์ปจํ
์คํธ๋ฅผ Cloud Build์ ๋ก๋ํ๊ณ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ์ฌ GCR์ ์ ์ฅํ ๋ค์ ๋งค๋ํ์คํธ๋ฅผ ํด๋ฌ์คํฐ์ ์ ์ฉํฉ๋๋ค. ์ด๊ฒ์ด ํ๋ ์ผ์ด๋ค make skaffold
์ด์ง๋ง Skaffold์๋ ๋ค๋ฅธ ๋ง์ ๊ธฐ๋ฅ์ด ์์ต๋๋ค.
Kubernetes์ yaml ํ
ํ๋ฆฟ์ ๊ฒฝ์ฐ kustomize๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฒด ๋งค๋ํ์คํธ๋ฅผ ํฌํฌํ์ง ์๊ณ yaml ์ค๋ฒ๋ ์ด๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. git pull --rebase
์ถ๊ฐ ๊ฐ์ ์ ์ํด. ์ด์ ๊ทธ๊ฒ์ kubectl์ ์์ผ๋ฉฐ ๊ทธ๋ฌํ ์์
์ ์์ฃผ ์ ์๋ํฉ๋๋ค.
๋ํ envsubst๋ฅผ ์ฌ์ฉํ์ฌ *.yaml.tmpl ํ์ผ์ ํธ์คํธ ์ด๋ฆ๊ณผ GCP ํ๋ก์ ํธ ID๋ฅผ ์ฑ์๋๋ค. ์์ ์ด๋ป๊ฒ ์๋ํ๋์ง ๋ณผ ์ ์์ต๋๋ค. makefile
์๋๋ฉด ๊ณ์ ๋ ์งํํ์ธ์.
์ ์ ์กฐ๊ฑด
- ์
๋ฌด ํด๋ฌ์คํฐ
Kubernetes ์ฌ์ฉ์ ์ ์ ๋น๊ณ - ์์ฒด Docker ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๊ณ GKE์ ์ฝ๊ฒ ๋ฐฐํฌ- ์ด ์ฝ๋์ ์ฌ๋ณธ
- Envsubst
๋งค๋ํ์คํธ๋ฅผ ์ฌ์ฉํ ์ํฌํ๋ก
Kustomize ๋๋ Skaffold๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ ค๋ฉด ๋ค์์ ๋งค๋ํ์คํธ๋ฅผ ์ฐธ์กฐํ์ธ์. generated-manifest.yaml
์ํ๋ ์ํฌํ๋ก์ ๋ง๊ฒ ์กฐ์ ํ์ธ์.
๋ก๊ทธ ๋ฐ ์ธก์ ํญ๋ชฉ
Prometheus๋ Kubernetes์์ ์ธก์ ํญ๋ชฉ์ ์์งํ๋ ํ์ค์ด ๋์์ต๋๋ค. AWS Cloudwatch Metrics, Cloudwatch Alerts, Stackdriver Metrics, StatsD, Datadog, Nagios, vSphere Metrics ๋ฑ๊ณผ ๋์ผํ ํ์ ์์ฅ์ ์ฐจ์งํฉ๋๋ค. ์คํ ์์ค์ด๋ฉฐ ๊ฐ๋ ฅํ ์ฟผ๋ฆฌ ์ธ์ด๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์๊ฐํ๋ฅผ Grafana์ ๋งก๊ธธ ๊ฒ์
๋๋ค. Grafana์๋ ์ฆ์ ์ฌ์ฉํ ์ ์๋ ์๋ง์ ๋์๋ณด๋๊ฐ โโํจ๊ป ์ ๊ณต๋ฉ๋๋ค. ์๋ก ์ฐ๊ฒฐ๋์ด ์์ด ๋น๊ต์ ์ค์น๊ฐ ์ฝ์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก Prometheus๋ ์ถ์ถ ๋ชจ๋ธ์ ์ฌ์ฉํฉ๋๋ค. <service>/metrics
, ์ด๋ฅผ ์ํด ์ฌ์ด๋์นด ์ปจํ
์ด๋๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์
๋๋ค. ๋ถํํ๊ฒ๋ JMX ๋ฉํธ๋ฆญ์ 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
๊ธ์์, ๊ทธ๊ฑด ์ฌ์ ์ด์. ๋ด๋ณด๋ด๊ธฐ๋ tomcat์ ๋ชจ๋ํฐ๋งํ๊ณ ํด๋น ๋ฉํธ๋ฆญ์ Prometheus ํ์์ผ๋ก ํ์ํฉ๋๋ค. <svc>:9404/metrics
์์ถ์ ์ ์ค์
์ธ์ฌํ ๋
์๋ ๊ทธ๊ฒ์ด ์ด๋์ ์๋์ง ๊ถ๊ธํด ํ ๊ฒ์
๋๋ค. prometheus-jmx.yaml
? JVM์์ ์คํํ ์ ์๋ ๋ค์ํ ํญ๋ชฉ์ด ์์ผ๋ฉฐ tomcat์ ๊ทธ ์ค ํ๋์ผ ๋ฟ์ด๋ฏ๋ก ๋ด๋ณด๋ด๊ธฐ์๋ ๋ช ๊ฐ์ง ์ถ๊ฐ ๊ตฌ์ฑ์ด ํ์ํฉ๋๋ค. Tomcat, wildfly, kafka ๋ฑ์ ๋ํ ํ์ค ๊ตฌ์ฑ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋จผ์ ๋ด๋ณด๋ด๊ธฐ ๊ตฌ์ฑ ํ์ผ์ platform/config/ ๋๋ ํฐ๋ฆฌ์ ์ถ๊ฐํฉ๋๋ค.
platform/config
โโโ prometheus-jmx.yaml
๊ทธ๋ฐ ๋ค์ ์ถ๊ฐํฉ๋๋ค. kustomization.yaml.tmp
l:
-- platform/kustomization.yaml.tmpl
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
[...]
configMapGenerator:
- name: config
files:
- config/prometheus-jmx.yaml
์ด๋ ๊ฒ ํ๋ฉด ๊ฐ ์์๊ฐ ์ถ๊ฐ๋ฉ๋๋ค. files[]
ConfigMap ๊ตฌ์ฑ ์์๋ก ์ฌ์ฉ๋ฉ๋๋ค. ConfigMapGenerator๋ ๊ตฌ์ฑ ๋ฐ์ดํฐ๋ฅผ ํด์ํ๊ณ ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ ํฌ๋๋ฅผ ๊ฐ์ ๋ก ๋ค์ ์์ํ๊ธฐ ๋๋ฌธ์ ํ๋ฅญํฉ๋๋ค. ๋ํ ํ๋์ VolumeMount์ ๊ตฌ์ฑ ํ์ผ์ ์ ์ฒด "ํด๋"๋ฅผ ๋ง์ดํธํ ์ ์์ผ๋ฏ๋ก ๋ฐฐํฌ ์ ๊ตฌ์ฑ์ ์์ด ์ค์ด๋ญ๋๋ค.
๋ง์ง๋ง์ผ๋ก ConfigMap์ ํฌ๋์ ๋ณผ๋ฅจ์ผ๋ก ๋ง์ดํธํด์ผ ํฉ๋๋ค.
-- 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
[...]
์์ฃผ ๋ฉ์ง. Prometheus๊ฐ ์ ์ฒด ์ ๋ฆฌ๋ฅผ ์ํํ๋๋ก ๊ตฌ์ฑ๋์ง ์์ ๊ฒฝ์ฐ Pod๋ฅผ ์ ๋ฆฌํ๋๋ก ์ง์ํด์ผ ํ ์๋ ์์ต๋๋ค. Prometheus Operator ์ฌ์ฉ์๋ ๋ค์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. service-monitor.yaml
์์ํ๋ ค๋ฉด. ํ๊ตฌํ๋ค Service-monitor.yaml
,
์ด ํจํด์ ๋ค๋ฅธ ์ฌ์ฉ ์ฌ๋ก๋ก ํ์ฅ
ConfigMapGenerator์ ์ถ๊ฐํ๋ ๋ชจ๋ ํ์ผ์ ์ ๋๋ ํฐ๋ฆฌ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. /etc/config
. ์ด ํ
ํ๋ฆฟ์ ํ์ฅํ์ฌ ํ์ํ ๋ค๋ฅธ ๊ตฌ์ฑ ํ์ผ์ ํ์ฌํ ์ ์์ต๋๋ค. ์๋ก์ด ์์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ง์ดํธํ ์๋ ์์ต๋๋ค. ๋น์ ์ด ์ฌ์ฉํ ์์๋
์ก์ง
์ข์ ์์! ์ ํ๋ฆฌ์ผ์ด์
๋ก๊ทธ๋ ์ด๋ฏธ 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
[...]
์ฃผ์: Kustomize๋ฅผ ์ฌ์ฉํ๋ฉด ์ค๋ฒ๋ ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ํ ํ๊ฒฝ์ ๋ฐฐํฌํ ์ ์์ต๋๋ค.
์ฃผ์: ์ฉ๋ฒ valueFrom: secretKeyRef
. ์ฌ์ฉ ํด์ฃผ์ธ์
Kubernetes ๋น๋ฐ ๊ด๋ฆฌ๋ฅผ ์ํด ์ ํธํ๋ ์์คํ
์ด ์ด๋ฏธ ์์ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ ๋ช ๊ฐ์ง ์ต์
์ด ์์ต๋๋ค. ํด๋ผ์ฐ๋ ๊ณต๊ธ์์ KMS๋ก ์ํธํํ ๋ค์ CD ํ์ดํ๋ผ์ธ์ ํตํด K8S์ ๋น๋ฐ๋ก ์ฝ์
ํฉ๋๋ค.
์ ๊ตฌ
๋ก์ปฌ ํฌํธ โโ์ ๋ฌ์ ์ฌ์ฉํ๋๋ก ์ ํํ์ง ์๋ ํ ๊ตฌ์ฑ๋ ์์ ์ปจํธ๋กค๋ฌ๊ฐ ํ์ํฉ๋๋ค. ์ฌ์ฉํ์ง ์์ผ๋ฉด ingress-patch.yaml.tmpl
๋๋ platform/ingress.yaml
. ingress-nginx๋ฅผ ์ฌ์ฉ ์ค์ด๊ณ ์ด๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ก๋ ๋ฐธ๋ฐ์๊ฐ ์๋ nginx ์์ ํด๋์ค์ ์ธ๋ถ DNS ๋๋ ์์ผ๋์นด๋ DNS ํญ๋ชฉ์ด ๋ณด์ด๋ฉด ์ ์งํ๋ ๊ฒ์
๋๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ์์ ์ปจํธ๋กค๋ฌ ๋ฐ DNS๋ฅผ ๊ตฌ์ฑํ๊ฑฐ๋ ์ด ๋จ๊ณ๋ฅผ ๊ฑด๋๋ฐ๊ณ ํฌ๋์ ๋ํ ์ง์ ์ฐ๊ฒฐ์ ์ ์งํ์ธ์.
TLS
์ฌ์ฉํ๋ ๊ฒฝ์ฐ 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:8080
์ localhost:8080/camunda
Tomcat์ด ์์ ํ ์ค๋น๋ ๋๊น์ง ๋ช ๋ถ ์ ๋ ๊ธฐ๋ค๋ฆฌ์ญ์์ค. 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์์๋ ์ธ์ฆ์ด ๋นํ์ฑํ๋์ด ์๋ค๋ ์ ์ ์ ์ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋น์ ์ ํ ์ ์์ต๋๋ค
์ธ์ ๊ด๋ฆฌ
๋ค๋ฅธ ๋ง์ ์ ํ๋ฆฌ์ผ์ด์
๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก Camunda BPM์ JVM์์ ์ธ์
์ ์ฒ๋ฆฌํ๋ฏ๋ก ์ฌ๋ฌ ๋ณต์ ๋ณธ์ ์คํํ๋ ค๋ ๊ฒฝ์ฐ ๊ณ ์ ์ธ์
(
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
์ฃผ์: sed ๋์ xmlstarlet์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ์ฌ์ฉํ์๋ค
์ค์ผ์ผ๋ง
์ธ์
์ ์ด๋ฏธ ์ดํดํ๊ณ ์๋ค๋ฉด Camunda BPM ํ์ฅ์ ๋ํ ์ฒซ ๋ฒ์งธ(๊ทธ๋ฆฌ๊ณ ์ข
์ข
๋ง์ง๋ง) ์ ํ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ์ฐ๊ฒฐ์ผ ์ ์์ต๋๋ค. ๋ถ๋ถ์ ์ธ ๋ง์ถคํ๊ฐ ์ด๋ฏธ ๊ฐ๋ฅํฉ๋๋ค."
์์ฒญ ๋ฐ ์ ํ ์ฌํญ
ะ platform/deployment.yaml
๋ฆฌ์์ค ํ๋๋ฅผ ํ๋ ์ฝ๋ฉํ์์ ์ ์ ์์ต๋๋ค. ์ด๋ HPA์ ์ ์๋ํ์ง๋ง ์ถ๊ฐ ๊ตฌ์ฑ์ด ํ์ํ ์ ์์ต๋๋ค. Kustomize ํจ์น๊ฐ ์ด์ ์ ํฉํฉ๋๋ค. ์ผํฐ๋ฏธํฐ. ingress-patch.yaml.tmpl ะธ ./kustomization.yaml.tmpl
์ถ๋ ฅ
๊ทธ๋์ ์ฐ๋ฆฌ๋ Prometheus ๋ฉํธ๋ฆญ, ๋ก๊ทธ, H2 ๋ฐ์ดํฐ๋ฒ ์ด์ค, TLS ๋ฐ Ingress๋ฅผ ์ฌ์ฉํ์ฌ Kubernetes์ 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์ผ, ๋ฒ์ญ
์ถ์ฒ : habr.com