Kubernetes์—์„œ Camunda BPM ์‹คํ–‰

Kubernetes์—์„œ Camunda BPM ์‹คํ–‰

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‚˜์š”? Camunda BPM ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ€์ƒ ๋จธ์‹  ๋ฐ–์œผ๋กœ ์ด๋™ํ•  ์ค€๋น„๊ฐ€ ๋˜์…จ๋‚˜์š”, ์•„๋‹ˆ๋ฉด Kubernetes์—์„œ ์‹คํ–‰ํ•ด ๋ณผ ์ค€๋น„๊ฐ€ ๋˜์…จ๋‚˜์š”? ํŠน์ • ์š”๊ตฌ ์‚ฌํ•ญ์— ๋งž๊ฒŒ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ์ผ๋ฐ˜์ ์ธ ๊ตฌ์„ฑ๊ณผ ๊ฐœ๋ณ„ ํ•ญ๋ชฉ์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด์ „์— Kubernetes๋ฅผ ์‚ฌ์šฉํ•œ ์ ์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ํ•œ๋ฒˆ ์‚ดํŽด๋ณด์„ธ์š”. ์ง€๋„๋ ฅ ์ฒซ ๋ฒˆ์งธ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์‹œ์ž‘ํ•˜์ง€ ์•Š์œผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

์ €์ž

์š”์ปจ๋Œ€,

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 ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉ์ž ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ์˜์—ญ์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค(github) Kubernetes์™€ ์›ํ™œํ•˜๊ฒŒ ์ƒํ˜ธ์ž‘์šฉํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

  1. ๋กœ๊ทธ ๋ฐ ์ธก์ •ํ•ญ๋ชฉ
  2. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ;
  3. ์ž…์ฆ;
  4. ์„ธ์…˜ ๊ด€๋ฆฌ.

์ด๋Ÿฌํ•œ ๋ชฉํ‘œ๋ฅผ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด๊ณ  ์ „์ฒด ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ณด์—ฌ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

์ฃผ์˜: 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 ์•„๋‹ˆ๋ฉด ๊ณ„์† ๋” ์ง„ํ–‰ํ•˜์„ธ์š”.

์ „์ œ ์กฐ๊ฑด

๋งค๋‹ˆํŽ˜์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•œ ์›Œํฌํ”Œ๋กœ

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 ๋‚ด์—์„œ ๊ฐ€์žฅ ์ž˜ ๊ธฐ๋ก๋˜๋ฏ€๋กœ ์‚ฌ์ด๋“œ์นด ์ปจํ…Œ์ด๋„ˆ๋Š” ํšจ์œจ์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—ฐ๊ฒฐํ•˜์ž jmx_exporter ๊ฒฝ๋กœ๋ฅผ ์ œ๊ณตํ•  ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€์— ์ถ”๊ฐ€ํ•˜์—ฌ Prometheus์—์„œ 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 ๋“ฑ์— ๋Œ€ํ•œ ํ‘œ์ค€ ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—. Tomcat์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ถ”๊ฐ€ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ปจํ”ผ๊ทธ๋งต Kubernetes์—์„œ ๋ณผ๋ฅจ์œผ๋กœ ๋งˆ์šดํŠธํ•ฉ๋‹ˆ๋‹ค.

๋จผ์ € ๋‚ด๋ณด๋‚ด๊ธฐ ๊ตฌ์„ฑ ํŒŒ์ผ์„ platform/config/ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

platform/config
โ””โ”€โ”€ prometheus-jmx.yaml

๊ทธ๋Ÿฐ ๋‹ค์Œ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ์„ฑ ์ง€๋„ ์ƒ์„ฑ๊ธฐ ะฒ 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 ๊ตฌ์„ฑ ์š”์†Œ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. 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. ์ด ํ…œํ”Œ๋ฆฟ์„ ํ™•์žฅํ•˜์—ฌ ํ•„์š”ํ•œ ๋‹ค๋ฅธ ๊ตฌ์„ฑ ํŒŒ์ผ์„ ํƒ‘์žฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ์‹œ์ž‘ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งˆ์šดํŠธํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๋Š” ํ•˜์œ„ ๊ฒฝ๋กœ ๊ฐœ๋ณ„ ํŒŒ์ผ์„ ๋งˆ์šดํŠธํ•ฉ๋‹ˆ๋‹ค. xml ํŒŒ์ผ์„ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. xmlstarlet sed ๋Œ€์‹ . ์ด๋ฏธ ์ด๋ฏธ์ง€์— ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์žก์ง€

์ข‹์€ ์†Œ์‹! ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ๊ทธ๋Š” ์ด๋ฏธ 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 ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ์ค‘์—๋„ ๋น„๋ฐ€์„ ์•ˆ์ „ํ•˜๊ฒŒ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

