Kubernetes-āĻ Camunda BPM āϚāϞāϛ⧇

Kubernetes-āĻ Camunda BPM āϚāϞāϛ⧇

āφāĻĒāύāĻŋ āĻ•āĻŋ āϕ⧁āĻŦāĻžāϰāύ⧇āϟāϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϛ⧇āύ? āφāĻĒāύāĻžāϰ āĻ•āĻžāĻŽā§āĻ¨ā§āĻĄāĻž āĻŦāĻŋāĻĒāĻŋāĻāĻŽ āĻĻ⧃āĻˇā§āϟāĻžāĻ¨ā§āϤāϗ⧁āϞāĻŋ āĻ­āĻžāĻ°ā§āϚ⧁āϝāĻŧāĻžāϞ āĻŽā§‡āĻļāĻŋāύ⧇āϰ āĻŦāĻžāχāϰ⧇ āϏāϰāĻžāύ⧋āϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāĻ¸ā§āϤ⧁āϤ, āĻ…āĻĨāĻŦāĻž āĻšāϝāĻŧāϤ⧋ āϕ⧁āĻŦāĻžāϰāύ⧇āϟāϏ⧇ āϏ⧇āϗ⧁āϞāĻŋ āϚāĻžāϞāĻžāύ⧋āϰ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰ⧁āύ? āφāϏ⧁āύ āĻ•āĻŋāϛ⧁ āϏāĻžāϧāĻžāϰāĻŖ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻāĻŦāĻ‚ āĻ¸ā§āĻŦāϤāĻ¨ā§āĻ¤ā§āϰ āφāχāĻŸā§‡āĻŽāϗ⧁āϞāĻŋ āĻĻ⧇āϖ⧁āύ āϝāĻž āφāĻĒāύāĻžāϰ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻ…āύ⧁āϏāĻžāϰ⧇ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

āĻāϟāĻž āĻ…āύ⧁āĻŽāĻžāύ āĻ•āϰ⧇ āϝ⧇ āφāĻĒāύāĻŋ āφāϗ⧇ Kubernetes āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āϛ⧇āύāĨ¤ āύāĻž āĻšāϞ⧇ āĻĻ⧇āϖ⧇ āύāĻŋāύ āϕ⧇āύ āύ⧇āϤ⧃āĻ¤ā§āĻŦ āĻāĻŦāĻ‚ āφāĻĒāύāĻžāϰ āĻĒā§āϰāĻĨāĻŽ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ āĻļ⧁āϰ⧁ āĻ•āϰāĻŦ⧇āύ āύāĻž?

āϞ⧇āĻ–āĻ•

āϏāĻ‚āĻ•ā§āώ⧇āĻĒ⧇, āϤāĻžāϰāĻĒāϰ:

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

āĻ āĻŋāĻ• āφāϛ⧇, āĻāϟāĻŋ āϏāĻŽā§āĻ­āĻŦāϤ āĻ•āĻžāϜ āĻ•āϰ⧇āύāĻŋ āĻ•āĻžāϰāĻŖ āφāĻĒāύāĻžāϰ āĻ¸ā§āĻ•ā§āϝāĻžāĻĢā§‹āĻ˛ā§āĻĄ āĻāĻŦāĻ‚ āĻ•āĻžāĻ¸ā§āϟāĻŽāĻžāχāϜ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž āύ⧇āχāĨ¤ āφāĻšā§āĻ›āĻž āϤāĻžāĻšāϞ⧇ āĻĒāĻĄāĻŧ⧁āύ!

āĻ•āĻžāĻŽā§āĻ¨ā§āĻĄāĻž āĻŦāĻŋāĻĒāĻŋāĻāĻŽ āĻ•āĻŋ?

Camunda BPM āĻšāϞ āĻāĻ•āϟāĻŋ āĻ“āĻĒ⧇āύ āϏ⧋āĻ°ā§āϏ āĻŦāĻŋāϜāύ⧇āϏ āĻĒā§āϰāϏ⧇āϏ āĻŽā§āϝāĻžāύ⧇āϜāĻŽā§‡āĻ¨ā§āϟ āĻāĻŦāĻ‚ āĻĄāĻŋāϏāĻŋāĻļāύ āĻ…āĻŸā§‹āĻŽā§‡āĻļāύ āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽ āϝāĻž āĻŦā§āϝāĻŦāϏāĻžāϝāĻŧāĻŋāĻ• āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āĻāĻŦāĻ‚ āϏāĻĢāϟāĻ“āϝāĻŧā§āϝāĻžāϰ āĻĄā§‡āϭ⧇āϞāĻĒāĻžāϰāĻĻ⧇āϰ āϏāĻ‚āϝ⧁āĻ•ā§āϤ āĻ•āϰ⧇āĨ¤ āĻāϟāĻŋ āϏāĻŽāĻ¨ā§āĻŦāϝāĻŧ āĻāĻŦāĻ‚ āĻŽāĻžāύ⧁āώ, (āĻŽāĻžāχāĻ•ā§āϰ⧋) āĻĒāϰāĻŋāώ⧇āĻŦāĻž āĻŦāĻž āĻāĻŽāύāĻ•āĻŋ āĻŦāϟ āϏāĻ‚āϝ⧋āϗ⧇āϰ āϜāĻ¨ā§āϝ āφāĻĻāĻ°ā§āĻļ! āφāĻĒāύāĻŋ āĻāĻ–āĻžāύ⧇ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āφāϰāĻ“ āĻĒāĻĄāĻŧāϤ⧇ āĻĒāĻžāϰ⧇āύ āϞāĻŋāĻ‚āĻ•.

āϕ⧇āύ āϕ⧁āĻŦāĻžāϰāύ⧇āϟāϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ

āϞāĻŋāύāĻžāĻ•ā§āϏ⧇ āφāϧ⧁āύāĻŋāĻ• āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϚāĻžāϞāĻžāύ⧋āϰ āϜāĻ¨ā§āϝ āϕ⧁āĻŦāĻžāϰāύ⧇āϟāϏ āĻĄāĻŋ āĻĢā§āϝāĻžāĻ•ā§āĻŸā§‹ āĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻšāϝāĻŧ⧇ āωāϠ⧇āϛ⧇āĨ¤ āĻšāĻžāĻ°ā§āĻĄāĻ“āϝāĻŧā§āϝāĻžāϰ āĻāĻŽā§āϞ⧇āĻļāύ⧇āϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻ•āϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āĻŽā§‡āĻŽāϰāĻŋ āĻāĻŦāĻ‚ āϟāĻžāĻ¸ā§āĻ• āĻ¸ā§āϝ⧁āχāϚāĻŋāĻ‚ āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻ•āĻžāĻ°ā§āύ⧇āϞ⧇āϰ āĻ•ā§āώāĻŽāϤāĻž, āĻŦ⧁āϟ āϏāĻŽāϝāĻŧ āĻāĻŦāĻ‚ āĻ¸ā§āϟāĻžāĻ°ā§āϟāφāĻĒ āϏāĻŽāϝāĻŧ āĻ¨ā§āϝ⧂āύāϤāĻŽ āϰāĻžāĻ–āĻž āĻšāϝāĻŧāĨ¤ āϝāĻžāχāĻšā§‹āĻ•, āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āĻŦāĻĄāĻŧ āϏ⧁āĻŦāĻŋāϧāĻž āĻšāϤ⧇ āĻĒāĻžāϰ⧇ āĻŽāĻžāύāĻ• API āĻĨ⧇āϕ⧇ āϝāĻž āϕ⧁āĻŦāĻžāϰāύ⧇āϟāϏ āϏāĻŽāĻ¸ā§āϤ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ⧇āϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧ āĻ…āĻŦāĻ•āĻžāĻ āĻžāĻŽā§‹ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇: āĻ¸ā§āĻŸā§‹āϰ⧇āϜ, āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ•āĻŋāĻ‚ āĻāĻŦāĻ‚ āĻĒāĻ°ā§āϝāĻŦ⧇āĻ•ā§āώāĻŖāĨ¤ āĻāϟāĻŋ 2020 āϏāĻžāϞ⧇āϰ āϜ⧁āύ⧇ 6 āĻŦāĻ›āϰ āĻŦāϝāĻŧāϏ⧇ āĻĒāϰāĻŋāĻŖāϤ āĻšāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ āϏāĻŽā§āĻ­āĻŦāϤ āĻāϟāĻŋ āĻĻā§āĻŦāĻŋāϤ⧀āϝāĻŧ āĻŦ⧃āĻšāĻ¤ā§āϤāĻŽ āĻ“āĻĒ⧇āύ āϏ⧋āĻ°ā§āϏ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ (āϞāĻŋāύāĻžāĻ•ā§āϏ⧇āϰ āĻĒāϰ⧇)āĨ¤ āĻāϟāĻŋ āϏāĻŽā§āĻĒā§āϰāϤāĻŋ āϏāĻ•ā§āϰāĻŋāϝāĻŧāĻ­āĻžāĻŦ⧇ āĻ—āϤ āĻ•āϝāĻŧ⧇āĻ• āĻŦāĻ›āϰ āϧāϰ⧇ āĻĻā§āϰ⧁āϤ āĻĒ⧁āύāϰāĻžāĻŦ⧃āĻ¤ā§āϤāĻŋāϰ āĻĒāϰ⧇ āĻāϰ āĻ•āĻžāĻ°ā§āϝāĻ•āĻžāϰāĻŋāϤāĻž āĻ¸ā§āĻĨāĻŋāϤāĻŋāĻļā§€āϞ āĻ•āϰāϛ⧇ āĻ•āĻžāϰāĻŖ āĻāϟāĻŋ āĻŦāĻŋāĻļā§āĻŦāϜ⧁āĻĄāĻŧ⧇ āωāĻ¤ā§āĻĒāĻžāĻĻāύ āĻ•āĻžāĻœā§‡āϰ āϚāĻžāĻĒ⧇āϰ āϜāĻ¨ā§āϝ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻšāϝāĻŧ⧇ āωāϠ⧇āϛ⧇āĨ¤

Camunda BPM āχāĻžā§āϜāĻŋāύ āϏāĻšāĻœā§‡āχ āĻāĻ•āχ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ⧇ āϚāϞāĻŽāĻžāύ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ⧇āϰ āϏāĻžāĻĨ⧇ āϏāĻ‚āϝ⧋āĻ— āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇, āĻāĻŦāĻ‚ Kubernetes āϚāĻŽā§ŽāĻ•āĻžāϰ āĻ¸ā§āϕ⧇āϞ⧇āĻŦāĻŋāϞāĻŋāϟāĻŋ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇, āϝāĻž āφāĻĒāύāĻžāϕ⧇ āĻĒāϰāĻŋāĻ•āĻžāĻ āĻžāĻŽā§‹āϰ āĻ–āϰāϚ āĻŦ⧃āĻĻā§āϧāĻŋ āĻ•āϰāϤ⧇ āĻĻ⧇āϝāĻŧ āϝāĻ–āύ āϏāĻ¤ā§āϝāĻŋāĻ•āĻžāϰ⧇āϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻšāϝāĻŧ (āĻāĻŦāĻ‚ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻ…āύ⧁āϝāĻžāϝāĻŧā§€ āϏāĻšāĻœā§‡āχ āĻ•āĻŽāĻŋāϝāĻŧ⧇ āĻĻ⧇āϝāĻŧ)āĨ¤

Prometheus, Grafana, Loki, Fluentd āĻāĻŦāĻ‚ Elasticsearch-āĻāϰ āĻŽāϤ⧋ āϟ⧁āϞāϗ⧁āϞāĻŋāϰ āϏāĻžāĻšāĻžāĻ¯ā§āϝ⧇ āĻŽāύāĻŋāϟāϰāĻŋāĻ‚āϝāĻŧ⧇āϰ āϗ⧁āĻŖāĻŽāĻžāύāĻ“ āĻŦā§āϝāĻžāĻĒāĻ•āĻ­āĻžāĻŦ⧇ āωāĻ¨ā§āύāϤ āĻšāϝāĻŧ⧇āϛ⧇, āϝāĻž āφāĻĒāύāĻžāϕ⧇ āĻāĻ•āϟāĻŋ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ⧇ āϏāĻŽāĻ¸ā§āϤ āĻ•āĻžāĻœā§‡āϰ āϚāĻžāĻĒ āϕ⧇āĻ¨ā§āĻĻā§āϰ⧀āϝāĻŧāĻ­āĻžāĻŦ⧇ āĻĻ⧇āĻ–āϤ⧇ āĻĻ⧇āϝāĻŧāĨ¤ āφāϜ āφāĻŽāϰāĻž āĻĻ⧇āĻ–āĻŦ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āϜāĻžāĻ­āĻž āĻ­āĻžāĻ°ā§āϚ⧁āϝāĻŧāĻžāϞ āĻŽā§‡āĻļāĻŋāύ⧇ (JVM) āĻĒā§āϰāĻŽāĻŋāĻĨāĻŋāωāϏ āϰāĻĒā§āϤāĻžāύāĻŋāĻ•āĻžāϰāĻ• āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰāĻž āϝāĻžāϝāĻŧāĨ¤

