Kubernetes рдорд╛ Camunda BPM рдЪрд▓рд╛рдЙрдБрджреИ

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

рдард┐рдХ рдЫ, рдпрд╕рд▓реЗ рдХрд╛рдо рдЧрд░реЗрди рдХрд┐рдирднрдиреЗ рддрдкрд╛рдИрдВрд╕рдБрдЧ рд╕реНрдХрд╛рдлреЛрд▓реНрдб рд░ kustomize рд╕реНрдерд╛рдкрдирд╛ рдЫреИрдиред рдареАрдХ рдЫ, рддреНрдпрд╕рдкрдЫрд┐ рдкрдвреНрдиреБрд╣реЛрд╕реН!

Camunda BPM рдХреЗ рд╣реЛ

Camunda BPM рдПрдХ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рд╡реНрдпрд╛рдкрд╛рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд░ рдирд┐рд░реНрдгрдп рд╕реНрд╡рдЪрд╛рд▓рди рдкреНрд▓реЗрдЯрдлрд░реНрдо рд╣реЛ рдЬрд╕рд▓реЗ рд╡реНрдпрд╛рдкрд╛рд░ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВ рд░ рд╕рдлреНрдЯрд╡реЗрдпрд░ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓рд╛рдИ рдЬреЛрдбреНрджрдЫред рдпреЛ рд╕рдордиреНрд╡рдп рд░ рдорд╛рдирд┐рд╕рд╣рд░реВ, (рдорд╛рдЗрдХреНрд░реЛ) рд╕реЗрд╡рд╛рд╣рд░реВ рд╡рд╛ рдмрдЯрд╣рд░реВ рдЬрдбрд╛рди рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдЖрджрд░реНрд╢ рд╣реЛ! рддрдкрд╛рдИрдВ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдпреЛрдЧ рдХреЗрд╕рд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдердк рдкрдвреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рд▓рд┐рдЩреНрдХ.

рдХрд┐рди Kubernetes рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН

Kubernetes Linux рдорд╛ рдЖрдзреБрдирд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдЪрд▓рд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдорд╛рдирдХ рднрдПрдХреЛ рдЫред рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЗрдореБрд▓реЗрд╢рдирдХреЛ рд╕рдЯреНрдЯрд╛ рдкреНрд░рдгрд╛рд▓реА рдХрд▓рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд░ рдореЗрдореЛрд░реА рд░ рдЯрд╛рд╕реНрдХ рд╕реНрд╡рд┐рдЪрд┐рдЩ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрди рдХрд░реНрдиреЗрд▓рдХреЛ рдХреНрд╖рдорддрд╛, рдмреБрдЯ рд╕рдордп рд░ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордп рдиреНрдпреВрдирддрдо рд░рд╛рдЦрд┐рдПрдХреЛ рдЫред рдпрджреНрдпрдкрд┐, рд╕рдмреИрднрдиреНрджрд╛ рдареВрд▓реЛ рдлрд╛рдЗрджрд╛ рдорд╛рдирдХ API рдмрд╛рдЯ рдЖрдЙрди рд╕рдХреНрдЫ рдЬреБрди Kubernetes рд▓реЗ рд╕рдмреИ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрд▓рд╛рдИ рдЖрд╡рд╢реНрдпрдХ рдкреВрд░реНрд╡рд╛рдзрд╛рд░ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ: рднрдгреНрдбрд╛рд░рдг, рдиреЗрдЯрд╡рд░реНрдХрд┐рдЩ, рд░ рдирд┐рдЧрд░рд╛рдиреАред рдпреЛ рдЬреБрди реирежреиреж рдорд╛ 2020 рд╡рд░реНрд╖ рдкреБрд░рд╛рдиреЛ рднрдпреЛ рд░ рд╕рд╛рдпрдж рджреЛрд╕реНрд░реЛ рдареВрд▓реЛ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реЛ (рд▓рд┐рдирдХреНрд╕ рдкрдЫрд┐)ред рдпрд╕рд▓реЗ рднрд░реНрдЦрд░реИ рд╡рд┐рдЧрдд рдХреЗрд╣реА рд╡рд░реНрд╖рд╣рд░реВрдорд╛ рджреНрд░реБрдд рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрдЫрд┐ рд╕рдХреНрд░рд┐рдп рд░реВрдкрдорд╛ рдпрд╕рдХреЛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕реНрдерд┐рд░ рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдЫ рдХрд┐рдирдХрд┐ рдпреЛ рд╡рд┐рд╢реНрд╡рднрд░рд┐ рдЙрддреНрдкрд╛рджрди рдХрд╛рд░реНрдпрднрд╛рд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реБрдиреНрдЫред

