Kubernetes рд╡рд░ Camunda BPM рдЪрд╛рд▓рд╡рдгреЗ

Kubernetes рд╡рд░ Camunda BPM рдЪрд╛рд▓рд╡рдгреЗ

рддреБрдореНрд╣реА Kubernetes рд╡рд╛рдкрд░рдд рдЖрд╣рд╛рдд? рддреБрдордЪреА Camunda BPM рдЙрджрд╛рд╣рд░рдгреЗ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрдирдЪреНрдпрд╛ рдмрд╛рд╣реЗрд░ рд╣рд▓рд╡рдгреНрдпрд╛рд╕ рддрдпрд╛рд░ рдЖрд╣рд╛рдд, рдХрд┐рдВрд╡рд╛ рдХрджрд╛рдЪрд┐рдд рддреНрдпрд╛рдВрдирд╛ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рд╡рд░ рдЪрд╛рд▓рд╡рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рд╛? рдЪрд▓рд╛ рдХрд╛рд╣реА рд╕рд╛рдорд╛рдиреНрдп рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдиреНрд╕ рдЖрдгрд┐ рд╡реИрдпрдХреНрддрд┐рдХ рдЖрдпрдЯрдо рдкрд╛рд╣реВ рдЬреНрдпрд╛ рдЖрдкрд▓реНрдпрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЧрд░рдЬреЗрдиреБрд╕рд╛рд░ рддрдпрд╛рд░ рдХреЗрд▓реНрдпрд╛ рдЬрд╛рдК рд╢рдХрддрд╛рдд.

рд╣реЗ рдЧреГрд╣реАрдд рдзрд░рддреЗ рдХреА рддреБрдореНрд╣реА рдпрд╛рдЖрдзреА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рд╡рд╛рдкрд░рд▓реЗ рдЖрд╣реЗрдд. рдирд╕реЗрд▓ рддрд░ рдХрд╛ рдмрдШреВ рдирдпреЗ рдиреЗрддреГрддреНрд╡ рдЖрдгрд┐ рддреБрдордЪрд╛ рдкрд╣рд┐рд▓рд╛ рдХреНрд▓рд╕реНрдЯрд░ рд╕реБрд░реВ рдХрд░реВ рдирдХрд╛?

рд▓реЗрдЦрдХ

  • рдЕреЕрд▓рд┐рд╕реНрдЯрд░ рдлрд░реНрде (рдЕреЕрд▓рд┐рд╕реНрдЯрд░ рдлрд░реНрде) - рдХреЕрдореБрдВрдбрд╛ рдХреНрд▓рд╛рдЙрдб рдЯреАрдорд╡рд░реАрд▓ рд╡рд░рд┐рд╖реНрда рд╕рд╛рдЗрдЯ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдЕрднрд┐рдпрдВрддрд╛;
  • рд▓рд╛рд░реНрд╕ рд▓рдБрдЧреЗ (рд▓рд╛рд░реНрд╕ рд▓рдБрдЧреЗ) - рдХреЕрдореБрдВрдбрд╛ рдпреЗрдереЗ DevOps рдЕрднрд┐рдпрдВрддрд╛.

рдереЛрдбрдХреНрдпрд╛рдд:

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

рдареАрдХ рдЖрд╣реЗ, рддреБрдордЪреНрдпрд╛рдХрдбреЗ рд╕реНрдХрд╛рдлреЛрд▓реНрдб рдЖрдгрд┐ рдХрд╕реНрдЯрдорд╛рдЗрдЭ рдЗрдиреНрд╕реНрдЯреЙрд▓ рдирд╕рд▓реНрдпрд╛рдореБрд│реЗ рдХрджрд╛рдЪрд┐рдд рддреЗ рдХрд╛рдо рдХрд░рдд рдирд╕реЗрд▓. рдмрд░рдВ рдордЧ рд╡рд╛рдЪрд╛!

рдХреЕрдореБрдВрдбрд╛ рдмреАрдкреАрдПрдо рдореНрд╣рдгрдЬреЗ рдХрд╛рдп?