āĻ—ā§‹āϞ

āφāϏ⧁āύ āĻ•āϝāĻŧ⧇āĻ•āϟāĻŋ āĻ•ā§āώ⧇āĻ¤ā§āϰ āĻĻ⧇āĻ–āĻŋ āϝ⧇āĻ–āĻžāύ⧇ āφāĻŽāϰāĻž āĻ•āĻžāĻŽā§āĻ¨ā§āĻĄāĻž āĻŦāĻŋāĻĒāĻŋāĻāĻŽ āĻĄāĻ•āĻžāϰ āχāĻŽā§‡āϜāϟāĻŋ āĻ•āĻžāĻ¸ā§āϟāĻŽāĻžāχāϜ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋ (GitHub) āϝāĻžāϤ⧇ āĻāϟāĻŋ āϕ⧁āĻŦāĻžāϰāύ⧇āϟāϏ⧇āϰ āϏāĻžāĻĨ⧇ āĻ­āĻžāϞāĻ­āĻžāĻŦ⧇ āϝ⧋āĻ—āĻžāϝ⧋āĻ— āĻ•āϰ⧇āĨ¤

  1. āϞāĻ— āĻāĻŦāĻ‚ āĻŽā§‡āĻŸā§āϰāĻŋāĻ•ā§āϏ;
  2. āĻĄāĻžāϟāĻžāĻŦ⧇āϏ āϏāĻ‚āϝ⧋āĻ—;
  3. āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ;
  4. āϏ⧇āĻļāύ āĻĒāϰāĻŋāϚāĻžāϞāύāĻžāĨ¤

āφāĻŽāϰāĻž āĻāχ āϞāĻ•ā§āĻˇā§āϝāϗ⧁āϞāĻŋ āĻ…āĻ°ā§āϜāύ⧇āϰ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āωāĻĒāĻžāϝāĻŧ āĻĻ⧇āĻ–āĻŦ āĻāĻŦāĻ‚ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻžāϟāĻŋ āĻ¸ā§āĻĒāĻˇā§āϟāĻ­āĻžāĻŦ⧇ āĻĻ⧇āĻ–āĻžāĻŦāĨ¤

āĻŽāĻ¨ā§āϤāĻŦā§āϝ: āφāĻĒāύāĻŋ āĻ•āĻŋ āĻāĻ¨ā§āϟāĻžāϰāĻĒā§āϰāĻžāχāϜ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϛ⧇āύ? āĻĻ⧇āϖ⧁āύ āĻāĻ–āĻžāύ⧇ āĻāĻŦāĻ‚ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻ…āύ⧁āϝāĻžāϝāĻŧā§€ āχāĻŽā§‡āϜ āϞāĻŋāĻ™ā§āĻ• āφāĻĒāĻĄā§‡āϟ āĻ•āϰ⧁āύāĨ¤

āĻ•āĻ°ā§āĻŽāĻĒā§āϰāĻŦāĻžāĻš āωāĻ¨ā§āύāϝāĻŧāύ

āĻāχ āĻĄā§‡āĻŽā§‹āϤ⧇, āφāĻŽāϰāĻž Google āĻ•ā§āϞāĻžāωāĻĄ āĻŦāĻŋāĻ˛ā§āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻĄāĻ•āĻžāϰ āχāĻŽā§‡āϜ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ Skaffold āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŦāĨ¤ āĻāϟāĻŋāϤ⧇ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āϏāϰāĻžā§āϜāĻžāĻŽ (āϝ⧇āĻŽāύ āϕ⧁āĻ¸ā§āϟāĻŽāĻžāχāϜ āĻāĻŦāĻ‚ āĻšā§‡āϞāĻŽ), āϏāĻŋāφāχ āĻāĻŦāĻ‚ āĻŦāĻŋāĻ˛ā§āĻĄ āϏāϰāĻžā§āϜāĻžāĻŽ āĻāĻŦāĻ‚ āĻ…āĻŦāĻ•āĻžāĻ āĻžāĻŽā§‹ āϏāϰāĻŦāϰāĻžāĻšāĻ•āĻžāϰ⧀āĻĻ⧇āϰ āϜāĻ¨ā§āϝ āĻ­āĻžāϞ āϏāĻŽāĻ°ā§āĻĨāύ āϰāϝāĻŧ⧇āϛ⧇āĨ¤ āĻĢāĻžāχāϞ skaffold.yaml.tmpl Google āĻ•ā§āϞāĻžāωāĻĄ āĻŦāĻŋāĻ˛ā§āĻĄ āĻāĻŦāĻ‚ GKE-āĻāϰ āϏ⧇āϟāĻŋāĻ‚āϏ āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤ āĻ•āϰ⧇, āĻĒā§āϰ⧋āĻĄāĻžāĻ•āĻļāύ-āĻ—ā§āϰ⧇āĻĄ āĻ…āĻŦāĻ•āĻžāĻ āĻžāĻŽā§‹ āϚāĻžāϞāĻžāύ⧋āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āϖ⧁āĻŦ āϏāĻšāϜ āωāĻĒāĻžāϝāĻŧ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇āĨ¤

make skaffold āĻ•ā§āϞāĻžāωāĻĄ āĻŦāĻŋāĻ˛ā§āĻĄā§‡ āĻĄāĻ•āĻžāϰāĻĢāĻžāχāϞ āĻĒā§āϰāϏāĻ™ā§āĻ— āϞ⧋āĻĄ āĻ•āϰāĻŦ⧇, āĻ›āĻŦāĻŋ āϤ⧈āϰāĻŋ āĻ•āϰāĻŦ⧇ āĻāĻŦāĻ‚ GCR-āϤ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāĻŦ⧇ āĻāĻŦāĻ‚ āϤāĻžāϰāĻĒāϰ āφāĻĒāύāĻžāϰ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ⧇ āĻŽā§āϝāĻžāύāĻŋāĻĢ⧇āĻ¸ā§āϟāϗ⧁āϞāĻŋ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰāĻŦ⧇āĨ¤ āĻāϟāĻž āĻāϟāĻž āĻ•āĻŋ make skaffold, āĻ•āĻŋāĻ¨ā§āϤ⧁ Skaffold āĻāϰ āφāϰāĻ“ āĻ…āύ⧇āĻ• āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