Camunda BPM рдЗрдиреНрдЬрд┐рдирд▓реЗ рдЙрд╣реА рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЕрдиреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдорд╛ рд╕рдЬрд┐рд▓реИ рдЬрдбрд╛рди рдЧрд░реНрди рд╕рдХреНрдЫ, рд░ Kubernetes рд▓реЗ рдЙрддреНрдХреГрд╖реНрдЯ рд╕реНрдХреЗрд▓реЗрдмрд┐рд▓рд┐рдЯреА рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ, рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЖрд╡рд╢реНрдпрдХ рдкрд░реЗрдХреЛ рдмреЗрд▓рд╛рдорд╛ рдорд╛рддреНрд░ рдкреВрд░реНрд╡рд╛рдзрд╛рд░ рд▓рд╛рдЧрддрд╣рд░реВ рдмрдврд╛рдЙрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ (рд░ рд╕рдЬрд┐рд▓реИ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрдиреБрд╕рд╛рд░ рдШрдЯрд╛рдЙрдиреБрд╣реЛрд╕реН)ред

рдкреНрд░реЛрдореЗрдерд┐рдпрд╕, рдЧреНрд░рд╛рдлрд╛рдирд╛, рд▓реЛрдХреА, рдлреНрд▓реБрдПрдиреНрдЯ рд░ рдЗрд▓рд╛рд╕реНрдЯрд┐рдХрд╕рд░реНрдЪ рдЬрд╕реНрддрд╛ рдЙрдкрдХрд░рдгрд╣рд░реВрджреНрд╡рд╛рд░рд╛ рдирд┐рдЧрд░рд╛рдиреАрдХреЛ рдЧреБрдгрд╕реНрддрд░ рдкрдирд┐ рдзреЗрд░реИ рд╕реБрдзрд╛рд░рд┐рдПрдХреЛ рдЫ, рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рд╕рдмреИ рд╡рд░реНрдХрд▓реЛрдбрд╣рд░реВ рдХреЗрдиреНрджреНрд░реАрдп рд░реВрдкрдорд╛ рд╣реЗрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рдЖрдЬ рд╣рд╛рдореА рдЬрд╛рднрд╛ рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╢рд┐рди (JVM) рдорд╛ рдкреНрд░реЛрдорд┐рдерд┐рдпрд╕ рдирд┐рд░реНрдпрд╛рддрдХ рдХрд╕рд░реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрдиреЗ рднрдиреЗрд░ рд╣реЗрд░реНрдиреЗрдЫреМрдВред

рдЙрджреНрджреЗрд╢реНрдпрд╣рд░реВ

рдХреЗрд╣реА рдХреНрд╖реЗрддреНрд░рд╣рд░реВ рд╣реЗрд░реМрдВ рдЬрд╣рд╛рдБ рд╣рд╛рдореА рдХреНрдпрд╛рдореБрдиреНрдбрд╛ рдмреАрдкреАрдПрдо рдбрдХрд░ рдЫрд╡рд┐ рдЕрдиреБрдХреВрд▓рди рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ (github) рддрд╛рдХрд┐ рдпрд╕рд▓реЗ Kubernetes рд╕рдБрдЧ рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ рдЧрд░реНрдЫред

  1. рд▓рдЧ рд░ рдореЗрдЯреНрд░рд┐рдХреНрд╕;
  2. рдбрд╛рдЯрд╛рдмреЗрд╕ рдЬрдбрд╛рдирд╣рд░реВ;
  3. рдкреНрд░рдорд╛рдгреАрдХрд░рдг;
  4. рд╕рддреНрд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдиред

рд╣рд╛рдореА рдпреА рд▓рдХреНрд╖реНрдпрд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдзреЗрд░реИ рддрд░рд┐рдХрд╛рд╣рд░реВ рд╣реЗрд░реНрдиреЗрдЫреМрдВ рд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рд╕рдореНрдкреВрд░реНрдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреЗрдЦрд╛рдЙрдиреЗрдЫреМрдВред

