ื”ืจื—ื‘ืช ื•ื”ืฉืœืžื” ืฉืœ Kubernetes (ืกืงื™ืจื” ื›ืœืœื™ืช ื•ื“ื•ื— ื•ื™ื“ืื•)

ื”ืจื—ื‘ืช ื•ื”ืฉืœืžื” ืฉืœ Kubernetes (ืกืงื™ืจื” ื›ืœืœื™ืช ื•ื“ื•ื— ื•ื™ื“ืื•)

8 ื‘ืืคืจื™ืœ ื‘ื›ื ืก Saint HighLoad++ 2019, ื‘ืžืกื’ืจืช ืžื“ื•ืจ "DevOps and Operations", ื ื™ืชืŸ ื“ื•ื— "ื”ืจื—ื‘ืช ื•ื”ืฉืœืžื” ืฉืœ Kubernetes", ืฉื‘ื™ืฆื™ืจืชื• ื”ืฉืชืชืคื• ืฉืœื•ืฉื” ืขื•ื‘ื“ื™ ื—ื‘ืจืช ืคืœื ื˜. ื‘ื• ืื ื• ืžื“ื‘ืจื™ื ืขืœ ืžืฆื‘ื™ื ืจื‘ื™ื ื‘ื”ื ืจืฆื™ื ื• ืœื”ืจื—ื™ื‘ ื•ืœื”ืฉืœื™ื ืืช ื”ื™ื›ื•ืœื•ืช ืฉืœ Kubernetes, ืืš ืขื‘ื•ืจื ืœื ืžืฆืื ื• ืคืชืจื•ืŸ ืžื•ื›ืŸ ื•ืคืฉื•ื˜. ื™ืฉ ืœื ื• ืืช ื”ืคืชืจื•ื ื•ืช ื”ื“ืจื•ืฉื™ื ื‘ืฆื•ืจื” ืฉืœ ืคืจื•ื™ืงื˜ื™ื ื‘ืงื•ื“ ืคืชื•ื—, ื•ื’ื ื”ื ืื•ื ื”ื–ื” ืžื•ืงื“ืฉ ืœื”ื.

ืœืคื™ ื”ืžืกื•ืจืช, ืื ื• ืฉืžื—ื™ื ืœื”ืฆื™ื’ ืกืจื˜ื•ืŸ ื”ื“ื™ื•ื•ื— (50 ื“ืงื•ืช, ื”ืจื‘ื” ื™ื•ืชืจ ืื™ื ืคื•ืจืžื˜ื™ื‘ื™ ืžื”ืžืืžืจ) ื•ื”ืกื™ื›ื•ื ื”ืจืืฉื™ ื‘ืฆื•ืจืช ื˜ืงืกื˜. ืœืœื›ืช!

ืœื™ื‘ื” ื•ืชื•ืกืคื•ืช ื‘-K8s

Kubernetes ืžืฉื ื” ืืช ื”ืชืขืฉื™ื™ื” ื•ื”ื’ื™ืฉื•ืช ืœืžื™ื ื”ืœ ืฉื”ื•ืงืžื• ื–ื” ืžื›ื‘ืจ:

  • ืชื•ื“ื” ืœื• ื”ืคืฉื˜ื•ืช, ืื ื—ื ื• ื›ื‘ืจ ืœื ืคื•ืขืœื™ื ืขื ืžื•ืฉื’ื™ื ื›ืžื• ื”ื’ื“ืจืช ืชืฆื•ืจื” ืื• ื”ืคืขืœืช ืคืงื•ื“ื” (Chef, Ansible...), ืืœื ืžืฉืชืžืฉื™ื ื‘ืงื™ื‘ื•ืฅ ืงื•ื ื˜ื™ื™ื ืจื™ื, ืฉื™ืจื•ืชื™ื ื•ื›ื•'.
  • ืื ื—ื ื• ื™ื›ื•ืœื™ื ืœื”ื›ื™ืŸ ื™ื™ืฉื•ืžื™ื ืžื‘ืœื™ ืœื—ืฉื•ื‘ ืขืœ ื”ื ื™ื•ืื ืกื™ื ืฉืœ ืืชืจ ืกืคืฆื™ืคื™, ืขืœื™ื• ื™ื•ืฉืง: ืžืชื›ืช ื—ืฉื•ืคื”, ืขื ืŸ ืฉืœ ืื—ืช ื”ืกืคืงื™ื•ืช ื•ื›ื•'.
  • ืขื K8s ืžืขื•ืœื ืœื ื”ื™ื™ืช ื ื’ื™ืฉ ื™ื•ืชืจ ื”ืฉื™ื˜ื•ืช ื”ื˜ื•ื‘ื•ืช ื‘ื™ื•ืชืจ ืขืœ ืืจื’ื•ืŸ ืชืฉืชื™ืช: ื˜ื›ื ื™ืงื•ืช ืงื ื” ืžื™ื“ื”, ืจื™ืคื•ื™ ืขืฆืžื™, ืกื•ื‘ืœื ื•ืช ืœืชืงืœื•ืช ื•ื›ื•'.

ืขื ื–ืืช, ื›ืžื•ื‘ืŸ, ื”ื›ืœ ืœื ื›ืœ ื›ืš ื—ืœืง: Kubernetes ื’ื ื”ื‘ื™ืื” ืืชื’ืจื™ื ื—ื“ืฉื™ื ืžืฉืœื”.

ืงื•ื‘ืจื ื˜ ืœื ื”ื•ื ืงื•ืžื‘ื™ื ื” ืฉืคื•ืชืจ ืืช ื›ืœ ื”ื‘ืขื™ื•ืช ืฉืœ ื›ืœ ื”ืžืฉืชืžืฉื™ื. ื”ื’ืจืขื™ืŸ Kubernetes ืื—ืจืื™ืช ืจืง ืœืงื‘ื•ืฆื” ืฉืœ ื”ืคื•ื ืงืฆื™ื•ืช ื”ืžื™ื ื™ืžืœื™ื•ืช ื”ื”ื›ืจื—ื™ื•ืช ื”ืงื™ื™ืžื•ืช ื‘ ื›ืœ ืื—ื“ ืึถืฉืื›ึผื•ึนืœ:

ื”ืจื—ื‘ืช ื•ื”ืฉืœืžื” ืฉืœ Kubernetes (ืกืงื™ืจื” ื›ืœืœื™ืช ื•ื“ื•ื— ื•ื™ื“ืื•)

ืœื™ื‘ืช Kubernetes ืžื’ื“ื™ืจื” ืงื‘ื•ืฆื” ื‘ืกื™ืกื™ืช ืฉืœ ืคืจื™ืžื™ื˜ื™ื‘ื™ื ืœืงื™ื‘ื•ืฅ ืงื•ื ื˜ื™ื™ื ืจื™ื, ื ื™ื”ื•ืœ ืชืขื‘ื•ืจื” ื•ื›ื“ื•ืžื”. ื“ื™ื‘ืจื ื• ืขืœื™ื”ื ื‘ื™ืชืจ ืคื™ืจื•ื˜ ื‘ ื“ื™ื•ื•ื— ืœืคื ื™ ืฉื ืชื™ื™ื.

ื”ืจื—ื‘ืช ื•ื”ืฉืœืžื” ืฉืœ Kubernetes (ืกืงื™ืจื” ื›ืœืœื™ืช ื•ื“ื•ื— ื•ื™ื“ืื•)