Kubernetes-āĻ yaml āĻŸā§‡āĻŽāĻĒā§āϞ⧇āϟāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ, āφāĻŽāϰāĻž āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻŽā§āϝāĻžāύāĻŋāĻĢ⧇āĻ¸ā§āϟāϕ⧇ āĻ•āĻžāρāϟāĻž āĻ›āĻžāĻĄāĻŧāĻžāχ yaml āĻ“āĻ­āĻžāϰāϞ⧇āϗ⧁āϞāĻŋ āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻ•āϰāϤ⧇ kustomize āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŋ, āϝāĻž āφāĻĒāύāĻžāϕ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āϝāĻŧ git pull --rebase āφāϰāĻ“ āωāĻ¨ā§āύāϤāĻŋāϰ āϜāĻ¨ā§āϝāĨ¤ āĻāĻ–āύ āĻāϟāĻŋ āϕ⧁āĻŦ⧇āĻ•ā§āĻŸā§‡āϞ⧇ āϰāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ āĻāϟāĻŋ āĻāχ āϜāĻžāϤ⧀āϝāĻŧ āϜāĻŋāύāĻŋāϏāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āĻŦ⧇āĻļ āĻ­āĻžāϞ āĻ•āĻžāϜ āĻ•āϰ⧇āĨ¤

āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“ āφāĻŽāϰāĻž *.yaml.tmpl āĻĢāĻžāχāϞāϗ⧁āϞāĻŋāϤ⧇ āĻšā§‹āĻ¸ā§āϟāύ⧇āĻŽ āĻāĻŦāĻ‚ GCP āĻĒā§āϰ⧋āĻœā§‡āĻ•ā§āϟ āφāχāĻĄāĻŋ āĻĒā§‚āϰāĻŖ āĻ•āϰāϤ⧇ envsubst āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŋāĨ¤ āφāĻĒāύāĻŋ āĻāϟāĻŋ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāϰ⧇āύ makefile āĻŦāĻž āĻļ⧁āϧ⧁ āφāϰāĻ“ āϚāĻžāϞāĻŋāϝāĻŧ⧇ āϝāĻžāύāĨ¤

āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧ āĻļāĻ°ā§āϤāĻžāĻĻāĻŋ

āĻŽā§āϝāĻžāύāĻŋāĻĢ⧇āĻ¸ā§āϟ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻ“āϝāĻŧāĻžāĻ°ā§āĻ•āĻĢā§āϞ⧋

āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻ•āĻžāĻ¸ā§āĻŸā§‹āĻŽāĻžāχāϜ āĻŦāĻž āĻ¸ā§āĻ•ā§āϝāĻžāĻĢā§‹āĻ˛ā§āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āύāĻž āϚāĻžāύ āϤāĻŦ⧇ āφāĻĒāύāĻŋ āĻāϰ āĻŽā§āϝāĻžāύāĻŋāĻĢ⧇āĻ¸ā§āϟāϗ⧁āϞāĻŋ āωāĻ˛ā§āϞ⧇āĻ– āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ generated-manifest.yaml āĻāĻŦāĻ‚ āφāĻĒāύāĻžāϰ āĻĒāĻ›āĻ¨ā§āĻĻ⧇āϰ āĻ•āĻ°ā§āĻŽāĻĒā§āϰāĻŦāĻžāĻšā§‡āϰ āϏāĻžāĻĨ⧇ āϤāĻžāĻĻ⧇āϰ āĻŽāĻžāύāĻŋāϝāĻŧ⧇ āύāĻŋāύāĨ¤

āϞāĻ— āĻāĻŦāĻ‚ āĻŽā§‡āĻŸā§āϰāĻŋāĻ•ā§āϏ

āĻĒā§āϰāĻŽāĻŋāĻĨāĻŋāωāϏ āϕ⧁āĻŦāĻžāϰāύ⧇āϟāϏ⧇ āĻŽā§‡āĻŸā§āϰāĻŋāĻ•ā§āϏ āϏāĻ‚āĻ—ā§āϰāĻšā§‡āϰ āϜāĻ¨ā§āϝ āĻŽāĻžāύāĻ• āĻšāϝāĻŧ⧇ āωāϠ⧇āϛ⧇āĨ¤ āĻāϟāĻŋ AWS āĻ•ā§āϞāĻžāωāĻĄāĻ“āϝāĻŧāĻžāϚ āĻŽā§‡āĻŸā§āϰāĻŋāĻ•ā§āϏ, āĻ•ā§āϞāĻžāωāĻĄāĻ“āϝāĻŧāĻžāϚ āĻ…ā§āϝāĻžāϞāĻžāĻ°ā§āϟāϏ, āĻ¸ā§āĻŸā§āϝāĻžāĻ•āĻĄā§āϰāĻžāχāĻ­āĻžāϰ āĻŽā§‡āĻŸā§āϰāĻŋāĻ•ā§āϏ, āĻ¸ā§āĻŸā§āϝāĻžāϟāϏāĻĄāĻŋ, āĻĄā§‡āϟāĻžāĻĄāĻ—, āύāĻžāĻ—āĻŋāĻ“āϏ, āĻ­āĻŋāĻ¸ā§āĻĒāĻŋāϝāĻŧāĻžāϰ āĻŽā§‡āĻŸā§āϰāĻŋāĻ•ā§āϏ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝāϗ⧁āϞāĻŋāϰ āĻŽāϤ⧋ āĻāĻ•āχ āĻ¸ā§āĻĨāĻžāύ āĻĻāĻ–āϞ āĻ•āϰ⧇āĨ¤ āĻāϟāĻŋ āĻ“āĻĒ⧇āύ āϏ⧋āĻ°ā§āϏ āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ āĻļāĻ•ā§āϤāĻŋāĻļāĻžāϞ⧀ āĻ•ā§āϝ⧋āϝāĻŧāĻžāϰ⧀ āĻ­āĻžāώāĻž āϰāϝāĻŧ⧇āϛ⧇āĨ¤ āφāĻŽāϰāĻž āĻ­āĻŋāĻœā§āϝ⧁āϝāĻŧāĻžāϞāĻžāχāĻœā§‡āĻļāύāϟāĻŋ Grafana-āϕ⧇ āĻ…āĻ°ā§āĻĒāĻŖ āĻ•āϰāĻŦ - āĻāϟāĻŋ āĻŦāĻžāĻ•ā§āϏ⧇āϰ āĻŦāĻžāχāϰ⧇ āĻĒā§āϰāϚ⧁āϰ āϏāĻ‚āĻ–ā§āϝāĻ• āĻĄā§āϝāĻžāĻļāĻŦā§‹āĻ°ā§āĻĄā§‡āϰ āϏāĻžāĻĨ⧇ āφāϏ⧇āĨ¤ āϤāĻžāϰāĻž āĻāϕ⧇ āĻ…āĻĒāϰ⧇āϰ āϏāĻžāĻĨ⧇ āϏāĻ‚āϝ⧁āĻ•ā§āϤ āĻāĻŦāĻ‚ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž āϤ⧁āϞāύāĻžāĻŽā§‚āϞāĻ•āĻ­āĻžāĻŦ⧇ āϏāĻšāϜ āĻĒā§āϰāĻŽāĻŋāĻĨāĻŋāωāϏ-āĻ…āĻĒāĻžāϰ⧇āϟāϰ.