рднрдиреНрдиреБ: рдХреЗ рддрдкрд╛рдЗрдБ рдЗрдиреНрдЯрд░рдкреНрд░рд╛рдЗрдЬ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ рд╣реБрдиреБрд╣реБрдиреНрдЫ? рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН рдпрд╣рд╛рдБ рд░ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрдиреБрд╕рд╛рд░ рдЫрд╡рд┐ рд▓рд┐рдЩреНрдХрд╣рд░реВ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ рд╡рд┐рдХрд╛рд╕

рдпрд╕ рдбреЗрдореЛрдорд╛, рд╣рд╛рдореА Google рдХреНрд▓рд╛рдЙрдб рдмрд┐рд▓реНрдб рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдбрдХрд░ рдЫрд╡рд┐рд╣рд░реВ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди Skaffold рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВред рдпрд╕рдорд╛ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдХрд░рдгрд╣рд░реВ (рдЬрд╕реНрддреИ Kustomize рд░ Helm), CI рд░ рдирд┐рд░реНрдорд╛рдг рдЙрдкрдХрд░рдгрд╣рд░реВ, рд░ рдкреВрд░реНрд╡рд╛рдзрд╛рд░ рдкреНрд░рджрд╛рдпрдХрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд░рд╛рдореНрд░реЛ рд╕рдорд░реНрдерди рдЫред рдлрд╛рдЗрд▓ skaffold.yaml.tmpl рдЧреБрдЧрд▓ рдХреНрд▓рд╛рдЙрдб рдмрд┐рд▓реНрдб рд░ GKE рдХреЛ рд╕реЗрдЯрд┐рдЩрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ, рдЙрддреНрдкрд╛рджрди-рдЧреНрд░реЗрдб рдкреВрд░реНрд╡рд╛рдзрд╛рд░рд╣рд░реВ рдЪрд▓рд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдзреЗрд░реИ рд╕рд░рд▓ рддрд░рд┐рдХрд╛ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред

make skaffold рдХреНрд▓рд╛рдЙрдб рдмрд┐рд▓реНрдбрдорд╛ рдбрдХрд░рдлрд╛рдЗрд▓ рд╕рдиреНрджрд░реНрдн рд▓реЛрдб рдЧрд░реНрдиреЗрдЫ, рдЫрд╡рд┐ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрдиреЗрдЫ рд░ GCR рдорд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрдиреЗрдЫ, рд░ рддреНрдпрд╕рдкрдЫрд┐ рддрдкрд╛рдИрдВрдХреЛ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ manifests рд▓рд╛рдЧреВ рдЧрд░реНрдиреЗрдЫред рдпреЛ рдХреЗ рдЧрд░реНрдЫ make skaffold, рддрд░ Skaffold рдорд╛ рдзреЗрд░реИ рдЕрдиреНрдп рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рдЫрдиреНред

Kubernetes рдорд╛ yaml рдЯреЗрдореНрдкреНрд▓реЗрдЯрд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореА yaml рдУрднрд░рд▓реЗрд╣рд░реВ рдкреНрд░рдмрдиреНрдз рдЧрд░реНрди рд╕рдореНрдкреВрд░реНрдг manifest рд▓рд╛рдИ рдлреЛрд░реНрдХ рдирдЧрд░реА kustomize рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫреМрдВ, рддрдкрд╛рдИрдВрд▓рд╛рдИ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдБрджреИред git pull --rebase рдердк рд╕реБрдзрд╛рд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ред рдЕрдм рдпреЛ kubectl рдорд╛ рдЫ рд░ рдпрд╕рд▓реЗ рддреНрдпрд╕реНрддрд╛ рдЪреАрдЬрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрджрдЫред

рд╣рд╛рдореА *.yaml.tmpl рдлрд╛рдЗрд▓рд╣рд░реВрдорд╛ рд╣реЛрд╕реНрдЯрдирд╛рдо рд░ GCP рдкрд░рд┐рдпреЛрдЬрдирд╛ ID рднрд░реНрди envsubst рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫреМрдВред рддрдкрд╛рдИрд▓реЗ рдпреЛ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрджрдЫ рд╣реЗрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ makefile рд╡рд╛ рдХреЗрд╡рд▓ рдЕрдЧрд╛рдбрд┐ рдЬрд╛рд░реА рд░рд╛рдЦреНрдиреБрд╣реЛрд╕реНред