Camunda BPM рд╣реЗ рдПрдХ рдореБрдХреНрдд рд╕реНрд░реЛрдд рд╡реНрдпрд╡рд╕рд╛рдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЖрдгрд┐ рдирд┐рд░реНрдгрдп рдСрдЯреЛрдореЗрд╢рди рдкреНрд▓реЕрдЯрдлреЙрд░реНрдо рдЖрд╣реЗ рдЬреЗ рд╡реНрдпрд╡рд╕рд╛рдп рд╡рд╛рдкрд░рдХрд░реНрддреЗ рдЖрдгрд┐ рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рдбреЗрд╡реНрд╣рд▓рдкрд░ рдпрд╛рдВрдирд╛ рдЬреЛрдбрддреЗ. рд▓реЛрдХ, (рдорд╛рдпрдХреНрд░реЛ) рд╕реЗрд╡рд╛ рдХрд┐рдВрд╡рд╛ рдЕрдЧрджреА рдмреЙрдЯреНрд╕рдордзреНрдпреЗ рд╕рдордиреНрд╡рдп рд╕рд╛рдзрдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рддреНрдпрд╛рдВрдирд╛ рдЬреЛрдбрдгреНрдпрд╛рд╕рд╛рдареА рд╣реЗ рдЖрджрд░реНрд╢ рдЖрд╣реЗ! рдЖрдкрдг рдпреЗрдереЗ рд╡рд┐рд╡рд┐рдз рд╡рд╛рдкрд░ рдкреНрд░рдХрд░рдгрд╛рдВрдмрджреНрджрд▓ рдЕрдзрд┐рдХ рд╡рд╛рдЪреВ рд╢рдХрддрд╛ рджреБрд╡рд╛.

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХрд╛ рд╡рд╛рдкрд░рд╛рд╡реЗ

рд▓рд┐рдирдХреНрд╕рд╡рд░ рдЖрдзреБрдирд┐рдХ рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕ рдЪрд╛рд▓рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рд╣реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдорд╛рдирдХ рдмрдирд▓реЗ рдЖрд╣реЗ. рд╣рд╛рд░реНрдбрд╡реЗрдЕрд░ рдЗрдореНрдпреБрд▓реЗрд╢рдирдРрд╡рдЬреА рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рд╡рд╛рдкрд░реВрди рдЖрдгрд┐ рдХрд░реНрдирд▓рдЪреА рдореЗрдорд░реА рдЖрдгрд┐ рдЯрд╛рд╕реНрдХ рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛, рдмреВрдЯ рд╡реЗрд│ рдЖрдгрд┐ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╡реЗрд│ рдХрдореАрддрдХрдореА рдареЗрд╡рд▓реА рдЬрд╛рддреЗ. рддрдерд╛рдкрд┐, рд╕рд░реНрд╡ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдВрд╕рд╛рдареА рдЖрд╡рд╢реНрдпрдХ рдкрд╛рдпрд╛рднреВрдд рд╕реБрд╡рд┐рдзрд╛ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА Kubernetes рдкреНрд░рджрд╛рди рдХреЗрд▓реЗрд▓реНрдпрд╛ рдорд╛рдирдХ API рдордзреВрди рд╕рд░реНрд╡рд╛рдд рдореЛрдард╛ рдлрд╛рдпрджрд╛ рд╣реЛрдК рд╢рдХрддреЛ: рд╕реНрдЯреЛрд░реЗрдЬ, рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рдЖрдгрд┐ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ. рддреЛ рдЬреВрди 2020 рдордзреНрдпреЗ 6 рд╡рд░реНрд╖рд╛рдВрдЪрд╛ рдЭрд╛рд▓рд╛ рдЖрдгрд┐ рдХрджрд╛рдЪрд┐рдд (Linux рдирдВрддрд░) рджреБрд╕рд░рд╛ рд╕рд░реНрд╡рд╛рдд рдореЛрдард╛ рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░рдХрд▓реНрдк рдЖрд╣реЗ. рдЬрдЧрднрд░рд╛рддреАрд▓ рдЙрддреНрдкрд╛рджрди рд╡рд░реНрдХрд▓реЛрдбреНрд╕рд╕рд╛рдареА рддреЗ рдЧрдВрднреАрд░ рдмрдирд▓реНрдпрд╛рдореБрд│реЗ рдЧреЗрд▓реНрдпрд╛ рдХрд╛рд╣реА рд╡рд░реНрд╖рд╛рдВрдд рдЬрд▓рдж рдкреБрдирд░рд╛рд╡реГрддреНрддреАрдирдВрддрд░ рддреЗ рдЕрд▓реАрдХрдбреЗ рд╕рдХреНрд░рд┐рдпрдкрдгреЗ рддреНрдпрд╛рдЪреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕реНрдерд┐рд░ рдХрд░рдд рдЖрд╣реЗ.

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 рдкреБрдвреАрд▓ рд╕реБрдзрд╛рд░рдгрд╛рдВрд╕рд╛рдареА. рдЖрддрд╛ рддреЗ kubectl рдордзреНрдпреЗ рдЖрд╣реЗ рдЖрдгрд┐ рдЕрд╢рд╛ рдЧреЛрд╖реНрдЯреАрдВрд╕рд╛рдареА рддреЗ рдЪрд╛рдВрдЧрд▓реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ.