āĻĄāĻŋāĻĢāĻ˛ā§āϟāϰ⧂āĻĒ⧇, āĻĒā§āϰāĻŽāĻŋāĻĨāĻŋāωāϏ āύāĻŋāĻˇā§āĻ•āĻžāĻļāύ āĻŽāĻĄā§‡āϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ <service>/metrics, āĻāĻŦāĻ‚ āĻāϰ āϜāĻ¨ā§āϝ āϏāĻžāχāĻĄāĻ•āĻžāϰ āĻĒāĻžāĻ¤ā§āϰ⧇ āϝ⧋āĻ— āĻ•āϰāĻž āϏāĻžāϧāĻžāϰāĻŖāĨ¤ āĻĻ⧁āĻ°ā§āĻ­āĻžāĻ—ā§āϝāĻŦāĻļāϤ, JMX āĻŽā§‡āĻŸā§āϰāĻŋāĻ•āϗ⧁āϞāĻŋ JVM-āĻāϰ āĻŽāĻ§ā§āϝ⧇ āϏāĻ°ā§āĻŦā§‹āĻ¤ā§āϤāĻŽāĻ­āĻžāĻŦ⧇ āϞāĻ— āĻ•āϰāĻž āĻšāϝāĻŧ, āϤāĻžāχ āϏāĻžāχāĻĄāĻ•āĻžāϰ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰāϗ⧁āϞāĻŋ āϤāϤāϟāĻž āĻĻāĻ•ā§āώ āύāϝāĻŧ⧎ āĻāϰ āϏāĻžāĻĨ⧇ āϏāĻ‚āϝ⧋āĻ— āĻĻāĻŋāύ jmx_exporter āĻĒā§āϰāĻŽāĻŋāĻĨāĻŋāωāϏ āĻĨ⧇āϕ⧇ JVM-āĻ āĻ“āĻĒ⧇āύ āϏ⧋āĻ°ā§āϏ āϧāĻžāϰāĻ• āϚāĻŋāĻ¤ā§āϰ⧇ āϝ⧋āĻ— āĻ•āϰ⧇ āϝāĻž āĻĒāĻĨ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰāĻŦ⧇ /metrics āĻāĻ•āϟāĻŋ āĻ­āĻŋāĻ¨ā§āύ āĻĒā§‹āĻ°ā§āĻŸā§‡āĨ¤

āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇ Prometheus jmx_exporter āϝ⧋āĻ— āĻ•āϰ⧁āύ

-- images/camunda-bpm/Dockerfile
FROM camunda/camunda-bpm-platform:tomcat-7.11.0

## āĻĒā§āϰāĻŽāĻŋāĻĨāĻŋāωāϏ āĻāĻ•ā§āϏāĻĒā§‹āĻ°ā§āϟāĻžāϰ āϝ⧋āĻ— āĻ•āϰ⧁āύ
āϰāĻžāύ āωāχāĻœā§‡āϟ https://repo1.maven.org/maven2/io/prometheus/jmx/
jmx_prometheus_javaagent/0.11.0/jmx_prometheus_javaagent-0.11.0.jar -P lib/
#9404 āĻšāϞ āϏāĻ‚āϰāĻ•ā§āώāĻŋāϤ āĻĒā§āϰāĻŽāĻŋāĻĨāĻŋāωāϏ-āĻœā§‡āĻāĻŽāĻāĻ•ā§āϏ āĻĒā§‹āĻ°ā§āϟ
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-āĻ āϚāϞāϤ⧇ āĻĒāĻžāϰ⧇ āĻāĻŽāύ āĻ…āύ⧇āĻ•āϗ⧁āϞāĻŋ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āϜāĻŋāύāĻŋāϏ āϰāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ āϟāĻŽāĻ•ā§āϝāĻžāϟ āϤāĻžāĻĻ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āĻāĻ•āϟāĻŋ, āϤāĻžāχ āϰāĻĒā§āϤāĻžāύāĻŋāĻ•āĻžāϰāϕ⧇āϰ āĻ•āĻŋāϛ⧁ āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻĒā§āϰāϝāĻŧā§‹āϜāύāĨ¤ āϟāĻŽāĻ•ā§āϝāĻžāϟ, āĻ“āϝāĻŧāĻžāχāĻ˛ā§āĻĄāĻĢā§āϞāĻžāχ, āĻ•āĻžāĻĢāĻ•āĻž āχāĻ¤ā§āϝāĻžāĻĻāĻŋāϰ āϜāĻ¨ā§āϝ āĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āωāĻĒāϞāĻŦā§āϧ āĻāĻ–āĻžāύ⧇. āφāĻŽāϰāĻž āϟāĻŽāĻ•ā§āϝāĻžāϟ āĻšāĻŋāϏāĻžāĻŦ⧇ āϝ⧋āĻ— āĻ•āϰāĻŦ āĻ•āύāĻĢāĻŋāĻ—āĻŽā§āϝāĻžāĻĒ Kubernetes āĻāĻŦāĻ‚ āϤāĻžāϰāĻĒāϰ āĻāĻ•āϟāĻŋ āĻ­āϞāĻŋāωāĻŽ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻŽāĻžāωāĻ¨ā§āϟ.