рдЖрд╡рд╢реНрдпрдХ рд╕рд░реНрддрд╣рд░реВ

manifests рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣

рдпрджрд┐ рддрдкрд╛рдЗрдБ kustomize рд╡рд╛ skaffold рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрди рднрдиреЗ, рддрдкрд╛рдЗрдБ manifests рдорд╛ рд╕рдиреНрджрд░реНрдн рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ generated-manifest.yaml рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдЖрдлреНрдиреЛ рд░реЛрдЬрд╛рдЗрдХреЛ рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣рдорд╛ рдЕрдиреБрдХреВрд▓рди рдЧрд░реНрдиреБрд╣реЛрд╕реНред

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

рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ Kubernetes рдорд╛ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рд╕рдЩреНрдХрд▓рди рдХреЛ рд▓рд╛рдЧреА рдорд╛рдирдХ рднрдПрдХреЛ рдЫред рдпрд╕рд▓реЗ AWS Cloudwatch Metrics, Cloudwatch Alerts, Stackdriver Metrics, StatsD, Datadog, Nagios, vSphere Metrics рд░ рдЕрдиреНрдпрдХреЛ рд░реВрдкрдорд╛ рд╕рдорд╛рди рд╕реНрдерд╛рди рдУрдЧрдЯреЗрдХреЛ рдЫред рдпреЛ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рд╣реЛ рд░ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдХреНрд╡реЗрд░реА рднрд╛рд╖рд╛ рдЫред рд╣рд╛рдореА Grafana рд▓рд╛рдИ рднрд┐рдЬреБрдЕрд▓рд╛рдЗрдЬреЗрд╢рди рд╕реБрдореНрдкрдиреЗ рдЫреМрдБ - рдпреЛ рдмрдХреНрд╕ рдмрд╛рд╣рд┐рд░ рдЙрдкрд▓рдмреНрдз рдбреНрдпрд╛рд╕рдмреЛрд░реНрдбрд╣рд░реВрдХреЛ рдареВрд▓реЛ рд╕рдВрдЦреНрдпрд╛рдХреЛ рд╕рд╛рде рдЖрдЙрдБрдЫред рддрд┐рдиреАрд╣рд░реВ рдПрдХ рдЕрд░реНрдХрд╛рд╕рдБрдЧ рдЬреЛрдбрд┐рдПрдХрд╛ рдЫрдиреН рд░ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рдЬрд┐рд▓реЛ рдЫрдиреН prometheus-рдЕрдкрд░реЗрдЯрд░.

рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛, рдкреНрд░реЛрдореЗрдерд┐рдпрд╕рд▓реЗ рдирд┐рдХрд╛рд╕реА рдореЛрдбреЗрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ <service>/metrics, рд░ рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рд╕рд╛рдЗрдбрдХрд╛рд░ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ рдердкреНрдиреБ рд╕рд╛рдорд╛рдиреНрдп рдЫред рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢, JMX рдореЗрдЯреНрд░рд┐рдХрд╣рд░реВ JVM рднрд┐рддреНрд░ рд▓рдЧрдЗрди рдЧрд░рд┐рдПрдХрд╛ рдЫрдиреН, рддреНрдпрд╕реИрд▓реЗ рд╕рд╛рдЗрдбрдХрд╛рд░ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ рддреНрдпрддрд┐ рдкреНрд░рднрд╛рд╡рдХрд╛рд░реА рдЫреИрдирдиреНред рдЬрдбрд╛рди рдЧрд░реМрдВ jmx_exporter рдкреНрд░реЛрдорд┐рдерд┐рдпрд╕рдмрд╛рдЯ 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 рдЙрддреНрдХреГрд╖реНрдЯ рдЫрдиреН рдХрд┐рдирднрдиреЗ рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдбреЗрдЯрд╛ рд╣реНрдпрд╛рд╕ рдЧрд░реНрдЫрдиреН рд░ рдпрджрд┐ рдпреЛ рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдиреНрдЫ рднрдиреЗ рдкреЛрдб рдкреБрди: рд╕реБрд░реБ рдЧрд░реНрди рдмрд╛рдзреНрдп рдкрд╛рд░реНрдЫред рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯрдорд╛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдХреЛ рдорд╛рддреНрд░рд╛ рдкрдирд┐ рдШрдЯрд╛рдЙрдБрдЫрдиреН рдХрд┐рдирднрдиреЗ рддрдкрд╛рдЗрдБ рдПрдХ рднреЛрд▓реНрдпреБрдордорд╛рдЙрдиреНрдЯрдорд╛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдлрд╛рдЗрд▓рд╣рд░реВрдХреЛ рд╕рдореНрдкреВрд░реНрдг "рдлреЛрд▓реНрдбрд░" рдорд╛рдЙрдиреНрдЯ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

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