*.yaml.tmpl рдлрд╛рдЗрд▓реНрд╕рдордзреНрдпреЗ рд╣реЛрд╕реНрдЯрдирд╛рд╡ рдЖрдгрд┐ GCP рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЖрдпрдбреА рднрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдореНрд╣реА envsubst рджреЗрдЦреАрд▓ рд╡рд╛рдкрд░рддреЛ. рддреЗ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ рддреЗ рддреБрдореНрд╣реА рдкрд╛рд╣реВ рд╢рдХрддрд╛ makefile рдХрд┐рдВрд╡рд╛ рдлрдХреНрдд рдкреБрдвреЗ рд╕реБрд░реВ рдареЗрд╡рд╛.

рдЖрд╡рд╢реНрдпрдХ рдЕрдЯреА

рдореЕрдирд┐рдлреЗрд╕реНрдЯ рд╡рд╛рдкрд░реВрди рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣

рддреБрдореНрд╣рд╛рд▓рд╛ kustomize рдХрд┐рдВрд╡рд╛ skaffold рд╡рд╛рдкрд░рд╛рдпрдЪреЗ рдирд╕рд▓реНрдпрд╛рд╕, рддреБрдореНрд╣реА рдордзреАрд▓ рдореЕрдирд┐рдлреЗрд╕реНрдЯрдЪрд╛ рд╕рдВрджрд░реНрдн рдШреЗрдК рд╢рдХрддрд╛ generated-manifest.yaml рдЖрдгрд┐ рддреНрдпрд╛рдВрдирд╛ рддреБрдордЪреНрдпрд╛ рдЖрд╡рдбреАрдЪреНрдпрд╛ рд╡рд░реНрдХрдлреНрд▓реЛрдордзреНрдпреЗ рдЬреБрд│рд╡реВрди рдШреНрдпрд╛.

рд▓реЙрдЧ рдЖрдгрд┐ рдореЗрдЯреНрд░рд┐рдХреНрд╕