ืžืฆื“ ืฉื ื™, K8s ืžืฆื™ืข ื”ื–ื“ืžื ื•ื™ื•ืช ื ื”ื“ืจื•ืช ืœื”ืจื—ื™ื‘ ืืช ื”ืคื•ื ืงืฆื™ื•ืช ื”ื–ืžื™ื ื•ืช, ืฉืขื•ื–ืจื•ืช ืœืกื’ื•ืจ ืื—ืจื™ื - ืกืคึผึตืฆึดื™ืคึดื™ - ืฆืจื›ื™ ื”ืžืฉืชืžืฉ. ืชื•ืกืคื•ืช ืœ-Kubernetes ื”ืŸ ื‘ืื—ืจื™ื•ืชื ืฉืœ ืžื ื”ืœื™ ืืฉื›ื•ืœื•ืช, ืฉื—ื™ื™ื‘ื™ื ืœื”ืชืงื™ืŸ ื•ืœื”ื’ื“ื™ืจ ืืช ื›ืœ ื”ื“ืจื•ืฉ ื›ื“ื™ ืฉื”ืืฉื›ื•ืœ ืฉืœื”ื ื™ื”ื™ื” "ื‘ืฆื•ืจื” ื”ื ื›ื•ื ื”" [ื›ื“ื™ ืœืคืชื•ืจ ืืช ื”ื‘ืขื™ื•ืช ื”ืกืคืฆื™ืคื™ื•ืช ืฉืœื”ื]. ื‘ืื™ื–ื” ืชื•ืกืคื•ืช ืžื“ื•ื‘ืจ? ื‘ื•ืื• ื ืกืชื›ืœ ืขืœ ื›ืžื” ื“ื•ื’ืžืื•ืช.

ื“ื•ื’ืžืื•ืช ืœืชื•ืกืคื•ืช

ืœืื—ืจ ื”ืชืงื ืช Kubernetes, ืื ื• ืขืฉื•ื™ื™ื ืœื”ื™ื•ืช ืžื•ืคืชืขื™ื ืฉื”ืจืฉืช ื”ื ื—ื•ืฆื” ื›ืœ ื›ืš ืœืื™ื ื˜ืจืืงืฆื™ื” ืฉืœ ืคื•ื“ื™ื ื”ืŸ ื‘ืชื•ืš ืฆื•ืžืช ื•ื”ืŸ ื‘ื™ืŸ ืฆืžืชื™ื ืœื ืขื•ื‘ื“ืช ื‘ืคื ื™ ืขืฆืžื”. ืœื™ื‘ืช Kubernetes ืื™ื ื” ืžื‘ื˜ื™ื—ื” ืืช ื”ื—ื™ื‘ื•ืจื™ื ื”ื“ืจื•ืฉื™ื; ื‘ืžืงื•ื ื–ืืช, ื”ื™ื ืงื•ื‘ืขืช ืืช ื”ืจืฉืช ืžืžืฉืง (CNI) ืขื‘ื•ืจ ืชื•ืกืคื•ืช ืฉืœ ืฆื“ ืฉืœื™ืฉื™. ืขืœื™ื ื• ืœื”ืชืงื™ืŸ ืื—ื“ ืžื”ืชื•ืกืคื™ื ื”ืœืœื•, ืืฉืจ ื™ื”ื™ื” ืื—ืจืื™ ืขืœ ืชืฆื•ืจืช ื”ืจืฉืช.

ื”ืจื—ื‘ืช ื•ื”ืฉืœืžื” ืฉืœ Kubernetes (ืกืงื™ืจื” ื›ืœืœื™ืช ื•ื“ื•ื— ื•ื™ื“ืื•)

ื“ื•ื’ืžื” ืงืจื•ื‘ื” ื”ื™ื ืคืชืจื•ื ื•ืช ืื—ืกื•ืŸ ื ืชื•ื ื™ื (ื“ื™ืกืง ืžืงื•ืžื™, ื”ืชืงืŸ ื—ืกื™ืžืช ืจืฉืช, Ceph...). ื‘ืชื—ื™ืœื” ื”ื ื”ื™ื• ื‘ืœื™ื‘ื”, ืื‘ืœ ืขื ื”ื•ืคืขืชื• CSI ื”ืžืฆื‘ ืžืฉืชื ื” ืœืžืฉื”ื• ื“ื•ืžื” ืœื–ื” ืฉืชื•ืืจ ื›ื‘ืจ: ื”ืžืžืฉืง ื ืžืฆื ื‘-Kubernetes, ื•ื”ื™ื™ืฉื•ื ืฉืœื• ื”ื•ื ื‘ืžื•ื“ื•ืœื™ื ืฉืœ ืฆื“ ืฉืœื™ืฉื™.

ื“ื•ื’ืžืื•ืช ืื—ืจื•ืช ื›ื•ืœืœื•ืช:

  • Ingress-ื‘ืงืจื™ื (ืจืื” ืืช ื”ื‘ื™ืงื•ืจืช ืฉืœื”ื ื‘ ื”ืžืืžืจ ื”ืื—ืจื•ืŸ ืฉืœื ื•).
  • ืžื ื”ืœ cert:

    ื”ืจื—ื‘ืช ื•ื”ืฉืœืžื” ืฉืœ Kubernetes (ืกืงื™ืจื” ื›ืœืœื™ืช ื•ื“ื•ื— ื•ื™ื“ืื•)

  • ืื•ืคืจื˜ื•ืจื™ื ื”ื•ื ืžื—ืœืงื” ืฉืœืžื” ืฉืœ ืชื•ืกืคื™ื (ื”ื›ื•ืœืœื™ื ืืช ื”-cert-manager ืฉื”ื•ื–ื›ืจ), ื”ื ืžื’ื“ื™ืจื™ื ืคืจื™ืžื™ื˜ื™ื‘ื™(ื™ื) ื•ื‘ืงืจ(ื™ื). ื”ื”ื™ื’ื™ื•ืŸ ืฉืœ ื”ืขื‘ื•ื“ื” ืฉืœื”ื ืžื•ื’ื‘ืœ ืจืง ืขืœ ื™ื“ื™ ื”ื“ืžื™ื•ืŸ ืฉืœื ื• ื•ืžืืคืฉืจ ืœื ื• ืœื”ืคื•ืš ืจื›ื™ื‘ื™ ืชืฉืชื™ืช ืžื•ื›ื ื™ื (ืœืžืฉืœ, DBMS) ืœืคืจื™ืžื™ื˜ื™ื‘ื™ื™ื, ืฉื”ืจื‘ื” ื™ื•ืชืจ ืงืœ ืœืขื‘ื•ื“ ืื™ืชื (ืžืื– ืขื ืกื˜ ืงื•ื ื˜ื™ื™ื ืจื™ื ื•ื”ื’ื“ืจื•ืช ืฉืœื”ื). ืžืกืคืจ ืขืฆื•ื ืฉืœ ืžืคืขื™ืœื™ื ื ื›ืชื‘ - ื’ื ืื ืจื‘ื™ื ืžื”ื ืขื“ื™ื™ืŸ ืœื ืžื•ื›ื ื™ื ืœื™ื™ืฆื•ืจ, ื–ื” ืจืง ืขื ื™ื™ืŸ ืฉืœ ื–ืžืŸ:

    ื”ืจื—ื‘ืช ื•ื”ืฉืœืžื” ืฉืœ Kubernetes (ืกืงื™ืจื” ื›ืœืœื™ืช ื•ื“ื•ื— ื•ื™ื“ืื•)

  • ืžื“ื“ื™ื - ื”ืžื—ืฉื” ื ื•ืกืคืช ืœืื•ืคืŸ ืฉื‘ื• Kubernetes ื”ืคืจื™ื“ื” ืืช ื”ืžืžืฉืง (Metrics API) ืžื”ื™ื™ืฉื•ื (ืชื•ืกืคื•ืช ืฉืœ ืฆื“ ืฉืœื™ืฉื™ ื›ื’ื•ืŸ ืžืชืื Prometheus, Datadog cluster agent...).
  • ืขื‘ื•ืจ ื ื™ื˜ื•ืจ ื•ืกื˜ื˜ื™ืกื˜ื™ืงื”, ืฉื‘ื• ื‘ืคื•ืขืœ ืœื ืจืง ื ื—ื•ืฆื™ื ืคืจื•ืžืชืื•ืก ื•ื’ืจืืคื ื”, ืืœื ื’ื ืงื•ื‘-ืžืฆื‘-ืžื“ื“ื™, ืฆื•ืžืช-ื™ืฆื•ืืŸ ื•ื›ื•'.

ื•ื–ื• ืœื ืจืฉื™ืžื” ืžืœืื” ืฉืœ ืชื•ืกืคื•ืช... ืœืžืฉืœ ื‘ื—ื‘ืจืช ืคืœื ื˜ ืื ื—ื ื• ืžืชืงื™ื ื™ื ื›ื™ื•ื 29 ืชื•ืกืคื•ืช (ื›ื•ืœื ื™ื•ืฆืจื™ื ื‘ืกืš ื”ื›ืœ 249 ืื•ื‘ื™ื™ืงื˜ื™ื ืฉืœ Kubernetes). ื‘ืžื™ืœื™ื ืคืฉื•ื˜ื•ืช, ืื™ื ื ื• ื™ื›ื•ืœื™ื ืœืจืื•ืช ืืช ื—ื™ื™ื• ืฉืœ ืืฉื›ื•ืœ ืœืœื ืชื•ืกืคื•ืช.

ืื•ื˜ื•ืžืฆื™ื”

ื”ืžืคืขื™ืœื™ื ื ื•ืขื“ื• ืœื‘ืฆืข ืื•ื˜ื•ืžืฆื™ื” ืฉืœ ืคืขื•ืœื•ืช ืฉื’ืจืชื™ื•ืช ืฉืื ื• ื ืชืงืœื™ื ื‘ื”ืŸ ืžื“ื™ ื™ื•ื. ืœื”ืœืŸ ื“ื•ื’ืžืื•ืช ืžื”ื—ื™ื™ื ื”ืืžื™ืชื™ื™ื ืฉื›ืชื™ื‘ืช ืื•ืคืจื˜ื•ืจ ืชื”ื™ื” ืคืชืจื•ืŸ ืžืฆื•ื™ืŸ:

  1. ื™ืฉ ืจื™ืฉื•ื ืคืจื˜ื™ (ื›ืœื•ืžืจ ื“ื•ืจืฉ ื”ืชื—ื‘ืจื•ืช) ืขื ืชืžื•ื ื•ืช ืขื‘ื•ืจ ื”ืืคืœื™ืงืฆื™ื”. ื”ื”ื ื—ื” ื”ื™ื ืฉืœื›ืœ ืคื•ื“ ืžื•ืงืฆื” ืกื•ื“ ืžื™ื•ื—ื“ ื”ืžืืคืฉืจ ืื™ืžื•ืช ื‘ืจื™ืฉื•ื. ื”ืžืฉื™ืžื” ืฉืœื ื• ื”ื™ื ืœื”ื‘ื˜ื™ื— ืฉื”ืกื•ื“ ื”ื–ื” ื ืžืฆื ื‘ืžืจื—ื‘ ื”ืฉืžื•ืช, ื›ืš ืฉื”ืคื•ื“ื™ื ื™ื•ื›ืœื• ืœื”ื•ืจื™ื“ ืชืžื•ื ื•ืช. ื™ื›ื•ืœื•ืช ืœื”ื™ื•ืช ื”ืจื‘ื” ืืคืœื™ืงืฆื™ื•ืช (ืฉื›ืœ ืื—ืช ืžื”ืŸ ืฆืจื™ื›ื” ืกื•ื“), ื•ืฉื™ืžื•ืฉื™ ืœืขื“ื›ืŸ ืืช ื”ืกื•ื“ื•ืช ืขืฆืžื ื‘ืื•ืคืŸ ืงื‘ื•ืข, ื›ืš ืฉื”ืืคืฉืจื•ืช ืœืคืจื•ืฉ ืกื•ื“ื•ืช ื‘ื™ื“ ืžืชื‘ื˜ืœืช. ื›ืืŸ ื‘ื ื”ืžืคืขื™ืœ ืœื”ืฆื™ืœ: ืื ื• ื™ื•ืฆืจื™ื ื‘ืงืจ ืฉื™ื—ื›ื” ืœื”ื•ืคืขืช ืžืจื—ื‘ ื”ืฉืžื•ืช ื•ืขืœ ืกืžืš ืื™ืจื•ืข ื–ื” ื™ื•ืกื™ืฃ ืกื•ื“ ืœืžืจื—ื‘ ื”ืฉืžื•ืช.
  2. ื›ื‘ืจื™ืจืช ืžื—ื“ืœ, ื’ื™ืฉื” ืž-pods ืœืื™ื ื˜ืจื ื˜ ืืกื•ืจื”. ืื‘ืœ ืœืคืขืžื™ื ื–ื” ืขืฉื•ื™ ืœื”ื™ื“ืจืฉ: ื–ื” ื”ื’ื™ื•ื ื™ ืฉืžื ื’ื ื•ืŸ ื”ืจืฉืืช ื”ื’ื™ืฉื” ื™ืขื‘ื•ื“ ื‘ืคืฉื˜ื•ืช, ืžื‘ืœื™ ืœื“ืจื•ืฉ ืžื™ื•ืžื ื•ื™ื•ืช ืกืคืฆื™ืคื™ื•ืช, ืœืžืฉืœ, ืขืœ ื™ื“ื™ ื ื•ื›ื—ื•ืช ืฉืœ ืชื•ื•ื™ืช ืžืกื•ื™ืžืช ื‘ืžืจื—ื‘ ื”ืฉืžื•ืช. ืื™ืš ื”ืžืคืขื™ืœ ื™ื›ื•ืœ ืœืขื–ื•ืจ ืœื ื• ื›ืืŸ? ื ื•ืฆืจ ื‘ืงืจ ื”ืžืžืชื™ืŸ ืขื“ ืฉืชื•ืคื™ืข ื”ืชื•ื•ื™ืช ื‘ืžืจื—ื‘ ื”ืฉืžื•ืช ื•ืžื•ืกื™ืฃ ืืช ื”ืžื“ื™ื ื™ื•ืช ื”ืžืชืื™ืžื” ืœื’ื™ืฉื” ืœืื™ื ื˜ืจื ื˜.
  3. ืžืฆื‘ ื“ื•ืžื”: ื ื ื™ื— ืฉื”ื™ื™ื ื• ืฆืจื™ื›ื™ื ืœื”ื•ืกื™ืฃ ืžืฉื”ื• ืžืกื•ื™ื ืœึฐื”ึทื›ืชึดื™ื, ืื ื™ืฉ ืœื• ืชื•ื•ื™ืช ื“ื•ืžื” (ืขื ืื™ื–ื•ืฉื”ื™ ืงื™ื“ื•ืžืช). ื”ืคืขื•ืœื•ืช ืขื ื”ืžืคืขื™ืœ ื‘ืจื•ืจื•ืช...

ื‘ื›ืœ ืืฉื›ื•ืœ ื™ืฉ ืœืคืชื•ืจ ืžืฉื™ืžื•ืช ืฉื’ืจืชื™ื•ืช, ื• ื ื›ื•ืŸ ื ื™ืชืŸ ืœืขืฉื•ืช ื–ืืช ื‘ืืžืฆืขื•ืช ืื•ืคืจื˜ื•ืจื™ื.

ื‘ืกื™ื›ื•ื ื›ืœ ื”ืกื™ืคื•ืจื™ื ื”ืžืชื•ืืจื™ื, ื”ื’ืขื ื• ืœืžืกืงื ื” ืฉ ืœืขื‘ื•ื“ื” ื ื•ื—ื” ื‘- Kubernetes ืืชื” ืฆืจื™ืš: ื) ืœื”ืชืงื™ืŸ ืชื•ืกืคื•ืช, ื‘) ืœืคืชื— ืžืคืขื™ืœื™ื (ืœืคืชืจื•ืŸ ืžืฉื™ืžื•ืช ื ื™ื”ื•ืœ ื™ื•ืžื™ื•ืžื™ื•ืช).

ืื™ืš ื›ื•ืชื‘ื™ื ื”ืฆื”ืจื” ืขื‘ื•ืจ Kubernetes?

ื‘ืื•ืคืŸ ื›ืœืœื™, ื”ืชื•ื›ื ื™ืช ืคืฉื•ื˜ื”:

ื”ืจื—ื‘ืช ื•ื”ืฉืœืžื” ืฉืœ Kubernetes (ืกืงื™ืจื” ื›ืœืœื™ืช ื•ื“ื•ื— ื•ื™ื“ืื•)

... ืื‘ืœ ืื– ืžืกืชื‘ืจ ืฉ:

  • ื”-API ืฉืœ Kubernetes ื”ื•ื ื“ื‘ืจ ืœื ื˜ืจื™ื•ื•ื™ืืœื™ ืฉืœื•ืงื— ื”ืจื‘ื” ื–ืžืŸ ืœืฉืœื•ื˜ ื‘ื•;
  • ื’ื ื”ืชื›ื ื•ืช ืœื ืžืชืื™ื ืœื›ื•ืœื (ืฉืคืช ื”ื’ื• ื ื‘ื—ืจื” ื›ืฉืคื” ื”ืžื•ืขื“ืคืช ื›ื™ ื™ืฉ ืœื” ืžืกื’ืจืช ืžื™ื•ื—ื“ืช - SDK ืฉืœ ืžืคืขื™ืœ);
  • ื”ืžืฆื‘ ื“ื•ืžื” ืœืžืกื’ืจืช ืขืฆืžื”.

ื”ืฉื•ืจื” ื”ืชื—ืชื•ื ื”: ืœื›ืชื•ื‘ ื‘ืงืจ (ืžืคืขื™ืœ) ื—ื™ื™ื‘ ืœื”ื•ืฆื™ื ืžืฉืื‘ื™ื ืžืฉืžืขื•ืชื™ื™ื ืœืœืžื•ื“ ื—ื•ืžืจ. ื–ื” ื™ื”ื™ื” ืžื•ืฆื“ืง ืขื‘ื•ืจ ืื•ืคืจื˜ื•ืจื™ื "ื’ื“ื•ืœื™ื" - ื ื’ื™ื“, ืขื‘ื•ืจ MySQL DBMS. ืื‘ืœ ืื ื ื–ื›ื•ืจ ืืช ื”ื“ื•ื’ืžืื•ืช ืฉืชื•ืืจื• ืœืขื™ืœ (ื’ื™ืœื•ื™ ืกื•ื“ื•ืช, ื’ื™ืฉื” ืœืคื•ื“ื™ื ืœืื™ื ื˜ืจื ื˜...), ืฉื’ื ืื ื—ื ื• ืจื•ืฆื™ื ืœืขืฉื•ืช ื–ืืช ื‘ืฆื•ืจื” ื ื›ื•ื ื”, ืื– ื ื‘ื™ืŸ ืฉื”ืžืืžืฅ ืฉื”ื•ืฉืงืข ื™ืขืœื” ืขืœ ื”ืชื•ืฆืื” ืฉืื ื• ืฆืจื™ื›ื™ื ื›ืขืช:

ื”ืจื—ื‘ืช ื•ื”ืฉืœืžื” ืฉืœ Kubernetes (ืกืงื™ืจื” ื›ืœืœื™ืช ื•ื“ื•ื— ื•ื™ื“ืื•)

ื‘ืื•ืคืŸ ื›ืœืœื™, ืžืชืขื•ืจืจืช ื“ื™ืœืžื”: ื”ืฉืงื™ืขื• ืžืฉืื‘ื™ื ืจื‘ื™ื ื•ืžืฆืื• ืืช ื”ื›ืœื™ ื”ืžืชืื™ื ืœื›ืชื™ื‘ืช ื”ืฆื”ืจื•ืช, ืื• ืขืฉื• ื–ืืช ื‘ื“ืจืš ื”ื™ืฉื ื” (ืื‘ืœ ืžื”ืจ). ื›ื“ื™ ืœืคืชื•ืจ ืืช ื–ื” - ื›ื“ื™ ืœืžืฆื•ื ืคืฉืจื” ื‘ื™ืŸ ื”ืงืฆื•ื•ืช ื”ืœืœื• - ื™ืฆืจื ื• ืคืจื•ื™ืงื˜ ืžืฉืœื ื•: ืžืคืขื™ืœ ืžืขื˜ืคืช (ืจืื” ื’ื ืฉืœื• ื”ื•ื“ืขื” ืื—ืจื•ื ื” ืขืœ ื”ืจื›ื–ืช).

ืžืคืขื™ืœ ืžืขื˜ืคืช

ืื™ืš ื”ื•ื ืขื•ื‘ื“? ืœืืฉื›ื•ืœ ื™ืฉ ืชืจืžื™ืœ ื”ืžื›ื™ืœ Go ื‘ื™ื ืืจื™ ืขื ืื•ืคืจื˜ื•ืจ ืžืขื˜ืคืช. ืœื™ื“ื• ื™ืฉ ืกื˜ ืฉืœ ื•ื•ื™ื (ืคืจื˜ื™ื ื ื•ืกืคื™ื ืขืœื™ื”ื - ืจืื” ืœืžื˜ื”). ืžืคืขื™ืœ ื”ืžืขื˜ืคืช ืขืฆืžื• ืžื ื•ื™ ืขืœ ืžืกื•ื™ืžื•ืช ืื™ืจื•ืขื™ื ื‘-Kubernetes API, ืขื ื”ืชืจื—ืฉื•ืชื• ื”ื•ื ืžืฉื™ืง ืืช ื”-hooks ื”ืžืชืื™ืžื™ื.

ืื™ืš ืžืคืขื™ืœ ื”ืคื’ื– ื™ื•ื“ืข ืœืื™ืœื• ื•ื•ื™ื ืœื”ืชืงืฉืจ ื‘ืื™ืœื• ืื™ืจื•ืขื™ื? ื”ืžื™ื“ืข ื”ื–ื” ืžื•ืขื‘ืจ ืœืžืคืขื™ืœ ื”ืžืขื˜ืคืช ืขืœ ื™ื“ื™ ื”ื•ื•ื™ื ืขืฆืžื, ื•ื”ื ืขื•ืฉื™ื ื–ืืช ื‘ืคืฉื˜ื•ืช ืจื‘ื”.

Hook ื”ื•ื ืกืงืจื™ืคื˜ Bash ืื• ื›ืœ ืงื•ื‘ืฅ ื”ืคืขืœื” ืื—ืจ ืฉืžืงื‘ืœ ืืจื’ื•ืžื ื˜ ื‘ื•ื“ื“ --config ื•ืžืฉื™ื‘ ืขื JSON. ื”ืื—ืจื•ืŸ ืงื•ื‘ืข ืื™ืœื• ื—ืคืฆื™ื ืžืขื ื™ื™ื ื™ื ืื•ืชื• ื•ืœืื™ืœื• ืื™ืจื•ืขื™ื (ืขื‘ื•ืจ ื—ืคืฆื™ื ืืœื”) ื™ืฉ ืœื”ื’ื™ื‘:

ื”ืจื—ื‘ืช ื•ื”ืฉืœืžื” ืฉืœ Kubernetes (ืกืงื™ืจื” ื›ืœืœื™ืช ื•ื“ื•ื— ื•ื™ื“ืื•)

ืื ื™ ืื“ื’ื™ื ืืช ื”ื™ื™ืฉื•ื ื‘-shell-operator ืฉืœ ืื—ืช ื”ื“ื•ื’ืžืื•ืช ืฉืœื ื• - ืคื™ืจื•ืง ืกื•ื“ื•ืช ืœื’ื™ืฉื” ืœืจื™ืฉื•ื ืคืจื˜ื™ ืขื ืชืžื•ื ื•ืช ืืคืœื™ืงืฆื™ื”. ื–ื” ืžื•ืจื›ื‘ ืžืฉื ื™ ืฉืœื‘ื™ื.