-- 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, рдЕрдкрд░реЗрдЯрд░ рдбрд┐рдЬрд╛рдЗрди ╨╕ ServiceMonitorSpec рддрдкрд╛рдЗрдБ рд╕реБрд░реБ рдЧрд░реНрдиреБ рдЕрдШрд┐ред

рдпреЛ рдврд╛рдБрдЪрд╛рд▓рд╛рдИ рдЕрдиреНрдп рдкреНрд░рдпреЛрдЧ рдХреЗрд╕рд╣рд░реВрдорд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдЧрд░реНрджреИ

рд╣рд╛рдореАрд▓реЗ ConfigMapGenerator рдорд╛ рдердкреНрдиреЗ рд╕рдмреИ рдлрд╛рдЗрд▓рд╣рд░реВ рдирдпрд╛рдБ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрдорд╛ рдЙрдкрд▓рдмреНрдз рд╣реБрдиреЗрдЫрдиреН /etc/configред рддрдкрд╛рдИрд▓реЗ рдЪрд╛рд╣рд┐рдиреЗ рдЕрдиреНрдп рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдлрд╛рдЗрд▓рд╣рд░реВ рдорд╛рдЙрдиреНрдЯ рдЧрд░реНрди рдпреЛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╡рд┐рд╕реНрддрд╛рд░ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рддрдкрд╛рдИрд▓реЗ рдирдпрд╛рдБ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрдирд┐ рдорд╛рдЙрдиреНрдЯ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рддрд┐рдореА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдирд╕рдХреНрдЫреМ рдЙрдкрдкрде рд╡реНрдпрдХреНрддрд┐рдЧрдд рдлрд╛рдЗрд▓рд╣рд░реВ рдорд╛рдЙрдиреНрдЯ рдЧрд░реНрдиред xml рдлрд╛рдЗрд▓рд╣рд░реВ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░реНрди, рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рд╡рд┐рдЪрд╛рд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН xmlstarlet sed рдХреЛ рд╕рдЯреНрдЯрд╛ред рдпреЛ рдкрд╣рд┐рд▓реЗ рдиреИ рдЫрд╡рд┐рдорд╛ рд╕рдорд╛рд╡реЗрд╢ рдЫред

рдореНрдпрд╛рдЧрдЬрд┐рдирд╣рд░реВ

рд░рд╛рдореНрд░реЛ рдЦрдмрд░! рдЖрд╡реЗрджрди рд▓рдЧрд╣рд░реВ рдкрд╣рд┐рд▓реЗ рдиреИ stdout рдорд╛ рдЙрдкрд▓рдмреНрдз рдЫрдиреН, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ kubectl logsред Fluentd (GKE рдорд╛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ рд╕реНрдерд╛рдкрд┐рдд) рд▓реЗ рддрдкрд╛рдИрдВрдХреЛ рд▓рдЧрд╣рд░реВ Elasticsearch, Loki, рд╡рд╛ рддрдкрд╛рдИрдВрдХреЛ рдЙрджреНрдпрдо рд▓рдЧрд┐рдЩ рдкреНрд▓реЗрдЯрдлрд░реНрдордорд╛ рдлрд░реНрд╡рд╛рд░реНрдб рдЧрд░реНрдиреЗрдЫред рдпрджрд┐ рддрдкрд╛рдЗрдБ рд▓рдЧрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ 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 рд╕реБрд╡рд┐рдзрд╛ рд╡рд┐рдХрд╛рд╕ рдХреЛ рд╕рдордпрдорд╛ рдкрдирд┐ рдЖрдлреНрдиреЛ рдЧреЛрдкреНрдп рд╕реБрд░рдХреНрд╖рд┐рдд рд░рд╛рдЦреНрдиред