рдкреНрд░реЛрдорд┐рдерд┐рдпрд╕ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдордзреНрдпреЗ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдЧреЛрд│рд╛ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдорд╛рдирдХ рдмрдирд▓реЗ рдЖрд╣реЗрдд. рд╣реЗ AWS рдХреНрд▓рд╛рдЙрдбрд╡реЙрдЪ рдореЗрдЯреНрд░рд┐рдХреНрд╕, рдХреНрд▓рд╛рдЙрдбрд╡реЙрдЪ рдЕреЕрд▓рд░реНрдЯреНрд╕, рд╕реНрдЯреЕрдХрдбреНрд░рд┐рд╡реНрд╣рд░ рдореЗрдЯреНрд░рд┐рдХреНрд╕, рд╕реНрдЯреЕрдЯреНрд╕рдбреА, рдбреЗрдЯрд╛рдбреЙрдЧ, рдирд╛рдЧрд┐рдУрд╕, vSphere рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдЖрдгрд┐ рдЗрддрд░рд╛рдВрд╕рд╛рд░рдЦреЗрдЪ рд╕реНрдерд╛рди рд╡реНрдпрд╛рдкрддреЗ. рд╣реЗ рдореБрдХреНрдд рд╕реНрддреНрд░реЛрдд рдЖрд╣реЗ рдЖрдгрд┐ рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдХреНрд╡реЗрд░реА рднрд╛рд╖рд╛ рдЖрд╣реЗ. рдЖрдореНрд╣реА рд╡реНрд╣рд┐рдЬреНрдпреБрдЕрд▓рд╛рдпрдЭреЗрд╢рди рдЧреНрд░рд╛рдлрд╛рдирд╛рдХрдбреЗ рд╕реЛрдкрд╡реВ - рддреЗ рдмреЙрдХреНрд╕рдЪреНрдпрд╛ рдмрд╛рд╣реЗрд░ рдореЛрдареНрдпрд╛ рд╕рдВрдЦреНрдпреЗрдиреЗ рдЙрдкрд▓рдмреНрдз рдбреЕрд╢рдмреЛрд░реНрдбрд╕рд╣ рдпреЗрддреЗ. рддреЗ рдПрдХрдореЗрдХрд╛рдВрд╢реА рдЬреЛрдбрд▓реЗрд▓реЗ рдЖрд╣реЗрдд рдЖрдгрд┐ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ рддреБрд▓рдиреЗрдиреЗ рд╕реЛрдкреЗ рдЖрд╣реЗ рдкреНрд░реЛрдорд┐рдерд┐рдпрд╕-рдСрдкрд░реЗрдЯрд░.

рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░, рдкреНрд░реЛрдорд┐рдерд┐рдпрд╕ рдПрдХреНрд╕рдЯреНрд░реЕрдХреНрд╢рди рдореЙрдбреЗрд▓ рд╡рд╛рдкрд░рддреЛ <service>/metrics, рдЖрдгрд┐ рдпрд╛рд╕рд╛рдареА рд╕рд╛рдЗрдбрдХрд╛рд░ рдХрдВрдЯреЗрдирд░ рдЬреЛрдбрдгреЗ рд╕рд╛рдорд╛рдиреНрдп рдЖрд╣реЗ. рджреБрд░реНрджреИрд╡рд╛рдиреЗ, JMX рдореЗрдЯреНрд░рд┐рдХреНрд╕ JVM рдордзреНрдпреЗ рд╕рд░реНрд╡реЛрддреНрддрдо рд▓реЙрдЧ рдЗрди рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд, рддреНрдпрд╛рдореБрд│реЗ рд╕рд╛рдЗрдбрдХрд╛рд░ рдХрдВрдЯреЗрдирд░ рддрд┐рддрдХреЗ рдХрд╛рд░реНрдпрдХреНрд╖рдо рдирд╛рд╣реАрдд. рдЪрд▓рд╛ рдХрдиреЗрдХреНрдЯ рдХрд░реВрдпрд╛ рдЬреЗрдПрдордПрдХреНрд╕_рдПрдХреНрд╕рдкреЛрд░реНрдЯрд░ рдХрдВрдЯреЗрдирд░ рдЗрдореЗрдЬрдордзреНрдпреЗ рдЬреЛрдбреВрди рдкреНрд░реЛрдорд┐рдерд┐рдпрд╕рдкрд╛рд╕реВрди 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

рдмрд░рдВ, рддреЗ рд╕реЛрдкрдВ рд╣реЛрддрдВ. рдирд┐рд░реНрдпрд╛рддрдХ рдЯреЙрдордХреЕрдЯрдЪреЗ тАЛтАЛрдирд┐рд░реАрдХреНрд╖рдг рдХрд░реЗрд▓ рдЖрдгрд┐ рддреНрдпрд╛рдЪреЗ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдкреНрд░реЛрдорд┐рдерд┐рдпрд╕ рдлреЙрд░рдореЕрдЯ рдпреЗрдереЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрд▓ <svc>:9404/metrics

рдирд┐рд░реНрдпрд╛рддрджрд╛рд░ рд╕реЗрдЯрдЕрдк

рд╣реЗ рдХреЛрдареВрди рдЖрд▓реЗ рдЕрд╕рд╛ рдкреНрд░рд╢реНрди рд╕рдЬрдЧ рд╡рд╛рдЪрдХрд╛рд▓рд╛ рдкрдбрд▓рд╛ рдЕрд╕реЗрд▓ prometheus-jmx.yaml? JVM рдордзреНрдпреЗ рдЕрдиреЗрдХ рднрд┐рдиреНрди рдЧреЛрд╖реНрдЯреА рдЪрд╛рд▓реВ рд╢рдХрддрд╛рдд рдЖрдгрд┐ рдЯреЙрдордХреЕрдЯ рд╣реА рддреНрдпрд╛рдкреИрдХреА рдлрдХреНрдд рдПрдХ рдЖрд╣реЗ, рддреНрдпрд╛рдореБрд│реЗ рдирд┐рд░реНрдпрд╛рддрджрд╛рд░рд╛рд▓рд╛ рдХрд╛рд╣реА рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ. рдЯреЙрдордХреЕрдЯ, рд╡рд╛рдЗрд▓реНрдбрдлреНрд▓рд╛рдп, рдХрд╛рдлреНрдХрд╛ рдЖрдгрд┐ рдЗрддрд░рд╛рдВрд╕рд╛рдареА рдорд╛рдирдХ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗрдд рдпреЗрдереЗ. рдЖрдореНрд╣реА tomcat рдореНрд╣рдгреВрди рдЬреЛрдбреВ рдХреЙрдиреНрдлрд┐рдЧрдореЕрдк 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[] рдХреЙрдиреНрдлрд┐рдЧрдореЕрдк рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдШрдЯрдХ рдореНрд╣рдгреВрди. ConfigMapGenerators рдЙрддреНрддрдо рдЖрд╣реЗрдд рдХрд╛рд░рдг рддреЗ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдбреЗрдЯрд╛ рд╣реЕрд╢ рдХрд░рддрд╛рдд рдЖрдгрд┐ рддреЗ рдмрджрд▓рд▓реНрдпрд╛рд╕ рдкреЙрдб рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдХрд░рдгреНрдпрд╛рд╕ рднрд╛рдЧ рдкрд╛рдбрддрд╛рдд. рддреЗ рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯрдордзреАрд▓ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирдЪреЗ рдкреНрд░рдорд╛рдг рджреЗрдЦреАрд▓ рдХрдореА рдХрд░рддрд╛рдд рдХрд╛рд░рдг рддреБрдореНрд╣реА рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдлрд╛рдЗрд▓реНрд╕рдЪреЗ рд╕рдВрдкреВрд░реНрдг "рдлреЛрд▓реНрдбрд░" рдПрдХрд╛ VolumeMount рдордзреНрдпреЗ рдорд╛рдЙрдВрдЯ рдХрд░реВ рд╢рдХрддрд╛.

рд╢реЗрд╡рдЯреА, рдЖрдореНрд╣рд╛рд▓рд╛ рдкреЙрдбрд╡рд░ рд╡реНрд╣реЙрд▓реНрдпреВрдо рдореНрд╣рдгреВрди рдХреЙрдиреНрдлрд┐рдЧрдореЕрдк рдорд╛рдЙрдВрдЯ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ:

-- 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 рдбреЗрдЯрд╛рдмреЗрд╕ рдЕрд╕реЗрд▓. рд╣реЗ рдЖрдордЪреНрдпрд╛рд╕рд╛рдареА рдпреЛрдЧреНрдп рдирд╛рд╣реА рдЖрдгрд┐ рдЖрдореНрд╣реА рдХреНрд▓рд╛рдЙрдб 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 рд╕рд╣ рдХреВрдЯрдмрджреНрдз рдХрд░рдгреЗ рдЖрдгрд┐ рдирдВрддрд░ рддреНрдпрд╛рдВрдирд╛ K8S рдордзреНрдпреЗ рд╕реАрдбреА рдкрд╛рдЗрдкрд▓рд╛рдЗрдирджреНрд╡рд╛рд░реЗ рдЧреБрдкрд┐рддреЗ рдореНрд╣рдгреВрди рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдгреЗ - Mozilla SOPS - 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

рдЯреЙрдордХреЕрдЯ рдкреВрд░реНрдгрдкрдгреЗ рддрдпрд╛рд░ рд╣реЛрдИрдкрд░реНрдпрдВрдд рдХрд╛рд╣реА рдорд┐рдирд┐рдЯреЗ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рд╛. рдбреЛрдореЗрди рдирд╛рд╡рд╛рдЪреА рдкрдбрддрд╛рд│рдгреА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА 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 рдордзреНрдпреЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЕрдХреНрд╖рдо рдХреЗрд▓реЗ рдЖрд╣реЗ. рдЖрдкрдг рдХрд░реВ рд╢рдХрддрд╛ рдореВрд▓рднреВрдд рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╕рдХреНрд╖рдо рдХрд░рд╛ рдХрд┐рдВрд╡рд╛ рджреБрд╕рд░реА рдкрджреНрдзрдд рд╡рд╛рдкрд░рд╛ рдЬрд╕реЗ рдЬреЗрдбрдмреНрд▓реНрдпреВрдЯреА. рддреБрдореНрд╣реА xml рд▓реЛрдб рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреЙрдиреНрдлрд┐рдЧрдореЕрдкреНрд╕ рдЖрдгрд┐ рд╡реНрд╣реЙрд▓реНрдпреВрдо рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛, рдХрд┐рдВрд╡рд╛ рдЗрдореЗрдЬрдордзреАрд▓ рд╡рд┐рджреНрдпрдорд╛рди рдлрд╛рдЗрд▓реНрд╕ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА xmlstarlet (рд╡рд░ рдкрд╣рд╛), рдЖрдгрд┐ рдПрдХрддрд░ wget рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛ рдХрд┐рдВрд╡рд╛ init рдХрдВрдЯреЗрдирд░ рдЖрдгрд┐ рд╢реЗрдЕрд░реНрдб рд╡реНрд╣реЙрд▓реНрдпреВрдо рд╡рд╛рдкрд░реВрди рд▓реЛрдб рдХрд░реВ рд╢рдХрддрд╛.

рд╕рддреНрд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди

рдЗрддрд░ рдЕрдиреЗрдХ рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рдкреНрд░рдорд╛рдгреЗ, рдХреЕрдореБрдВрдбрд╛ рдмреАрдкреАрдПрдо JVM рдордзреНрдпреЗ рд╕рддреНрд░реЗ рд╣рд╛рддрд╛рд│рддреЗ, рддреНрдпрд╛рдореБрд│реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдЕрдиреЗрдХ рдкреНрд░рддрд┐рдХреГрддреА рдЪрд╛рд▓рд╡рд╛рдпрдЪреА рдЕрд╕рд▓реНрдпрд╛рд╕, рддреБрдореНрд╣реА рдЪрд┐рдХрдЯ рд╕рддреНрд░реЗ рд╕рдХреНрд╖рдо рдХрд░реВ рд╢рдХрддрд╛ (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде ingress-nginx рд╕рд╛рдареА), рдЬреА рдкреНрд░рддрд┐рдХреГрддреА рдЕрджреГрд╢реНрдп рд╣реЛрдИрдкрд░реНрдпрдВрдд рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдЕрд╕реЗрд▓ рдХрд┐рдВрд╡рд╛ рдХреБрдХреАрдЬрд╕рд╛рдареА рдХрдорд╛рд▓-рд╡рдп рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕реЗрдЯ рдХрд░реЗрд▓. рдЕрдзрд┐рдХ рдордЬрдмреВрдд рд╕рдорд╛рдзрд╛рдирд╛рд╕рд╛рдареА, рддреБрдореНрд╣реА Tomcat рдордзреНрдпреЗ рд╕рддреНрд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рддреИрдирд╛рдд рдХрд░реВ рд╢рдХрддрд╛. рд▓рд╛рд░реНрд╕рдХрдбреЗ рдЖрд╣реЗ рд╕реНрд╡рддрдВрддреНрд░ рдкреЛрд╕реНрдЯ рдпрд╛ рд╡рд┐рд╖рдпрд╛рд╡рд░, рдкрд░рдВрддреБ рдЕрд╕реЗ рдХрд╛рд╣реАрддрд░реА:

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 рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛

рдЖрдореНрд╣реА рд╡рд╛рдкрд░рд▓реЗ twemproxy Google Cloud Memorystore рд╕рдореЛрд░, рд╕рд╣ memcached-session-manager (рд░реЗрдбреАрд╕рдЪреЗ рд╕рдорд░реНрдерди рдХрд░рддреЗ) рддреЗ рдЪрд╛рд▓рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА.

рд╕реНрдХреЗрд▓рд┐рдВрдЧ

рдЬрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рдЖрдзреАрдЪ рд╕рддреНрд░реЗ рд╕рдордЬрд▓реА рдЕрд╕рддреАрд▓, рддрд░ рдХреЕрдореБрдВрдбрд╛ рдмреАрдкреАрдПрдо рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкрд╣рд┐рд▓реА (рдЖрдгрд┐ рдмрд░реНтАНрдпрд╛рдЪрджрд╛ рд╢реЗрд╡рдЯрдЪреА) рдорд░реНрдпрд╛рджрд╛ рдбреЗрдЯрд╛рдмреЗрд╕рд╢реА рдХрдиреЗрдХреНрд╢рди рдЕрд╕реВ рд╢рдХрддреЗ. рдЖрдВрд╢рд┐рдХ рд╕рд╛рдиреБрдХреВрд▓рди рдЖрдзреАрдЪ рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗ "рдмреЙрдХреНрд╕рдордзреВрди" settings.xml рдлрд╛рдИрд▓рдордзреНрдпреЗ intialSize рджреЗрдЦреАрд▓ рдЕрдХреНрд╖рдо рдХрд░реВрдпрд╛. рдЕреЕрдб рдХреНрд╖реИрддрд┐рдЬ рдкреЙрдб рдСрдЯреЛрд╕реНрдХреЗрд▓рд░ (HPA) рдЖрдгрд┐ рдЖрдкрдг рд╕рд╣рдЬрдкрдгреЗ рд╢реЗрдВрдЧрд╛рдВрдЪреА рд╕рдВрдЦреНрдпрд╛ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рддрдкрдгреЗ рдореЛрдЬреВ рд╢рдХрддрд╛.

рд╡рд┐рдирдВрддреНрдпрд╛ рдЖрдгрд┐ рдирд┐рд░реНрдмрдВрдз

╨Т platform/deployment.yaml рддреБрдореНрд╣рд╛рд▓рд╛ рджрд┐рд╕реЗрд▓ рдХреА рдЖрдореНрд╣реА рд╕рдВрд╕рд╛рдзрди рдлреАрд▓реНрдб рд╣рд╛рд░реНрдб-рдХреЛрдб рдХреЗрд▓реЗ рдЖрд╣реЗ. рд╣реЗ HPA рд╕рд╣ рдЪрд╛рдВрдЧрд▓реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ, рдкрд░рдВрддреБ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрд╕реВ рд╢рдХрддреЗ. рдпрд╛рд╕рд╛рдареА kustomize рдкреЕрдЪ рдпреЛрдЧреНрдп рдЖрд╣реЗ. рд╕реЗрдореА. ingress-patch.yaml.tmpl ╨╕ ./kustomization.yaml.tmpl

рдирд┐рд╖реНрдХрд░реНрд╖

рдореНрд╣рдгреВрди рдЖрдореНрд╣реА рдкреНрд░реЛрдорд┐рдерд┐рдпрд╕ рдореЗрдЯреНрд░рд┐рдХреНрд╕, рд▓реЙрдЧ, 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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