ืชืจื’ื•ืœ: 1. ื›ืชื•ื‘ ื•ื•

ืงื•ื“ื ื›ืœ, ื‘ื”ื•ืง ื ืขื‘ื“ --config, ื”ืžืฆื™ื™ืŸ ืฉืื ื• ืžืขื•ื ื™ื™ื ื™ื ื‘ืžืจื—ื‘ื™ ืฉืžื•ืช, ื•ื‘ืžื™ื•ื—ื“ ื‘ืจื’ืข ื”ื™ืฆื™ืจื” ืฉืœื”ื:

[[ $1 == "--config" ]] ; then
  cat << EOF
{
  "onKubernetesEvent": [
    {
      "kind": "namespace",
      "event": ["add"]
    }
  ]
}
EOF
โ€ฆ

ืื™ืš ื™ื™ืจืื” ื”ื”ื™ื’ื™ื•ืŸ? ื’ื ื“ื™ ืคืฉื•ื˜:

โ€ฆ
else
  createdNamespace=$(jq -r '.[0].resourceName' $BINDING_CONTEXT_PATH)
  kubectl create -n ${createdNamespace} -f - << EOF
Kind: Secret
...
EOF
fi

ื”ืฆืขื“ ื”ืจืืฉื•ืŸ ื”ื•ื ืœื’ืœื•ืช ืื™ื–ื” ืžืจื—ื‘ ืฉืžื•ืช ื ื•ืฆืจ, ื•ื”ืฉื ื™ ื”ื•ื ืœื™ืฆื•ืจ ืื•ืชื• ื‘ืืžืฆืขื•ืช kubectl ืกื•ื“ ืขื‘ื•ืจ ืžืจื—ื‘ ื”ืฉืžื•ืช ื”ื–ื”.

ืชืจื’ื•ืœ: 2. ื”ืจื›ื‘ืช ื”ืชืžื•ื ื”

ื›ืœ ืฉื ื•ืชืจ ื”ื•ื ืœื”ืขื‘ื™ืจ ืืช ื”ืงืจืก ืฉื ื•ืฆืจ ืœืžืคืขื™ืœ ื”ืžืขื˜ืคืช - ืื™ืš ืขื•ืฉื™ื ื–ืืช? ื”-Shell-operator ืขืฆืžื• ืžื’ื™ืข ื›ืชืžื•ื ืช Docker, ืื– ื”ืžืฉื™ืžื” ืฉืœื ื• ื”ื™ื ืœื”ื•ืกื™ืฃ ืืช ื”-hook ืœืกืคืจื™ื™ื” ืžื™ื•ื—ื“ืช ื‘ืชืžื•ื ื” ื”ื–ื•:

FROM flant/shell-operator:v1.0.0-beta.1
ADD my-handler.sh /hooks

ื›ืœ ืžื” ืฉื ื•ืชืจ ื”ื•ื ืœื”ืจื›ื™ื‘ ืื•ืชื• ื•ืœื“ื—ื•ืฃ ืื•ืชื•:

$ docker build -t registry.example.com/my-operator:v1 .
$ docker push registry.example.com/my-operator:v1

ื”ืžื’ืข ื”ืื—ืจื•ืŸ ื”ื•ื ืœืคืจื•ืก ืืช ื”ืชืžื•ื ื” ืœืืฉื›ื•ืœ. ื›ื“ื™ ืœืขืฉื•ืช ื–ืืช, ื‘ื•ืื• ื ื›ืชื•ื‘ ืคึผึฐืจึดื™ืกึธื”:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: my-operator
spec:
  template:
    spec:
      containers:
      - name: my-operator
        image: registry.example.com/my-operator:v1 # 1
      serviceAccountName: my-operator              # 2

ื™ืฉ ืœืฉื™ื ืœื‘ ืœืฉืชื™ ื ืงื•ื“ื•ืช:

  1. ืื™ื ื“ื™ืงืฆื™ื” ืฉืœ ื”ืชืžื•ื ื” ื”ื—ื“ืฉื” ืฉื ื•ืฆืจื”;
  2. ื–ื”ื• ืจื›ื™ื‘ ืžืขืจื›ืช ืฉ(ืœื›ืœ ื”ืคื—ื•ืช) ื–ืงื•ืง ืœื”ืจืฉืื•ืช ืœื”ื™ืจืฉื ืœืื™ืจื•ืขื™ื ื‘-Kubernetes ื•ืœื”ืงืฆืืช ืกื•ื“ื•ืช ืœืžืจื—ื‘ื™ ืฉืžื•ืช, ื•ืœื›ืŸ ืื ื• ื™ื•ืฆืจื™ื ServiceAccount (ื•ืžืขืจื›ืช ื›ืœืœื™ื) ืขื‘ื•ืจ ื”-hook.

ืชื•ืฆืื” - ืคืชืจื ื• ืืช ื”ื‘ืขื™ื” ืฉืœื ื• ืงืจื•ื‘ื™ ืžืฉืคื—ื” ืขื‘ื•ืจ Kubernetes ื‘ืื•ืคืŸ ืฉื™ื•ืฆืจ ืื•ืคืจื˜ื•ืจ ืœืคื™ืจื•ืง ืกื•ื“ื•ืช.

ืชื›ื•ื ื•ืช ืื—ืจื•ืช ืฉืœ ืžืคืขื™ืœ ืžืขื˜ืคืช

ื›ื“ื™ ืœื”ื’ื‘ื™ืœ ืืช ื”ืื•ื‘ื™ื™ืงื˜ื™ื ืžื”ืกื•ื’ ืฉื‘ื—ืจืช ืฉื”ื•ื• ื™ืขื‘ื•ื“ ืื™ืชื, ื ื™ืชืŸ ืœืกื ืŸ ืื•ืชื, ื‘ื—ื™ืจื” ืœืคื™ ืชื•ื•ื™ื•ืช ืžืกื•ื™ืžื•ืช (ืื• ื‘ืืžืฆืขื•ืช matchExpressions):

"onKubernetesEvent": [
  {
    "selector": {
      "matchLabels": {
        "foo": "bar",
       },
       "matchExpressions": [
         {
           "key": "allow",
           "operation": "In",
           "values": ["wan", "warehouse"],
         },
       ],
     }
     โ€ฆ
  }
]

ืžืกื•ืคืง ืžื ื’ื ื•ืŸ ืžื ื™ืขืช ื›ืคื™ืœื•ืช, ืืฉืจ - ื‘ืืžืฆืขื•ืช ืžืกื ืŸ jq - ืžืืคืฉืจ ืœื”ืžื™ืจ ืื•ื‘ื™ื™ืงื˜ื™ JSON ื’ื“ื•ืœื™ื ืœืงื˜ื ื™ื, ืฉื‘ื”ื ื ื•ืชืจื• ืจืง ืื•ืชื ืคืจืžื˜ืจื™ื ืฉืื ื• ืจื•ืฆื™ื ืœืขืงื•ื‘ ืื—ืจ ืฉื™ื ื•ื™ื™ื.

ื›ืืฉืจ ื ืงืจื ื”ื•ืง, ืžืคืขื™ืœ ื”ืคื’ื– ืขื•ื‘ืจ ืื•ืชื• ื ืชื•ื ื™ ืื•ื‘ื™ื™ืงื˜, ืืฉืจ ื™ื›ื•ืœ ืœืฉืžืฉ ืœื›ืœ ืฆื•ืจืš.

ื”ืื™ืจื•ืขื™ื ืฉืžืคืขื™ืœื™ื ื”ื•ืงืก ืื™ื ื ืžื•ื’ื‘ืœื™ื ืœืื™ืจื•ืขื™ Kubernetes: ื”-Shell-operator ืžืกืคืง ืชืžื™ื›ื” ืขื‘ื•ืจ ื•ื•ื™ื ืงื•ืจื ืœืคื™ ื–ืžืŸ (ื‘ื“ื•ืžื” ืœ-crontab ื‘ืœื•ื— ื–ืžื ื™ื ืžืกื•ืจืชื™), ื›ืžื• ื’ื ืื™ืจื•ืข ืžื™ื•ื—ื“ ื‘ื”ืคืขืœื”. ื ื™ืชืŸ ืœืฉืœื‘ ืืช ื›ืœ ื”ืื™ืจื•ืขื™ื ื”ืœืœื• ื•ืœื”ืงืฆื•ืช ืื•ืชื ืœืื•ืชื• ื”ื•ืง.

ื•ืขื•ื“ ืฉืชื™ ืชื›ื•ื ื•ืช ืฉืœ ืžืคืขื™ืœ ื”ืžืขื˜ืคืช:

  1. ื–ื” ืขื•ื‘ื“ ื‘ืื•ืคืŸ ืืกื™ื ื›ืจื•ื ื™. ืžื›ื™ื•ื•ืŸ ืฉื”ืชืงื‘ืœ ืื™ืจื•ืข Kubernetes (ื›ื’ื•ืŸ ืื•ื‘ื™ื™ืงื˜ ืฉื ื•ืฆืจ), ืื™ืจื•ืขื™ื ืื—ืจื™ื (ื›ื’ื•ืŸ ืื•ืชื• ืื•ื‘ื™ื™ืงื˜ ืฉื ืžื—ืง) ื™ื›ืœื• ืœื”ืชืจื—ืฉ ื‘ืืฉื›ื•ืœ, ื•ื”-hooks ืฆืจื™ืš ืœืชืช ืืช ื”ื“ืขืช ืขืœ ื›ืš. ืื ื”-hook ื‘ื•ืฆืข ืขื ืฉื’ื™ืื”, ืื– ื›ื‘ืจื™ืจืช ืžื—ื“ืœ ื–ื” ื™ื”ื™ื” ืœึดื–ื›ึผื•ึนืจ ืขื“ ืœื”ืฉืœืžื” ืžื•ืฆืœื—ืช (ื ื™ืชืŸ ืœืฉื ื•ืช ื”ืชื ื”ื’ื•ืช ื–ื•).
  2. ื–ื” ืžื™ื™ืฆื ืžื“ื“ื™ื ืขื‘ื•ืจ Prometheus, ืฉืื™ืชื• ืืชื” ื™ื›ื•ืœ ืœื”ื‘ื™ืŸ ืื ื”-Shell-operator ืขื•ื‘ื“, ื’ืœื” ืืช ืžืกืคืจ ื”ืฉื’ื™ืื•ืช ืขื‘ื•ืจ ื›ืœ ื•ื• ื•ืืช ื’ื•ื“ืœ ื”ืชื•ืจ ื”ื ื•ื›ื—ื™.

ืœืกื™ื›ื•ื ื—ืœืง ื–ื” ืฉืœ ื”ื“ื•"ื—:

ื”ืจื—ื‘ืช ื•ื”ืฉืœืžื” ืฉืœ Kubernetes (ืกืงื™ืจื” ื›ืœืœื™ืช ื•ื“ื•ื— ื•ื™ื“ืื•)

ื”ืชืงื ืช ืชื•ืกืคื•ืช

ืœืขื‘ื•ื“ื” ื ื•ื—ื” ืขื Kubernetes, ื”ื•ื–ื›ืจ ื’ื ื”ืฆื•ืจืš ื‘ื”ืชืงื ืช ืชื•ืกืคื•ืช. ืื ื™ ืืกืคืจ ืœืš ืขืœ ื–ื” ื‘ืืžืฆืขื•ืช ื”ื“ื•ื’ืžื” ืฉืœ ื”ื“ืจืš ืฉืœ ื”ื—ื‘ืจื” ืฉืœื ื• ืื™ืš ืื ื—ื ื• ืขื•ืฉื™ื ืืช ื–ื” ืขื›ืฉื™ื•.

ื”ืชื—ืœื ื• ืœืขื‘ื•ื“ ืขื Kubernetes ืขื ืžืกืคืจ ืืฉื›ื•ืœื•ืช, ืฉื”ืชื•ืกืคืช ื”ื™ื—ื™ื“ื” ืืœื™ื”ื ื”ื™ื™ืชื” Ingress. ื”ื™ื” ืฆื•ืจืš ืœื”ืชืงื™ืŸ ืื•ืชื• ื‘ืฆื•ืจื” ืฉื•ื ื” ื‘ื›ืœ ืืฉื›ื•ืœ, ื•ื™ืฆืจื ื• ืžืกืคืจ ืชืฆื•ืจื•ืช YAML ืขื‘ื•ืจ ืกื‘ื™ื‘ื•ืช ืฉื•ื ื•ืช: ืžืชื›ืช ื—ืฉื•ืคื”, AWS...

ื›ื›ืœ ืฉื”ื™ื• ื™ื•ืชืจ ืืฉื›ื•ืœื•ืช, ื”ื™ื• ื™ื•ืชืจ ืชืฆื•ืจื•ืช. ื‘ื ื•ืกืฃ, ืฉื™ืคืจื ื• ืืช ื”ืชืฆื•ืจื•ืช ื”ืœืœื• ืขืฆืžืŸ, ื•ื›ืชื•ืฆืื” ืžื›ืš ื”ืŸ ื”ืคื›ื• ืœื”ื˜ืจื•ื’ื ื™ื•ืช ืœืžื“ื™:

ื”ืจื—ื‘ืช ื•ื”ืฉืœืžื” ืฉืœ Kubernetes (ืกืงื™ืจื” ื›ืœืœื™ืช ื•ื“ื•ื— ื•ื™ื“ืื•)

ื›ื“ื™ ืœืขืฉื•ืช ืกื“ืจ, ื”ืชื—ืœื ื• ืขื ืชืกืจื™ื˜ (install-ingress.sh), ืฉืœืงื— ื›ื˜ื™ืขื•ืŸ ืืช ืกื•ื’ ื”ืืฉื›ื•ืœ ืฉืืœื™ื• ื ืคืจื•ืก, ื™ืฆืจ ืืช ืชืฆื•ืจืช ื”-YAML ื”ื ื—ื•ืฆื” ื•ื’ืœื’ืœ ืื•ืชื” ืืœ Kubernetes.

ื‘ืงื™ืฆื•ืจ, ื”ื“ืจืš ื”ื ื•ืกืคืช ืฉืœื ื• ื•ื”ื”ื™ื’ื™ื•ืŸ ื”ืงืฉื•ืจ ื‘ื” ื”ื™ื• ื›ื“ืœืงืžืŸ:

  • ื›ื“ื™ ืœืขื‘ื•ื“ ืขื ืชืฆื•ืจื•ืช YAML, ื ื“ืจืฉ ืžื ื•ืข ืชื‘ื ื™ืช (ื‘ืฉืœื‘ื™ื ื”ืจืืฉื•ื ื™ื ื–ื” ืคืฉื•ื˜ ืกื“);
  • ืขื ื”ื’ื™ื“ื•ืœ ื‘ืžืกืคืจ ื”ืืฉื›ื•ืœื•ืช, ื”ื’ื™ืข ื”ืฆื•ืจืš ื‘ืขื“ื›ื•ืŸ ืื•ื˜ื•ืžื˜ื™ (ื”ืคืชืจื•ืŸ ื”ืžื•ืงื“ื ื‘ื™ื•ืชืจ ื”ื™ื” ืœืฉื™ื ืืช ื”ืกืงืจื™ืคื˜ ื‘-Git, ืœืขื“ื›ืŸ ืื•ืชื• ื‘ืืžืฆืขื•ืช cron ื•ืœื”ืคืขื™ืœ ืื•ืชื•);
  • ื ื“ืจืฉ ืชืกืจื™ื˜ ื“ื•ืžื” ืขื‘ื•ืจ ืคืจื•ืžืชืื•ืก (install-prometheus.sh), ืขื ื–ืืช, ื–ื” ื‘ื•ืœื˜ ื‘ืขื•ื‘ื“ื” ืฉื”ื•ื ื“ื•ืจืฉ ื”ืจื‘ื” ื™ื•ืชืจ ื ืชื•ื ื™ ืงืœื˜, ื›ืžื• ื’ื ื”ืื—ืกื•ืŸ ืฉืœื”ื (ื‘ืฆื•ืจื” ื˜ื•ื‘ื” - ืžืจื•ื›ื–ืช ื•ื‘ืืฉื›ื•ืœ), ื•ื—ืœืง ืžื”ื ืชื•ื ื™ื (ืกื™ืกืžืื•ืช) ื™ื›ื•ืœื™ื ืœื”ื™ื•ื•ืฆืจ ื‘ืื•ืคืŸ ืื•ื˜ื•ืžื˜ื™:

    ื”ืจื—ื‘ืช ื•ื”ืฉืœืžื” ืฉืœ Kubernetes (ืกืงื™ืจื” ื›ืœืœื™ืช ื•ื“ื•ื— ื•ื™ื“ืื•)

  • ื”ืกื™ื›ื•ืŸ ืœื”ืคื™ืฅ ืžืฉื”ื• ืœื ื‘ืกื“ืจ ืœืžืกืคืจ ื’ื“ืœ ื•ื”ื•ืœืš ืฉืœ ืืฉื›ื•ืœื•ืช ื’ื“ืœ ื›ืœ ื”ื–ืžืŸ, ืื– ื”ื‘ื ื• ืฉืžืชืงื™ื ื™ื (ื›ืœื•ืžืจ ืฉื ื™ ืกืงืจื™ืคื˜ื™ื: ืขื‘ื•ืจ Ingress ื•-Prometheus) ื”ื™ื” ืฆื•ืจืš ื‘ืกื˜ื™ื™ื’'ื™ื ื’ (ืžืกืคืจ ืกื ื™ืคื™ื ื‘-Git, ืžืกืคืจ ืงืจื•ื ื™ื ื›ื“ื™ ืœืขื“ื›ืŸ ืื•ืชื ื‘ื”ืชืืžื”: ื™ืฆื™ื‘ื•ืช ืื• ืืฉื›ื•ืœื•ืช ื‘ื“ื™ืงื”);
  • ั kubectl apply ื–ื” ื”ืคืš ืœื”ื™ื•ืช ืงืฉื” ืœืขื‘ื•ื“ ืื™ืชื• ื›ื™ ื–ื” ืœื ื”ืฆื”ืจืชื™ ื•ื”ื•ื ื™ื›ื•ืœ ืœื™ืฆื•ืจ ืจืง ืื•ื‘ื™ื™ืงื˜ื™ื, ืื‘ืœ ืœื ืœืงื‘ืœ ื”ื—ืœื˜ื•ืช ืขืœ ืžืขืžื“ื/ืœืžื—ื•ืง ืื•ืชื;
  • ื”ื™ื• ื—ืกืจื•ืช ืœื ื• ื›ืžื” ืคื•ื ืงืฆื™ื•ืช ืฉืœื ื™ื™ืฉืžื ื• ื›ืœืœ ื‘ืื•ืชื• ื–ืžืŸ:
    • ืฉืœื™ื˜ื” ืžืœืื” ืขืœ ื”ืชื•ืฆืื” ืฉืœ ืขื“ื›ื•ื ื™ ืืฉื›ื•ืœื•ืช,
    • ืงื‘ื™ืขื” ืื•ื˜ื•ืžื˜ื™ืช ืฉืœ ื›ืžื” ืคืจืžื˜ืจื™ื (ืงืœื˜ ืขื‘ื•ืจ ืกืงืจื™ืคื˜ื™ื ืœื”ืชืงื ื”) ืขืœ ืกืžืš ื ืชื•ื ื™ื ืฉื ื™ืชืŸ ืœืงื‘ืœ ืžื”ืืฉื›ื•ืœ (ื’ื™ืœื•ื™),
    • ื”ืชืคืชื—ื•ืชื• ื”ืœื•ื’ื™ืช ื‘ืฆื•ืจื” ืฉืœ ื’ื™ืœื•ื™ ืžืชืžืฉืš.

ืืช ื›ืœ ื”ื ื™ืกื™ื•ืŸ ื”ืžืฆื˜ื‘ืจ ื”ื–ื” ื™ื™ืฉืžื ื• ื‘ืžืกื’ืจืช ื”ืคืจื•ื™ืงื˜ ื”ืื—ืจ ืฉืœื ื• - ืžืคืขื™ืœ addon.

ืžืคืขื™ืœ ืชื•ืกืฃ

ื–ื” ืžื‘ื•ืกืก ืขืœ ืžืคืขื™ืœ ื”ืžืขื˜ืคืช ืฉื›ื‘ืจ ื”ื•ื–ื›ืจ. ื›ืœ ื”ืžืขืจื›ืช ื ืจืื™ืช ื›ืš:

ื”ื“ื‘ืจื™ื ื”ื‘ืื™ื ืžืชื•ื•ืกืคื™ื ืœื•ื•ื™ ืžืคืขื™ืœื™ ื”ืžืขื˜ืคืช:

  • ืื—ืกื•ืŸ ืขืจื›ื™ื,
  • ืชืจืฉื™ื ื”ื’ื”,
  • ืžืจื›ื™ื‘ ื–ื” ืขื•ืงื‘ ืื—ืจ ืžืื’ืจ ื”ืขืจื›ื™ื ื•ื‘ืžืงืจื” ืฉืœ ืฉื™ื ื•ื™ื™ื ื›ืœืฉื”ื - ืžื‘ืงืฉ ืžื”ืœื ืœื’ืœื’ืœ ืžื—ื“ืฉ ืืช ื”ืชืจืฉื™ื.

ื”ืจื—ื‘ืช ื•ื”ืฉืœืžื” ืฉืœ Kubernetes (ืกืงื™ืจื” ื›ืœืœื™ืช ื•ื“ื•ื— ื•ื™ื“ืื•)

ื›ืš, ื ื•ื›ืœ ืœื”ื’ื™ื‘ ืœืื™ืจื•ืข ื‘-Kubernetes, ืœื”ืฉื™ืง ื”ื•ืง, ื•ืžืชื•ืš ื”ื•ืง ื–ื” ื ื•ื›ืœ ืœื‘ืฆืข ืฉื™ื ื•ื™ื™ื ื‘ืื—ืกื•ืŸ, ื•ืœืื—ืจ ืžื›ืŸ ื™ื•ืจื™ื“ ื”ืชืจืฉื™ื ืžื—ื“ืฉ. ื‘ืชืจืฉื™ื ื”ืžืชืงื‘ืœ, ืื ื• ืžืคืจื™ื“ื™ื ืืช ืงื‘ื•ืฆืช ื”ื•ื•ื™ื ื•ื”ืชืจืฉื™ื ืœืจื›ื™ื‘ ืื—ื“, ืฉืื ื• ืงื•ืจืื™ื ืœื• ืžื•ื“ื•ืœ:

ื”ืจื—ื‘ืช ื•ื”ืฉืœืžื” ืฉืœ Kubernetes (ืกืงื™ืจื” ื›ืœืœื™ืช ื•ื“ื•ื— ื•ื™ื“ืื•)

ื™ื›ื•ืœื™ื ืœื”ื™ื•ืช ืžื•ื“ื•ืœื™ื ืจื‘ื™ื, ื•ืืœื™ื”ื ืื ื—ื ื• ืžื•ืกื™ืคื™ื ื•ื•ื™ื ื’ืœื•ื‘ืœื™ื™ื, ื—ื ื•ืช ืขืจื›ื™ื ื’ืœื•ื‘ืœื™ืช ื•ืจื›ื™ื‘ ืฉืžื ื˜ืจ ืืช ื”ื—ื ื•ืช ื”ื’ืœื•ื‘ืœื™ืช ื”ื–ื•.

ืขื›ืฉื™ื•, ื›ืฉืžืฉื”ื• ืงื•ืจื” ื‘-Kubernetes, ืื ื—ื ื• ื™ื›ื•ืœื™ื ืœื”ื’ื™ื‘ ืืœื™ื• ื‘ืืžืฆืขื•ืช ื”ื•ืง ืขื•ืœืžื™ ื•ืœืฉื ื•ืช ืžืฉื”ื• ื‘ื—ื ื•ืช ื”ื’ืœื•ื‘ืœื™ืช. ื”ืฉื™ื ื•ื™ ื”ื–ื” ื™ื•ืจื’ืฉ ื•ื™ื’ืจื•ื ืœื›ืœ ื”ืžื•ื“ื•ืœื™ื ื‘ืืฉื›ื•ืœ ืœื”ืชื’ืœื’ืœ:

ื”ืจื—ื‘ืช ื•ื”ืฉืœืžื” ืฉืœ Kubernetes (ืกืงื™ืจื” ื›ืœืœื™ืช ื•ื“ื•ื— ื•ื™ื“ืื•)

ืกื›ื™ืžื” ื–ื• ืขื•ื ื” ืขืœ ื›ืœ ื”ื“ืจื™ืฉื•ืช ืœื”ืชืงื ืช ืชื•ืกืคื•ืช ืฉืฆื•ื™ื ื• ืœืขื™ืœ:

  • ื”ืœื ืื—ืจืื™ ืขืœ ืชื‘ื ื™ื•ืช ื•ื”ืฆื”ืจื•ืช.
  • ื‘ืขื™ื™ืช ื”ืขื“ื›ื•ืŸ ื”ืื•ื˜ื•ืžื˜ื™ ื ืคืชืจื” ื‘ืืžืฆืขื•ืช ื”ื•ืง ืขื•ืœืžื™, ืฉืขื•ื‘ืจ ืœืจื™ืฉื•ื ืœืคื™ ืœื•ื— ื–ืžื ื™ื, ื•ืื ื”ื•ื ืจื•ืื” ืฉื ืชืžื•ื ืช ืžืขืจื›ืช ื—ื“ืฉื”, ืžื’ืœื’ืœ ืื•ืชื” (ื›ืœื•ืžืจ "ืขืฆืžื”").
  • ืื—ืกื•ืŸ ื”ื’ื“ืจื•ืช ื‘ืืฉื›ื•ืœ ืžื™ื•ืฉื ื‘ืืžืฆืขื•ืช ConfigMap, ื”ืžื›ื™ืœ ืืช ื”ื ืชื•ื ื™ื ื”ืขื™ืงืจื™ื™ื ืขื‘ื•ืจ ื”ืื—ืกื•ืŸ (ื‘ืืชื—ื•ืœ ื”ื ื ื˜ืขื ื™ื ืœืื—ืกื•ืŸ).
  • ื‘ืขื™ื•ืช ื‘ื™ืฆื™ืจืช ืกื™ืกืžืื•ืช, ื’ื™ืœื•ื™ ื•ื’ื™ืœื•ื™ ืžืชืžืฉืš ื ืคืชืจื• ื‘ืืžืฆืขื•ืช ื”ื•ืงืก.
  • ื”ื‘ืžื” ืžื•ืฉื’ืช ื”ื•ื“ื•ืช ืœืชื’ื™ื•ืช, ืฉื‘ื”ืŸ Docker ืชื•ืžืš ืžื—ื•ืฅ ืœืงื•ืคืกื”.
  • ื”ืชื•ืฆืื” ืžื ื•ื˜ืจืช ื‘ืืžืฆืขื•ืช ืžื“ื“ื™ื ืฉื‘ืืžืฆืขื•ืชื ื ื•ื›ืœ ืœื”ื‘ื™ืŸ ืืช ื”ืžืฆื‘.

ื›ืœ ื”ืžืขืจื›ืช ื”ื–ื• ืžื™ื•ืฉืžืช ื‘ืฆื•ืจื” ืฉืœ ื‘ื™ื ืืจื™ ื‘ื•ื“ื“ ื‘-Go, ืฉื ืงืจื addon-operator. ื–ื” ื’ื•ืจื ืœืชืจืฉื™ื ืœื”ื™ืจืื•ืช ืคืฉื•ื˜ ื™ื•ืชืจ:

ื”ืจื—ื‘ืช ื•ื”ืฉืœืžื” ืฉืœ Kubernetes (ืกืงื™ืจื” ื›ืœืœื™ืช ื•ื“ื•ื— ื•ื™ื“ืื•)

ื”ืžืจื›ื™ื‘ ื”ืขื™ืงืจื™ ื‘ืชืจืฉื™ื ื–ื” ื”ื•ื ืกื˜ ืฉืœ ืžื•ื“ื•ืœื™ื (ืžื•ื“ื’ืฉ ื‘ืืคื•ืจ ืœืžื˜ื”). ื›ืขืช ื ื•ื›ืœ ืœื›ืชื•ื‘ ืžื•ื“ื•ืœ ืœืชื•ืกืคืช ื”ื ื“ืจืฉืช ื‘ืžืขื˜ ืžืืžืฅ ื•ืœื”ื™ื•ืช ื‘ื˜ื•ื—ื™ื ืฉื”ื•ื ื™ื•ืชืงืŸ ื‘ื›ืœ ืืฉื›ื•ืœ, ื™ืขื•ื“ื›ืŸ ื•ื™ื’ื™ื‘ ืœืื™ืจื•ืขื™ื ื”ื“ืจื•ืฉื™ื ืœื• ื‘ืืฉื›ื•ืœ.

ืฉื™ืžื•ืฉื™ื ืฉืœ "ืคืœื ื˜". ืžืคืขื™ืœ addon ืขืœ 70+ ืืฉื›ื•ืœื•ืช Kubernetes. ืžืฆื‘ ื ื•ื›ื—ื™ - ื’ืจืกืช ืืœืคื. ื›ืขืช ืื ื• ืžื›ื™ื ื™ื ืชื™ืขื•ื“ ืœืฉื—ืจื•ืจ ื”ื‘ื˜ื, ืืš ืœืขืช ืขืชื” ื‘ืžืื’ืจ ื“ื•ื’ืžืื•ืช ื–ืžื™ื ื•ืช, ืฉืขืœ ื‘ืกื™ืกื• ืชื•ื›ืœ ืœื™ืฆื•ืจ ืชื•ืกืฃ ืžืฉืœืš.

ื”ื™ื›ืŸ ืื ื™ ื™ื›ื•ืœ ืœื”ืฉื™ื’ ืืช ื”ืžื•ื“ื•ืœื™ื ืขื‘ื•ืจ addon-operator? ืคืจืกื•ื ื”ืกืคืจื™ื™ื” ืฉืœื ื• ื”ื•ื ื”ืฉืœื‘ ื”ื‘ื ืขื‘ื•ืจื ื•; ืื ื—ื ื• ืžืชื›ื ื ื™ื ืœืขืฉื•ืช ื–ืืช ื‘ืงื™ืฅ.

ืกืจื˜ื•ื ื™ื ื•ืฉืงื•ืคื™ื•ืช

ืกืจื˜ื•ืŸ ืžื”ื”ื•ืคืขื” (~50 ื“ืงื•ืช):

ื”ืฆื’ืช ื”ื“ื•"ื—:

ื .ื‘.

ื“ื™ื•ื•ื—ื™ื ื ื•ืกืคื™ื ื‘ื‘ืœื•ื’ ืฉืœื ื•:

ื™ื™ืชื›ืŸ ืฉืชืชืขื ื™ื™ืŸ ื’ื ื‘ืคืจืกื•ืžื™ื ื”ื‘ืื™ื:

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”