рдпреЛ рд╕рдореНрднрд╡ рдЫ рдХрд┐ рддрдкрд╛рдЗрдБрд╕рдБрдЧ рдкрд╣рд┐рд▓реЗ рдиреИ Kubernetes рдЧреЛрдкреНрдп рдкреНрд░рдмрдиреНрдз рдЧрд░реНрди рдХреЛ рд▓рд╛рдЧреА рдПрдХ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдкреНрд░рдгрд╛рд▓реА рдЫред рдпрджрд┐ рд╣реЛрдЗрди рднрдиреЗ, рдпрд╣рд╛рдБ рдХреЗрд╣рд┐ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдЫрдиреН: рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рддрдкрд╛рдИрдВрдХреЛ рдХреНрд▓рд╛рдЙрдб рдкреНрд░рджрд╛рдпрдХрдХреЛ KMS рд╕рдБрдЧ рдЗрдиреНрдХреНрд░рд┐рдкреНрдЯ рдЧрд░реНрдиреЗ рд░ рддреНрдпрд╕рдкрдЫрд┐ CD рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдорд╛рд░реНрдлрдд рдЧреЛрдкреНрдп рд░реВрдкрдорд╛ K8S рдорд╛ рдЗрдиреНрдЬреЗрдХреНрд╕рди рдЧрд░реНрдиреЗ - рдореЛрдЬрд┐рд▓рд╛рдПрд╕рдУрдкреАрдПрд╕ - Kustomize рд░рд╣рд╕реНрдп рд╕рдВрдЧ рд╕рдВрдпреЛрдЬрди рдорд╛ рдзреЗрд░реИ рд░рд╛рдореНрд░реЛ рдХрд╛рдо рдЧрд░реНрдиреЗрдЫред рддреНрдпрд╣рд╛рдБ рдЕрдиреНрдп рдЙрдкрдХрд░рдгрд╣рд░реВ рдЫрдиреН, рдЬрд╕реНрддреИ dotGPG, рдЬрд╕рд▓реЗ рд╕рдорд╛рди рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрджрдЫ: HashiCorp рднреЛрд▓реНрдЯ, рдЧреЛрдкреНрдп рдореВрд▓реНрдп рдкреНрд▓рдЧрдЗрдирд╣рд░реВ рдЕрдиреБрдХреВрд▓рд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН.

рдЖрдХреНрд░рд╛рдордХ