āĻĒā§āϰāĻĨāĻŽāϤ, āφāĻŽāϰāĻž āφāĻŽāĻžāĻĻ⧇āϰ āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽ/āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ/ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋāϤ⧇ āϰāĻĒā§āϤāĻžāύāĻŋāĻ•āĻžāϰāĻ• āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻĢāĻžāχāϞ āϝ⧋āĻ— āĻ•āϰāĻŋ

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, āĻ…āĻĒāĻžāϰ⧇āϟāϰ āύāĻ•āĻļāĻž и āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āĻŽāύāĻŋāϟāϰ āĻ¸ā§āĻĒ⧇āĻ• āĻļ⧁āϰ⧁ āĻ•āϰāĻžāϰ āφāϗ⧇.

āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻāχ āĻĒā§āϝāĻžāϟāĻžāĻ°ā§āύ āĻĒā§āϰāϏāĻžāϰāĻŋāϤ

ConfigMapGenerator-āĻ āφāĻŽāϰāĻž āϝ⧇ āϏāĻŽāĻ¸ā§āϤ āĻĢāĻžāχāϞ āϝ⧋āĻ— āĻ•āϰāĻŋ āϤāĻž āύāϤ⧁āύ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋāϤ⧇ āĻĒāĻžāĻ“āϝāĻŧāĻž āϝāĻžāĻŦ⧇ /etc/config. āφāĻĒāύāĻžāϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧ āĻ…āĻ¨ā§āϝ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻĢāĻžāχāϞ āĻŽāĻžāωāĻ¨ā§āϟ āĻ•āϰāϤ⧇ āφāĻĒāύāĻŋ āĻāχ āĻŸā§‡āĻŽāĻĒā§āϞ⧇āϟāϟāĻŋ āĻĒā§āϰāϏāĻžāϰāĻŋāϤ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ āĻāĻŽāύāĻ•āĻŋ āφāĻĒāύāĻŋ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āĻ¸ā§āϟāĻžāĻ°ā§āϟāφāĻĒ āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ āĻŽāĻžāωāĻ¨ā§āϟ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ āϤ⧁āĻŽāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ āωāĻĒāĻĒāĻĨ āĻĒ⧃āĻĨāĻ• āĻĢāĻžāχāϞ āĻŽāĻžāωāĻ¨ā§āϟ āĻ•āϰāϤ⧇āĨ¤ xml āĻĢāĻžāχāϞ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāϤ⧇, āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰ⧁āύ xmlstarlet āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ sed. āĻāϟāĻŋ āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇ āχāĻŽā§‡āϜ āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇.

āĻĒāĻ¤ā§āϰāĻŋāĻ•āĻž

āĻŦāĻĄāĻŧ āĻ–āĻŦāϰ! āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϞāĻ—āϗ⧁āϞāĻŋ āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇āχ stdout-āĻ āωāĻĒāϞāĻŦā§āϧ, āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ āĻāϰ āϏāĻžāĻĨ⧇ kubectl logs. Fluentd (GKE āϤ⧇ āĻĄāĻŋāĻĢāĻ˛ā§āϟāĻ­āĻžāĻŦ⧇ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž) āφāĻĒāύāĻžāϰ āϞāĻ—āϗ⧁āϞāĻŋāϕ⧇ āχāϞāĻžāĻ¸ā§āϟāĻŋāĻ•āϏāĻžāĻ°ā§āϚ, āϞ⧋āĻ•āĻŋ āĻŦāĻž āφāĻĒāύāĻžāϰ āĻāĻ¨ā§āϟāĻžāϰāĻĒā§āϰāĻžāχāϜ āϞāĻ—āĻŋāĻ‚ āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽā§‡ āĻĢāϰ⧋āϝāĻŧāĻžāĻ°ā§āĻĄ āĻ•āϰāĻŦ⧇āĨ¤ āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āϞāĻ—āϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ jsonify āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āϚāĻžāύ āϤāĻŦ⧇ āφāĻĒāύāĻŋ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāϤ⧇ āωāĻĒāϰ⧇āϰ āĻŸā§‡āĻŽāĻĒā§āϞ⧇āϟāϟāĻŋ āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ āϞāĻ—āĻŦā§āϝāĻžāĻ•.

āĻĄāĻžāϟāĻžāĻŦ⧇āϏ⧇āϰ

āĻĄāĻŋāĻĢāĻ˛ā§āϟāϰ⧂āĻĒ⧇, āĻ›āĻŦāĻŋāϤ⧇ āĻāĻ•āϟāĻŋ H2 āĻĄāĻžāϟāĻžāĻŦ⧇āϏ āĻĨāĻžāĻ•āĻŦ⧇āĨ¤ āĻāϟāĻŋ āφāĻŽāĻžāĻĻ⧇āϰ āϜāĻ¨ā§āϝ āωāĻĒāϝ⧁āĻ•ā§āϤ āύāϝāĻŧ āĻāĻŦāĻ‚ āφāĻŽāϰāĻž āĻ•ā§āϞāĻžāωāĻĄ āĻāϏāĻ•āĻŋāωāĻāϞ āĻĒā§āϰāĻ•ā§āϏāĻŋ āϏāĻš Google āĻ•ā§āϞāĻžāωāĻĄ 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-āĻ āχāύāĻœā§‡āĻ•āĻļāύ āĻ•āϰāĻž - āĻŽāϜāĻŋāϞāĻžāĻāϏāĻ“āĻĒāĻŋāĻāϏ - Kustomize āĻ—ā§‹āĻĒāύ āϏāĻ™ā§āϗ⧇ āϏāĻŽāĻ¨ā§āĻŦāϝāĻŧ āϖ⧁āĻŦ āĻ­āĻžāϞ āĻ•āĻžāϜ āĻ•āϰāĻŦ⧇. āĻĄāϟāϜāĻŋāĻĒāĻŋāϜāĻŋāϰ āĻŽāϤ⧋ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āϏāϰāĻžā§āϜāĻžāĻŽ āϰāϝāĻŧ⧇āϛ⧇ āϝāĻž āĻ…āύ⧁āϰ⧂āĻĒ āĻ•āĻžāĻ°ā§āϝ āϏāĻŽā§āĻĒāĻžāĻĻāύ āĻ•āϰ⧇: āĻšāĻžāĻļāĻŋāĻ•āĻ°ā§āĻĒ āĻ­āĻ˛ā§āϟ, āϏāĻŋāĻ•ā§āϰ⧇āϟ āĻ­ā§āϝāĻžāϞ⧁ āĻĒā§āϞāĻžāĻ—āχāύ āĻ•āĻžāĻ¸ā§āϟāĻŽāĻžāχāϜ āĻ•āϰ⧁āύ.

āĻĒā§āϰāĻŦ⧇āĻļ

āϝāĻĻāĻŋ āύāĻž āφāĻĒāύāĻŋ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧ āĻĒā§‹āĻ°ā§āϟ āĻĢāϰāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄāĻŋāĻ‚ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āϚāĻžāύ, āφāĻĒāύāĻžāϰ āĻāĻ•āϟāĻŋ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāĻž āχāύāĻ—ā§āϰ⧇āϏ āĻ•āĻ¨ā§āĻŸā§āϰ⧋āϞāĻžāϰ⧇āϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻšāĻŦ⧇āĨ¤ āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āύāĻž āĻ•āϰ⧇āύ ingress-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

āϟāĻŽāĻ•ā§āϝāĻžāϟ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖāϰ⧂āĻĒ⧇ āĻĒā§āϰāĻ¸ā§āϤ⧁āϤ āύāĻž āĻšāĻ“āϝāĻŧāĻž āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āĻ•āϝāĻŧ⧇āĻ• āĻŽāĻŋāύāĻŋāϟ āĻ…āĻĒ⧇āĻ•ā§āώāĻž āĻ•āϰ⧁āύāĨ¤ āϏāĻžāĻ°ā§āϟāĻŋ-āĻŽā§āϝāĻžāύ⧇āϜāĻžāϰ āĻĄā§‹āĻŽā§‡āύ āύāĻžāĻŽ āϝāĻžāϚāĻžāχ āĻ•āϰāϤ⧇ āĻ•āĻŋāϛ⧁ āϏāĻŽāϝāĻŧ āύ⧇āĻŦ⧇āĨ¤ āϤāĻžāϰāĻĒāϰ⧇ āφāĻĒāύāĻŋ āωāĻĒāϞāĻŦā§āϧ āϏāϰāĻžā§āϜāĻžāĻŽāϗ⧁āϞāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϞāĻ—āϗ⧁āϞāĻŋ āύāĻŋāϰ⧀āĻ•ā§āώāĻŖ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ āϝ⧇āĻŽāύ kubetail āĻāϰ āĻŽāϤ⧋ āĻāĻ•āϟāĻŋ āϏāϰāĻžā§āϜāĻžāĻŽ, āĻŦāĻž āϕ⧇āĻŦāϞ kubectl āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇:

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

āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āĻĒāĻĻāĻ•ā§āώ⧇āĻĒ

āĻ…āύ⧁āĻŽā§‹āĻĻāύ

āĻāϟāĻŋ Kubernetes-āĻāϰ āϤ⧁āϞāύāĻžāϝāĻŧ Camunda BPM āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āφāϰāĻ“ āĻĒā§āϰāĻžāϏāĻ™ā§āĻ—āĻŋāĻ•, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻāϟāĻž āĻŽāύ⧇ āϰāĻžāĻ–āĻž āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āϝ⧇ āĻĄāĻŋāĻĢāĻ˛ā§āϟāϰ⧂āĻĒ⧇, REST API-āĻ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ āĻ…āĻ•ā§āώāĻŽ āĻ•āϰāĻž āφāϛ⧇āĨ¤ āφāĻĒāύāĻŋ āĻĒāĻžāϰ⧇āύ āĻŽā§ŒāϞāĻŋāĻ• āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ āϏāĻ•ā§āώāĻŽ āĻ•āϰ⧁āύ āĻ…āĻĨāĻŦāĻž āĻ…āĻ¨ā§āϝ āĻĒāĻĻā§āϧāϤāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ āϝ⧇āĻŽāύ āĻœā§‡āĻĄāĻžāĻŦā§āϞ⧁āϟāĻŋ. āφāĻĒāύāĻŋ xml āϞ⧋āĻĄ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ configmaps āĻāĻŦāĻ‚ āĻ­āϞāĻŋāωāĻŽ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ, āĻ…āĻĨāĻŦāĻž āχāĻŽā§‡āĻœā§‡ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āĻĢāĻžāχāϞāϗ⧁āϞāĻŋ āϏāĻŽā§āĻĒāĻžāĻĻāύāĻž āĻ•āϰāϤ⧇ xmlstarlet (āωāĻĒāϰ⧇ āĻĻ⧇āϖ⧁āύ) āĻāĻŦāĻ‚ āĻšāϝāĻŧ wget āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ āĻ…āĻĨāĻŦāĻž āĻāĻ•āϟāĻŋ init āϧāĻžāϰāĻ• āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ āĻ­āĻžāĻ— āĻ•āϰāĻž āĻ­āϞāĻŋāωāĻŽ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϞ⧋āĻĄ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤

āϏ⧇āĻļāύ āĻĒāϰāĻŋāϚāĻžāϞāύāĻž

āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āĻ…āύ⧇āĻ• āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ⧇āϰ āĻŽāϤ⧋, āĻ•ā§āϝāĻžāĻŽā§āĻ¨ā§āĻĄāĻž āĻŦāĻŋāĻĒāĻŋāĻāĻŽ 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 '/^ /āφāĻŽāĻŋ
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
āĻŽā§‡āĻŽāĻ•ā§āϝāĻžāϚāĻĄāύ⧋āĻĄāϏ = "āϰ⧇āĻĄāĻŋāϏ://āϰ⧇āĻĄāĻŋāϏ-āĻĒā§āϰāĻ•ā§āϏāĻŋ.āĻĄāĻŋāĻŦāĻŋ:⧍⧍⧧⧍⧧"
āĻ¸ā§āϟāĻŋāĻ•āĻŋ="āĻŽāĻŋāĻĨā§āϝāĻž"
āϏ⧇āĻļāύāĻŦā§āϝāĻžāĻ•āφāĻĒāĻ…ā§āϝāĻžāϏāĻŋāĻ™ā§āĻ•="āĻŽāĻŋāĻĨā§āϝāĻž"
āĻ¸ā§āĻŸā§‹āϰ⧇āϜāĻ•āĻŋāĻĒā§āϰāĻŋāĻĢāĻŋāĻ•ā§āϏ="āĻĒā§āϰāϏāĻ™ā§āĻ—"
āϞāĻ•āĻŽā§‹āĻĄ = "āĻ…āĻŸā§‹"
/>' conf/context.xml

āĻŽāĻ¨ā§āϤāĻŦā§āϝ: āφāĻĒāύāĻŋ sed āĻāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ xmlstarlet āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ

āφāĻŽāϰāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĻ›āĻŋ twemproxy Google āĻ•ā§āϞāĻžāωāĻĄ āĻŽā§‡āĻŽā§‹āϰāĻŋāĻ¸ā§āĻŸā§‹āϰ⧇āϰ āϏāĻžāĻŽāύ⧇, āϏāĻžāĻĨ⧇ memcached-session-manager āĻāϟāĻŋ āϚāĻžāϞāĻžāύ⧋āϰ āϜāĻ¨ā§āϝ (Redis āϏāĻŽāĻ°ā§āĻĨāύ āĻ•āϰ⧇)āĨ¤

āĻ¸ā§āϕ⧇āϞāĻŋāĻ‚

āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇āχ āϏ⧇āĻļāύāϗ⧁āϞāĻŋ āĻŦ⧁āĻāϤ⧇ āĻĒāĻžāϰ⧇āύ, āϤāĻžāĻšāϞ⧇ āĻ•ā§āϝāĻžāĻŽā§āĻ¨ā§āĻĄāĻž āĻŦāĻŋāĻĒāĻŋāĻāĻŽ āĻ¸ā§āϕ⧇āϞāĻŋāĻ‚ āĻ•āϰāĻžāϰ āĻĒā§āϰāĻĨāĻŽ (āĻāĻŦāĻ‚ āĻĒā§āϰāĻžāϝāĻŧāĻļāχ āĻļ⧇āώ) āϏ⧀āĻŽāĻžāĻŦāĻĻā§āϧāϤāĻž āĻĄāĻžāϟāĻžāĻŦ⧇āϏ⧇āϰ āϏāĻžāĻĨ⧇ āϏāĻ‚āϝ⧋āĻ— āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āφāĻ‚āĻļāĻŋāĻ• āĻ•āĻžāĻ¸ā§āϟāĻŽāĻžāχāĻœā§‡āĻļāύ āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇ āωāĻĒāϞāĻŦā§āϧ "āĻŦāĻ•ā§āϏ āĻĨ⧇āϕ⧇" āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“ settings.xml āĻĢāĻžāχāϞ⧇ intialSize āύāĻŋāĻˇā§āĻ•ā§āϰāĻŋāϝāĻŧ āĻ•āϰāĻž āϝāĻžāĻ•āĨ¤ āϝ⧋āĻ— āĻ•āϰ⧁āύ āĻ…āύ⧁āĻ­ā§‚āĻŽāĻŋāĻ• āĻĒāĻĄ āĻ…āĻŸā§‹āĻ¸ā§āϕ⧇āϞāĻžāϰ (HPA) āĻāĻŦāĻ‚ āφāĻĒāύāĻŋ āϏāĻšāĻœā§‡āχ āĻĒāĻĄā§‡āϰ āϏāĻ‚āĻ–ā§āϝāĻž āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧāĻ­āĻžāĻŦ⧇ āĻ¸ā§āϕ⧇āϞ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤

āĻ…āύ⧁āϰ⧋āϧ āĻāĻŦāĻ‚ āϏ⧀āĻŽāĻžāĻŦāĻĻā§āϧāϤāĻž

В platform/deployment.yaml āφāĻĒāύāĻŋ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāĻŦ⧇āύ āϝ⧇ āφāĻŽāϰāĻž āϏāĻŽā§āĻĒāĻĻ āĻ•ā§āώ⧇āĻ¤ā§āϰ āĻšāĻžāĻ°ā§āĻĄ āϕ⧋āĻĄ āĻ•āϰ⧇āĻ›āĻŋ. āĻāϟāĻŋ HPA āĻāϰ āϏāĻžāĻĨ⧇ āĻ­āĻžāϞ āĻ•āĻžāϜ āĻ•āϰ⧇ āϤāĻŦ⧇ āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ⧇āϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ kustomize āĻĒā§āϝāĻžāϚ āĻāχ āϜāĻ¨ā§āϝ āωāĻĒāϝ⧁āĻ•ā§āϤ. āϏ⧇āĻŽāĻŋ. ingress-patch.yaml.tmpl и ./kustomization.yaml.tmpl

āωāĻĒāϏāĻ‚āĻšāĻžāϰ

āϤāĻžāχ āφāĻŽāϰāĻž Prometheus āĻŽā§‡āĻŸā§āϰāĻŋāĻ•ā§āϏ, āϞāĻ—, H2 āĻĄāĻžāϟāĻžāĻŦ⧇āϏ, TLS āĻāĻŦāĻ‚ Ingress āϏāĻš Kubernetes-āĻ Camunda BPM āχāύāĻ¸ā§āϟāϞ āĻ•āϰ⧇āĻ›āĻŋāĨ¤ āφāĻŽāϰāĻž ConfigMaps āĻāĻŦāĻ‚ Dockerfile āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϜāĻžāϰ āĻĢāĻžāχāϞ āĻāĻŦāĻ‚ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻĢāĻžāχāϞ āϝ⧋āĻ— āĻ•āϰ⧇āĻ›āĻŋāĨ¤ āφāĻŽāϰāĻž āĻ—ā§‹āĻĒāύ⧀āϝāĻŧāϤāĻž āĻĨ⧇āϕ⧇ āĻ­āϞāĻŋāωāĻŽ āĻāĻŦāĻ‚ āϏāϰāĻžāϏāϰāĻŋ āĻĒāϰāĻŋāĻŦ⧇āĻļ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ⧇ āĻĄā§‡āϟāĻž āĻŦāĻŋāύāĻŋāĻŽāϝāĻŧ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻ•āĻĨāĻž āĻŦāϞ⧇āĻ›āĻŋāĨ¤ āωāĻĒāϰāĻ¨ā§āϤ⧁, āφāĻŽāϰāĻž āĻāĻ•āĻžāϧāĻŋāĻ• āĻĒā§āϰāϤāĻŋāϞāĻŋāĻĒāĻŋ āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•ā§ƒāϤ 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