Kubernetes ๋น„๋ฐ€ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ์„ ํ˜ธํ•˜๋Š” ์‹œ์Šคํ…œ์ด ์ด๋ฏธ ์žˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช‡ ๊ฐ€์ง€ ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์šฐ๋“œ ๊ณต๊ธ‰์ž์˜ KMS๋กœ ์•”ํ˜ธํ™”ํ•œ ๋‹ค์Œ CD ํŒŒ์ดํ”„๋ผ์ธ์„ ํ†ตํ•ด K8S์— ๋น„๋ฐ€๋กœ ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ์งˆ๋ผSOPS - Kustomize ๋น„๋ฐ€๊ณผ ํ•จ๊ป˜ ๋งค์šฐ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” dotGPG์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ๋„๊ตฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. HashiCorp ๊ธˆ๊ณ , ๋น„๋ฐ€ ๊ฐ’ ํ”Œ๋Ÿฌ๊ทธ์ธ ์‚ฌ์šฉ์ž ์ •์˜.

์ž…๊ตฌ

๋กœ์ปฌ ํฌํŠธ โ€‹โ€‹์ „๋‹ฌ์„ ์‚ฌ์šฉํ•˜๋„๋ก ์„ ํƒํ•˜์ง€ ์•Š๋Š” ํ•œ ๊ตฌ์„ฑ๋œ ์ˆ˜์‹  ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์ˆ˜์‹ -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: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์—์„œ๋Š” ์ธ์ฆ์ด ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ๊ธฐ๋ณธ ์ธ์ฆ ํ™œ์„ฑํ™” ๋˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. JWT. configmap๊ณผ ๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•˜์—ฌ xml์„ ๋กœ๋“œํ•˜๊ฑฐ๋‚˜ xmlstarlet(์œ„ ์ฐธ์กฐ)์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€์˜ ๊ธฐ์กด ํŒŒ์ผ์„ ํŽธ์ง‘ํ•˜๊ณ  wget์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ init ์ปจํ…Œ์ด๋„ˆ ๋ฐ ๊ณต์œ  ๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„ธ์…˜ ๊ด€๋ฆฌ

๋‹ค๋ฅธ ๋งŽ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ Camunda BPM์€ JVM์—์„œ ์„ธ์…˜์„ ์ฒ˜๋ฆฌํ•˜๋ฏ€๋กœ ์—ฌ๋Ÿฌ ๋ณต์ œ๋ณธ์„ ์‹คํ–‰ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ๊ณ ์ • ์„ธ์…˜(์˜ˆ๋ฅผ ๋“ค์–ด ingress-nginx์˜ ๊ฒฝ์šฐ) ๋ณต์ œ๋ณธ์ด ์‚ฌ๋ผ์งˆ ๋•Œ๊นŒ์ง€ ์กด์žฌํ•˜๊ฑฐ๋‚˜ ์ฟ ํ‚ค์— ๋Œ€ํ•œ Max-Age ์†์„ฑ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ณด๋‹ค ๊ฐ•๋ ฅํ•œ ์†”๋ฃจ์…˜์„ ์œ„ํ•ด Tomcat์— Session Manager๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ผ์Šค๋Š” ๋ณ„๋„์˜ ๊ฒŒ์‹œ๋ฌผ ์ด ์ฃผ์ œ์— ๋Œ€ํ•ด์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

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์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์‚ฌ์šฉํ–ˆ์—ˆ๋‹ค ํ…œํ”„๋ก์‹œ Google Cloud Memorystore ์•ž์— memcached-์„ธ์…˜-๊ด€๋ฆฌ์ž (Redis ์ง€์›)์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์Šค์ผ€์ผ๋ง

์„ธ์…˜์„ ์ด๋ฏธ ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค๋ฉด Camunda BPM ํ™•์žฅ์— ๋Œ€ํ•œ ์ฒซ ๋ฒˆ์งธ(๊ทธ๋ฆฌ๊ณ  ์ข…์ข… ๋งˆ์ง€๋ง‰) ์ œํ•œ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ถ€๋ถ„์ ์ธ ๋งž์ถคํ™”๊ฐ€ ์ด๋ฏธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค."๋ฐ•์Šค์—์„œ" settings.xml ํŒŒ์ผ์—์„œ intialSize๋„ ๋น„ํ™œ์„ฑํ™”ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ถ”๊ฐ€ํ•˜๋‹ค ์ˆ˜ํ‰ํ˜• ํฌ๋“œ ์ž๋™ ํ™•์žฅ ์ฒ˜๋ฆฌ(HPA) Pod ์ˆ˜๋ฅผ ์ž๋™์œผ๋กœ ์‰ฝ๊ฒŒ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์š”์ฒญ ๋ฐ ์ œํ•œ ์‚ฌํ•ญ

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

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€