рддрдкрд╛рдИрдВрд▓реЗ рд╕реНрдерд╛рдиреАрдп рдкреЛрд░реНрдЯ рдлрд░реНрд╡рд╛рд░реНрдбрд┐рдЩ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд░реЛрдЬреНрдиреБрднрдПрди рднрдиреЗ, рддрдкрд╛рдИрдВрд▓рд╛рдИ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рдПрдХреЛ рдЗрдиреНрдЧреНрд░реЗрд╕ рдХрдиреНрдЯреНрд░реЛрд▓рд░ рдЪрд╛рд╣рд┐рдиреНрдЫред рдпрджрд┐ рддрдкрд╛рдЗрдБ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реБрдиреНрди рднрдиреЗ ingress-nginx (рд╣реЗрд▓рдо рдЪрд╛рд░реНрдЯ) рддреНрдпрд╕реЛрднрдП рддрдкрд╛рдИрд▓рд╛рдИ рдкрд╣рд┐рд▓реЗ рдиреИ рдерд╛рд╣рд╛ рдЫ рдХрд┐ рддрдкрд╛рдИрд▓реЗ рдЖрд╡рд╢реНрдпрдХ рдПрдиреЛрдЯреЗрд╕рдирд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ ingress-patch.yaml.tmpl рд╡рд╛ platform/ingress.yamlред рдпрджрд┐ рддрдкрд╛рдЗрдБ ingress-nginx рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рд░рд╣рдиреБ рднрдПрдХреЛ рдЫ рд░ рд▓реЛрдб рдмреНрдпрд╛рд▓реЗрдиреНрд╕рд░ рд░ рдмрд╛рд╣рд┐рд░реА DNS рд╡рд╛ рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб DNS рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдХреЛ рд╕рд╛рде рдПрдХ nginx рдкреНрд░рд╡реЗрд╢ рдХрдХреНрд╖рд╛ рджреЗрдЦреНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБ рдЬрд╛рди рд░рд╛рдореНрд░реЛ рд╣реБрдиреБрд╣реБрдиреНрдЫред рдЕрдиреНрдпрдерд╛, рдЗрдиреНрдЧреНрд░реЗрд╕ рдХрдиреНрдЯреНрд░реЛрд▓рд░ рд░ 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 рдорд╛ рдЕрд╕рдХреНрд╖рдо рдЧрд░рд┐рдПрдХреЛ рдЫред рддрд┐рдореА рд╕рдХреНрдЫреМ рдЖрдзрд╛рд░рднреВрдд рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╕рдХреНрд╖рдо рдЧрд░реНрдиреБрд╣реЛрд╕реН рд╡рд╛ рдЬрд╕реНрддреИ рдЕрд░реНрдХреЛ рд╡рд┐рдзрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН J.W.T.ред рддрдкрд╛рдИрдБрд▓реЗ xml рд▓реЛрдб рдЧрд░реНрди рдХрдиреНрдлрд┐рдЧрдореНрдпрд╛рдк рд░ рднреЛрд▓реНрдпреБрдорд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рд╡рд╛ рдЫрд╡рд┐рдорд╛ рдЕрд╡рд╕реНрдерд┐рдд рдлрд╛рдЗрд▓рд╣рд░реВ рд╕рдореНрдкрд╛рджрди рдЧрд░реНрди xmlstarlet (рдорд╛рдерд┐ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН), рд░ wget рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд╡рд╛ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ init рдХрдиреНрдЯреЗрдирд░ рд░ рд╕рд╛рдЭрд╛ рднреЛрд▓реНрдпреБрдо рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд▓реЛрдб рдЧрд░реНрдиреБрд╣реЛрд╕реНред

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

рдзреЗрд░реИ рдЕрдиреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдЬрд╕реНрддреИ, рдХреНрдпрд╛рдореБрдиреНрдбрд╛ BPM рд▓реЗ 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 рдЧреБрдЧрд▓ рдХреНрд▓рд╛рдЙрдб рдореЗрдореЛрд░реАрд╕реНрдЯреЛрд░рдХреЛ рдЕрдЧрд╛рдбрд┐ memcached-session-manager (рд░реЗрдбрд┐рд╕ рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫ) рдпрд╕рд▓рд╛рдИ рдЪрд▓рд╛рдЙрдиред

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

рдпрджрд┐ рддрдкрд╛рдЗрдБ рдкрд╣рд┐рд▓реЗ рдиреИ рд╕рддреНрд░рд╣рд░реВ рдмреБрдЭреНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддреНрдпрд╕рдкрдЫрд┐ Camunda BPM рдорд╛рдкрди рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдкрд╣рд┐рд▓реЛ (рд░ рдкреНрд░рд╛рдпрдГ рдЕрдиреНрддрд┐рдо) рд╕реАрдорд╛ рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ рдЬрдбрд╛рди рд╣реБрди рд╕рдХреНрдЫред рдЖрдВрд╢рд┐рдХ рдЕрдиреБрдХреВрд▓рди рдкрд╣рд┐рд▓реЗ рдиреИ рдЙрдкрд▓рдмреНрдз рдЫ "рдмрдХреНрд╕ рдмрд╛рдЯ" 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 рдХреЛ рд▓рд╛рдЧрд┐ рдХреНрдпрд╛рдореБрдиреНрдбрд╛ рд╕реЗрдЯрдЕрдкрдХреЛ рдПрдХ рд╕рд┐рдВрд╣рд╛рд╡рд▓реЛрдХрди рдкреНрд░рджрд╛рди рдЧрд░реНрдпреМрдВред

рд╕рдиреНрджрд░реНрдн

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

режрен/режрен/реирежреиреж, рдЕрдиреБрд╡рд╛рдж рд▓реЗрдЦ рдПрд▓рд┐рд╕реНрдЯрд░ рдлрд░реНрде, рд▓рд╛рд░реНрд╕ рд▓рд╛рдиреНрдЬ

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди