GitOps: ื”ืฉื•ื•ืื” ืฉืœ ืฉื™ื˜ื•ืช ืžืฉื™ื›ื” ื•ื“ื—ื™ืคื”

ื”ืขืจื”. ืชืจื’ื•ื: ื‘ืงื”ื™ืœืช Kubernetes, ื˜ืจื ื“ ื‘ืฉื GitOps ืฆื•ื‘ืจ ืคื•ืคื•ืœืจื™ื•ืช ื‘ืจื•ืจื”, ื›ืคื™ ืฉืจืื™ื ื• ื‘ืื•ืคืŸ ืื™ืฉื™, ืžื‘ืงืจ KubeCon Europe 2019. ื”ืžื•ื ื— ื”ื–ื” ื”ื™ื” ื™ื—ืกื™ืช ื—ื“ืฉ ื‘ื“ื•ื™ ืขืœ ื™ื“ื™ ืจืืฉ Weaveworks - ืืœื›ืกื™ืก ืจื™ืฆ'ืจื“ืกื•ืŸ - ื•ื”ื›ื•ื•ื ื” ื”ื™ื ืœืฉื™ืžื•ืฉ ื‘ื›ืœื™ื ื”ืžื•ื›ืจื™ื ืœืžืคืชื—ื™ื (ื‘ืขื™ืงืจ Git, ื•ืžื›ืืŸ ื”ืฉื) ื›ื“ื™ ืœืคืชื•ืจ ื‘ืขื™ื•ืช ืชืคืขื•ืœื™ื•ืช. ื‘ืคืจื˜, ืื ื—ื ื• ืžื“ื‘ืจื™ื ืขืœ ื”ืคืขื•ืœื” ืฉืœ Kubernetes ืขืœ ื™ื“ื™ ืื—ืกื•ืŸ ื”ืชืฆื•ืจื•ืช ืฉืœื” ื‘-Git ื•ื”ืคืฆื” ืื•ื˜ื•ืžื˜ื™ืช ืฉืœ ืฉื™ื ื•ื™ื™ื ืœืืฉื›ื•ืœ. Matthias Jg ืžื“ื‘ืจ ืขืœ ืฉืชื™ ื’ื™ืฉื•ืช ืœื”ืคืฆื” ื–ื• ื‘ืžืืžืจ ื–ื”.

GitOps: ื”ืฉื•ื•ืื” ืฉืœ ืฉื™ื˜ื•ืช ืžืฉื™ื›ื” ื•ื“ื—ื™ืคื”

ื‘ืฉื ื” ืฉืขื‘ืจื”, (ืœืžืขืฉื”, ืจืฉืžื™ืช ื–ื” ืงืจื” ื‘ืื•ื’ื•ืกื˜ 2017 - ื‘ืขืจืš ืชืจื’ื•ื) ื™ืฉื ื” ื’ื™ืฉื” ื—ื“ืฉื” ืœืคืจื™ืกืช ื™ื™ืฉื•ืžื™ื ื‘-Kubernetes. ื–ื” ื ืงืจื GitOps, ื•ื”ื•ื ืžื‘ื•ืกืก ืขืœ ื”ืจืขื™ื•ืŸ ื”ื‘ืกื™ืกื™ ืœืคื™ื• ื’ืจืกืื•ืช ืคืจื™ืกื” ืขื•ืงื‘ื•ืช ื‘ืกื‘ื™ื‘ื” ื”ืžืื•ื‘ื˜ื—ืช ืฉืœ ืžืื’ืจ Git.

ื”ื™ืชืจื•ื ื•ืช ื”ืขื™ืงืจื™ื™ื ืฉืœ ื’ื™ืฉื” ื–ื• ื”ื ื›ื“ืœืงืžืŸ::

  1. ื ื™ื”ื•ืœ ื’ืจืกืื•ืช ืฉืœ ืคืจื™ืกื” ื•ื”ื™ืกื˜ื•ืจื™ื™ืช ืฉื™ื ื•ื™ื™ื. ื”ืžืฆื‘ ืฉืœ ื”ืืฉื›ื•ืœ ื›ื•ืœื• ืžืื•ื—ืกืŸ ื‘ืžืื’ืจ Git, ื•ื”ืคืจื™ืกื” ืžืชืขื“ื›ื ืช ืจืง ื‘ืืžืฆืขื•ืช commits. ื‘ื ื•ืกืฃ, ื ื™ืชืŸ ืœืขืงื•ื‘ ืื—ืจ ื›ืœ ื”ืฉื™ื ื•ื™ื™ื ื‘ืืžืฆืขื•ืช ื”ื™ืกื˜ื•ืจื™ื™ืช ื”ื”ืชื—ื™ื™ื‘ื•ื™ื•ืช.
  2. ื‘ื™ื˜ื•ืœื™ื ื‘ืืžืฆืขื•ืช ืคืงื•ื“ื•ืช Git ืžื•ื›ืจื•ืช... ืžื™ืฉื•ืจ git reset ืžืืคืฉืจ ืœืš ืœืืคืก ืฉื™ื ื•ื™ื™ื ื‘ืคืจื™ืกื•ืช; ืžื“ื™ื ื•ืช ืขื‘ืจ ื–ืžื™ื ื•ืช ืชืžื™ื“.
  3. ื‘ืงืจืช ื’ื™ืฉื” ืžื•ื›ื ื”. ื‘ื“ืจืš ื›ืœืœ, ืžืขืจื›ืช Git ืžื›ื™ืœื” ื”ืจื‘ื” ื ืชื•ื ื™ื ืจื’ื™ืฉื™ื, ื•ืœื›ืŸ ืจื•ื‘ ื”ื—ื‘ืจื•ืช ืžืงื“ื™ืฉื•ืช ืชืฉื•ืžืช ืœื‘ ืžื™ื•ื—ื“ืช ืœื”ื’ื ื” ืขืœื™ื”. ื‘ื”ืชืื, ื”ื’ื ื” ื–ื• ื—ืœื” ื’ื ืขืœ ืคืขื•ืœื•ืช ืขื ืคืจื™ืกื•ืช.
  4. ืžื“ื™ื ื™ื•ืช ืœืคืจื™ืกื•ืช. ืจื•ื‘ ืžืขืจื›ื•ืช Git ืชื•ืžื›ื•ืช ื‘ืื•ืคืŸ ืžืงื•ืจื™ ื‘ืžื“ื™ื ื™ื•ืช ืกื ื™ืฃ ืื—ืจ ืกื ื™ืฃ - ืœื“ื•ื’ืžื”, ืจืง ื‘ืงืฉื•ืช ืžืฉื™ื›ื” ื™ื›ื•ืœื•ืช ืœืขื“ื›ืŸ ืืช ื”ืžืืกื˜ืจ, ื•ืฉื™ื ื•ื™ื™ื ื—ื™ื™ื‘ื™ื ืœื”ื™ื‘ื“ืง ื•ืœืงื‘ืœ ืขืœ ื™ื“ื™ ื—ื‘ืจ ืฆื•ื•ืช ืื—ืจ. ื›ืžื• ื‘ืงืจืช ื’ื™ืฉื”, ืื•ืชื” ืžื“ื™ื ื™ื•ืช ื—ืœื” ืขืœ ืขื“ื›ื•ื ื™ ืคืจื™ืกื”.

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

ืฉื™ื˜ื•ืช ืคืจื™ืกื”

ื‘ืฉื ื™ื ื”ืื—ืจื•ื ื•ืช, Kubernetes ื”ืงื™ืžื” ืฉื™ื˜ื•ืช ื•ื›ืœื™ื ืฉื•ื ื™ื ืœืคืจื™ืกื•ืช:

  1. ืžื‘ื•ืกืก ืขืœ ืชื‘ื ื™ื•ืช Kubernetes/Customize ืžืงื•ืจื™ื•ืช. ื–ื•ื”ื™ ื”ื“ืจืš ื”ืงืœื” ื‘ื™ื•ืชืจ ืœืคืจื•ืก ื™ื™ืฉื•ืžื™ื ื‘-Kubernetes. ื”ืžืคืชื— ื™ื•ืฆืจ ืืช ืงื‘ืฆื™ ื”-YAML ื”ื‘ืกื™ืกื™ื™ื ื•ืžื—ื™ืœ ืื•ืชื. ื›ื“ื™ ืœื”ื™ืคื˜ืจ ืžืฉื›ืชื•ื‘ ื›ืœ ื”ื–ืžืŸ ืฉืœ ืื•ืชืŸ ืชื‘ื ื™ื•ืช, ืคื•ืชื—ื” Kustomize (ื”ื™ื ื”ื•ืคื›ืช ืชื‘ื ื™ื•ืช Kubernetes ืœืžื•ื“ื•ืœื™ื). ื”ืขืจื”. ืชืจื’ื•ื: Kustomize ืฉื•ืœื‘ื” ื‘-kubectl ืขื ืฉื—ืจื•ืจ ืฉืœ Kubernetes 1.14.
  2. ืชืจืฉื™ืžื™ื ืฉืœ ื”ื’ื”. ืชืจืฉื™ืžื™ ื”ื’ื” ืžืืคืฉืจื™ื ืœืš ืœื™ืฆื•ืจ ืกื˜ื™ื ืฉืœ ืชื‘ื ื™ื•ืช, ืžื™ื›ืœื™ ืื™ื ื™ื˜, ืฆื“ื“ื™ื•ืช ื•ื›ื•', ื”ืžืฉืžืฉื•ืช ืœืคืจื™ืกืช ื™ื™ืฉื•ืžื™ื ืขื ืืคืฉืจื•ื™ื•ืช ื”ืชืืžื” ืื™ืฉื™ืช ื’ืžื™ืฉื•ืช ื™ื•ืชืจ ืžืืฉืจ ื‘ื’ื™ืฉื” ืžื‘ื•ืกืกืช ืชื‘ื ื™ื•ืช. ืฉื™ื˜ื” ื–ื• ืžื‘ื•ืกืกืช ืขืœ ืงื‘ืฆื™ YAML ื‘ืชื‘ื ื™ืช. Helm ืžืžืœื ืื•ืชื ื‘ืคืจืžื˜ืจื™ื ืฉื•ื ื™ื ื•ืœืื—ืจ ืžื›ืŸ ืฉื•ืœื— ืื•ืชื ืœื˜ื™ืœืจ, ืจื›ื™ื‘ ืืฉื›ื•ืœ ืฉืคื•ืจืก ืื•ืชื ืœืืฉื›ื•ืœ ื•ืžืืคืฉืจ ืขื“ื›ื•ื ื™ื ื•ื”ื—ื–ืจื•ืช. ื”ื“ื‘ืจ ื”ื—ืฉื•ื‘ ื”ื•ื ืฉื”ืœื ื‘ืขืฆื ืจืง ืžื›ื ื™ืก ืืช ื”ืขืจื›ื™ื ื”ืจืฆื•ื™ื™ื ืœืชื‘ื ื™ื•ืช ื•ืื– ืžื™ื™ืฉื ืื•ืชื ื‘ืื•ืชื• ืื•ืคืŸ ื›ืคื™ ืฉื ืขืฉื” ื‘ื’ื™ืฉื” ื”ืžืกื•ืจืชื™ืช (ืงืจื ืขื•ื“ ืขืœ ืื™ืš ื”ื›ืœ ืขื•ื‘ื“ ื•ื›ื™ืฆื“ ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ื• ื‘- ืฉืœื ื• ืžืืžืจ ืžืืช Helm - ืžืฉื•ืขืจ. ืชืจื’ื•ื). ื™ืฉ ืžื’ื•ื•ืŸ ืจื—ื‘ ืฉืœ ืชืจืฉื™ืžื™ Helm ืžื•ื›ื ื™ื ื”ืžื›ืกื™ื ืžื’ื•ื•ืŸ ืจื—ื‘ ืฉืœ ืžืฉื™ืžื•ืช.
  3. ื›ืœื™ื ื—ืœื•ืคื™ื™ื. ื™ืฉื ื ื›ืœื™ื ืืœื˜ืจื ื˜ื™ื‘ื™ื™ื ืจื‘ื™ื. ื”ืžืฉื•ืชืฃ ืœื›ื•ืœื ื”ื•ื ืฉื”ื ื”ื•ืคื›ื™ื ื›ืžื” ืงื•ื‘ืฆื™ ืชื‘ื ื™ื•ืช ืœืงื•ื‘ืฆื™ YAML ื”ื ื™ืชื ื™ื ืœืงืจื™ืื” ืฉืœ Kubernetes ื•ืื– ืžืฉืชืžืฉื™ื ื‘ื”ื.

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

ืžืฉื•ืš ื“ื—ื•ืฃ

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

NB! ื›ืœ ื”ื™ืชืจื•ื ื•ืช ืฉืœ ืฉื™ืžื•ืฉ ื‘-GitOps ื ืฉืืจื™ื ื–ื”ื™ื ืขื‘ื•ืจ ืฉืชื™ ื”ื’ื™ืฉื•ืช.

ื’ื™ืฉื” ืžื‘ื•ืกืกืช ืžืฉื™ื›ื”

GitOps: ื”ืฉื•ื•ืื” ืฉืœ ืฉื™ื˜ื•ืช ืžืฉื™ื›ื” ื•ื“ื—ื™ืคื”

ื’ื™ืฉืช ื”ืžืฉื™ื›ื” ืžื‘ื•ืกืกืช ืขืœ ื”ืขื•ื‘ื“ื” ืฉื›ืœ ื”ืฉื™ื ื•ื™ื™ื ืžื™ื•ืฉืžื™ื ืžืชื•ืš ื”ืืฉื›ื•ืœ. ื™ืฉ ืžืคืขื™ืœ ื‘ืชื•ืš ื”ืืฉื›ื•ืœ ืฉื‘ื•ื“ืง ื‘ืงื‘ื™ืขื•ืช ืืช ื”ืžืื’ืจื™ื ื”ืžืฉื•ื™ื›ื™ื ืฉืœ Git ื•-Docker Registry. ืื ืžืชืจื—ืฉื™ื ื‘ื”ื ืฉื™ื ื•ื™ื™ื, ืžืฆื‘ ื”ืืฉื›ื•ืœ ืžืชืขื“ื›ืŸ ื‘ืื•ืคืŸ ืคื ื™ืžื™. ืชื”ืœื™ืš ื–ื” ื ื—ืฉื‘ ื‘ื“ืจืš ื›ืœืœ ืœืžืื•ื‘ื˜ื— ืžืื•ื“, ืฉื›ืŸ ืœืืฃ ืœืงื•ื— ื—ื™ืฆื•ื ื™ ืื™ืŸ ื’ื™ืฉื” ืœื–ื›ื•ื™ื•ืช ืžื ื”ืœ ืืฉื›ื•ืœ.

ื™ืชืจื•ื ื•ืช:

  1. ืœืืฃ ืœืงื•ื— ื—ื™ืฆื•ื ื™ ืื™ืŸ ื–ื›ื•ื™ื•ืช ืœื‘ืฆืข ืฉื™ื ื•ื™ื™ื ื‘ืืฉื›ื•ืœ; ื›ืœ ื”ืขื“ื›ื•ื ื™ื ืžืชืคืจืกืžื™ื ืžื‘ืคื ื™ื.
  2. ื—ืœืง ืžื”ื›ืœื™ื ื’ื ืžืืคืฉืจื™ื ืœืš ืœืกื ื›ืจืŸ ืขื“ื›ื•ื ื™ ืชืจืฉื™ื Helm ื•ืœืงืฉืจ ืื•ืชื ืœืืฉื›ื•ืœ.
  3. ื ื™ืชืŸ ืœืกืจื•ืง ืืช Docker Registry ืœืื™ืชื•ืจ ื’ืจืกืื•ืช ื—ื“ืฉื•ืช. ืื ืชืžื•ื ื” ื—ื“ืฉื” ื–ืžื™ื ื”, ืžืื’ืจ Git ื•ื”ืคืจื™ืกื” ืžืชืขื“ื›ื ื™ื ืœื’ืจืกื” ื”ื—ื“ืฉื”.
  4. ื ื™ืชืŸ ืœื”ืคื™ืฅ ื›ืœื™ ืžืฉื™ื›ื” ืขืœ ืคื ื™ ืžืจื—ื‘ื™ ืฉืžื•ืช ืฉื•ื ื™ื ืขื ืžืื’ืจื™ื ื•ื”ืจืฉืื•ืช ืฉื•ื ื•ืช ืฉืœ Git. ื”ื•ื“ื•ืช ืœื›ืš, ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ืžื•ื“ืœ ืจื™ื‘ื•ื™ ื“ื™ื™ืจื™ื. ืœื“ื•ื’ืžื”, ืฆื•ื•ืช A ืขืฉื•ื™ ืœื”ืฉืชืžืฉ ื‘ืžืจื—ื‘ ืฉืžื•ืช A, ืฆื•ื•ืช B ืขืฉื•ื™ ืœื”ืฉืชืžืฉ ื‘ืžืจื—ื‘ ืฉืžื•ืช B, ื•ืฆื•ื•ืช ื”ืชืฉืชื™ืช ืขืฉื•ื™ ืœื”ืฉืชืžืฉ ื‘ืžืจื—ื‘ ื’ืœื•ื‘ืœื™.
  5. ื›ื›ืœืœ, ื”ื›ืœื™ื ืงืœื™ื ืžืื•ื“.
  6. ื‘ืฉื™ืœื•ื‘ ืขื ื›ืœื™ื ื›ื’ื•ืŸ ืžืคืขื™ืœ ืกื•ื“ื•ืช ื—ืชื•ืžื™ื ืฉืœ ื‘ื™ื˜ื ืืžื™, ื ื™ืชืŸ ืœืื—ืกืŸ ืกื•ื“ื•ืช ืžื•ืฆืคื ื™ื ื‘ืžืื’ืจ Git ื•ืœืื—ื–ืจ ื‘ืชื•ืš ื”ืืฉื›ื•ืœ.
  7. ืื™ืŸ ื—ื™ื‘ื•ืจ ืœ-CD pipelines ืžื›ื™ื•ื•ืŸ ืฉื”ืคืจื™ืกื” ืžืชืจื—ืฉืช ื‘ืชื•ืš ื”ืืฉื›ื•ืœ.

ื—ืกืจื•ื ื•ืช:

  1. ื ื™ื”ื•ืœ ืกื•ื“ื•ืช ื”ืคืจื™ืกื” ืžืชืจืฉื™ืžื™ Helm ืงืฉื” ื™ื•ืชืจ ืžืืœื” ื”ืจื’ื™ืœื™ื, ืฉื›ืŸ ืชื—ื™ืœื” ื™ืฉ ืœื™ืฆื•ืจ ืื•ืชื ื‘ืฆื•ืจื” ืฉืœ, ืœืžืฉืœ, ืกื•ื“ื•ืช ื—ืชื•ืžื™ื, ืœืื—ืจ ืžื›ืŸ ืœืคืขื ื— ืขืœ ื™ื“ื™ ืžืคืขื™ืœ ืคื ื™ืžื™, ื•ืจืง ืœืื—ืจ ืžื›ืŸ ื”ื ื”ื•ืคื›ื™ื ื–ืžื™ื ื™ื ืœื›ืœื™ ื”ืžืฉื™ื›ื”. ืื– ืืชื” ื™ื›ื•ืœ ืœื”ืจื™ืฅ ืืช ื”ืžื”ื“ื•ืจื” ื‘ื”ืœื ืขื ื”ืขืจื›ื™ื ื‘ืกื•ื“ื•ืช ืฉื›ื‘ืจ ื ืคืจืกื•. ื”ื“ืจืš ื”ืงืœื” ื‘ื™ื•ืชืจ ื”ื™ื ืœื™ืฆื•ืจ ืกื•ื“ ืขื ื›ืœ ืขืจื›ื™ Helm ื”ืžืฉืžืฉื™ื ืœืคืจื™ืกื”, ืœืคืขื ื— ืื•ืชื• ื•ืœื”ืชื—ื™ื™ื‘ ืœ-Git.
  2. ื›ืืฉืจ ืืชื” ื ื•ืงื˜ ื‘ื’ื™ืฉืช ืžืฉื™ื›ื”, ืืชื” ื ืงืฉืจ ืœื›ืœื™ ืžืฉื™ื›ื”. ื–ื” ืžื’ื‘ื™ืœ ืืช ื”ื™ื›ื•ืœืช ืœื”ืชืื™ื ืื™ืฉื™ืช ืืช ืชื”ืœื™ืš ื”ืคืจื™ืกื” ื‘ืืฉื›ื•ืœ. ืœื“ื•ื’ืžื”, Kustomize ืžืกื•ื‘ืš ื‘ืฉืœ ื”ืขื•ื‘ื“ื” ืฉื”ื•ื ื—ื™ื™ื‘ ืœืคืขื•ืœ ืœืคื ื™ ืฉื”ืชื‘ื ื™ื•ืช ื”ืกื•ืคื™ื•ืช ืžื—ื•ื™ื‘ื•ืช ืœ-Git. ืื ื™ ืœื ืื•ืžืจ ืฉืืชื” ืœื ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ื›ืœื™ื ืขืฆืžืื™ื™ื, ืื‘ืœ ืงืฉื” ื™ื•ืชืจ ืœืฉืœื‘ ืื•ืชื ื‘ืชื”ืœื™ืš ื”ืคืจื™ืกื” ืฉืœืš.

ื’ื™ืฉื” ืžื‘ื•ืกืกืช ื“ื—ื™ืคื”

GitOps: ื”ืฉื•ื•ืื” ืฉืœ ืฉื™ื˜ื•ืช ืžืฉื™ื›ื” ื•ื“ื—ื™ืคื”

ื‘ื’ื™ืฉืช ื”ื“ื—ื™ืคื”, ืžืขืจื›ืช ื—ื™ืฆื•ื ื™ืช (ื‘ืขื™ืงืจ CD pipelines) ืžืฉื™ืงื” ืคืจื™ืกื•ืช ืœืืฉื›ื•ืœ ืœืื—ืจ ื”ืชื—ื™ื™ื‘ื•ืช ืœืžืื’ืจ Git ืื• ืื ืฆื™ื ื•ืจ ื”-CI ื”ืงื•ื“ื ื”ืฆืœื™ื—. ื‘ื’ื™ืฉื” ื–ื•, ืœืžืขืจื›ืช ื™ืฉ ื’ื™ืฉื” ืœืืฉื›ื•ืœ.

Pros:

  1. ื”ืื‘ื˜ื—ื” ื ืงื‘ืขืช ืขืœ ื™ื“ื™ ืžืื’ืจ Git ื•ืฆื™ื ื•ืจ ื”ื‘ื ื™ื™ื”.
  2. ืคืจื™ืกืช ืชืจืฉื™ืžื™ Helm ืงืœื” ื™ื•ืชืจ ื•ืชื•ืžื›ืช ื‘ืชื•ืกืคื™ื ืฉืœ Helm.
  3. ืงืœ ื™ื•ืชืจ ืœื ื”ืœ ืกื•ื“ื•ืช ืžื›ื™ื•ื•ืŸ ืฉื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ืกื•ื“ื•ืช ื‘ืฆื™ื ื•ืจื•ืช ื•ื ื™ืชืŸ ื’ื ืœืื—ืกืŸ ืื•ืชื ืžื•ืฆืคื ื™ื ื‘-Git (ื‘ื”ืชืื ืœื”ืขื“ืคื•ืช ื”ืžืฉืชืžืฉ).
  4. ืื™ืŸ ืงืฉืจ ืœื›ืœื™ ืกืคืฆื™ืคื™, ืžื›ื™ื•ื•ืŸ ืฉื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ื›ืœ ืกื•ื’.
  5. ื ื™ืชืŸ ืœื™ื–ื•ื ืขื“ื›ื•ื ื™ ื’ืจืกืช ืžื™ื›ืœ ื‘ืืžืฆืขื•ืช ืฆื™ื ื•ืจ ื”ื‘ื ื™ื™ื”.

ื—ืกืจื•ื ื•ืช:

  1. ื ืชื•ื ื™ ื”ื’ื™ืฉื” ืœืืฉื›ื•ืœ ื ืžืฆืื™ื ื‘ืชื•ืš ืžืขืจื›ืช ื”ื‘ื ื™ื™ื”.
  2. ืขื“ื›ื•ืŸ ืžื™ื›ืœื™ ืคืจื™ืกื” ืขื“ื™ื™ืŸ ืงืœ ื™ื•ืชืจ ืขื ืชื”ืœื™ืš ืžืฉื™ื›ื”.
  3. ืชืœื•ืช ื›ื‘ื“ื” ื‘ืžืขืจื›ืช ื”-CD, ืžื›ื™ื•ื•ืŸ ืฉื”ืฆื™ื ื•ืจื•ืช ืฉืื ื• ืฆืจื™ื›ื™ื ืื•ืœื™ ื ื›ืชื‘ื• ื‘ืžืงื•ืจ ืขื‘ื•ืจ Gitlab Runners, ื•ืื– ื”ืฆื•ื•ืช ืžื—ืœื™ื˜ ืœืขื‘ื•ืจ ืœ-Azure DevOps ืื• Jenkins... ื•ื™ืฆื˜ืจืš ืœื”ืขื‘ื™ืจ ืžืกืคืจ ืจื‘ ืฉืœ ืฆื™ื ื•ืจื•ืช ืœื‘ื ื•ืช.

ืชื•ืฆืื•ืช: ื“ื—ื™ืคื” ืื• ืžืฉื™ื›ื”?

ื›ืคื™ ืฉืงื•ืจื” ื‘ื“ืจืš ื›ืœืœ, ืœื›ืœ ื’ื™ืฉื” ื™ืฉ ืืช ื”ื™ืชืจื•ื ื•ืช ื•ื”ื—ืกืจื•ื ื•ืช ืฉืœื”. ื—ืœืง ืžื”ืžืฉื™ืžื•ืช ืงืœื•ืช ื™ื•ืชืจ ืœื‘ื™ืฆื•ืข ืขื ืื—ืช ื•ืงืฉื•ืช ื™ื•ืชืจ ืขื ืื—ืจ. ื‘ื”ืชื—ืœื” ื‘ื™ืฆืขืชื™ ืคืจื™ืกื•ืช ื‘ืื•ืคืŸ ื™ื“ื ื™, ืื‘ืœ ืœืื—ืจ ืฉื ืชืงืœืชื™ ื‘ื›ืžื” ืžืืžืจื™ื ืขืœ Weave Flux, ื”ื—ืœื˜ืชื™ ืœื™ื™ืฉื ืชื”ืœื™ื›ื™ GitOps ืขื‘ื•ืจ ื›ืœ ื”ืคืจื•ื™ืงื˜ื™ื. ืขื‘ื•ืจ ืชื‘ื ื™ื•ืช ื‘ืกื™ืกื™ื•ืช ื–ื” ื”ื™ื” ืงืœ, ืื‘ืœ ืื– ื”ืชื—ืœืชื™ ืœื”ื™ืชืงืœ ื‘ืงืฉื™ื™ื ืขื ืชืจืฉื™ืžื™ Helm. ื‘ื–ืžื ื•, Weave Flux ื”ืฆื™ืขื” ืจืง ื’ืจืกื” ืจืืฉื•ื ื™ืช ืฉืœ ืื•ืคืจื˜ื•ืจ Helm Chart, ืื‘ืœ ื’ื ืขื›ืฉื™ื• ื›ืžื” ืžืฉื™ืžื•ืช ืงืฉื•ืช ื™ื•ืชืจ ื‘ื’ืœืœ ื”ืฆื•ืจืš ืœื™ืฆื•ืจ ืกื•ื“ื•ืช ื™ื“ื ื™ืช ื•ืœื”ื—ื™ืœ ืื•ืชื. ืืชื” ื™ื›ื•ืœ ืœื˜ืขื•ืŸ ืฉื’ื™ืฉืช ื”ืžืฉื™ื›ื” ืžืื•ื‘ื˜ื—ืช ื”ืจื‘ื” ื™ื•ืชืจ ืžื›ื™ื•ื•ืŸ ืฉื”ืื™ืฉื•ืจื™ื ืฉืœ ื”ืืฉื›ื•ืœ ืื™ื ื ื ื’ื™ืฉื™ื ืžื—ื•ืฅ ืœืืฉื›ื•ืœ, ืžื” ืฉื”ื•ืคืš ืื•ืชื• ืœื”ืจื‘ื” ื™ื•ืชืจ ื‘ื˜ื•ื— ืฉื–ื” ืฉื•ื•ื” ืืช ื”ืžืืžืฅ ื”ื ื•ืกืฃ.

ืœืื—ืจ ืžื—ืฉื‘ื”, ื”ื’ืขืชื™ ืœืžืกืงื ื” ื‘ืœืชื™ ืฆืคื•ื™ื” ืฉื–ื” ืœื ื›ืš. ืื ื ื“ื‘ืจ ืขืœ ืจื›ื™ื‘ื™ื ืฉื“ื•ืจืฉื™ื ื”ื’ื ื” ืžืงืกื™ืžืœื™ืช, ืจืฉื™ืžื” ื–ื• ืชื›ืœื•ืœ ืื—ืกื•ืŸ ืกื•ื“ื™, ืžืขืจื›ื•ืช CI/CD ื•ืžืื’ืจื™ Git. ื”ืžื™ื“ืข ื‘ืชื•ื›ื ืžืื•ื“ ืคื’ื™ืข ื•ื–ืงื•ืง ืœื”ื’ื ื” ืžืจื‘ื™ืช. ื‘ื ื•ืกืฃ, ืื ืžื™ืฉื”ื• ื ื›ื ืก ืœืžืื’ืจ Git ืฉืœืš ื•ื™ื›ื•ืœ ืœื“ื—ื•ืฃ ืœืฉื ืงื•ื“, ื”ื•ื ื™ื›ื•ืœ ืœืคืจื•ืก ืžื” ืฉื”ื•ื ืจื•ืฆื” (ื‘ื™ืŸ ืื ื–ื” pull ืื• push) ื•ืœื—ื“ื•ืจ ืœืžืขืจื›ื•ืช ืฉืœ ื”ืืฉื›ื•ืœ. ืœืคื™ื›ืš, ื”ืจื›ื™ื‘ื™ื ื”ื—ืฉื•ื‘ื™ื ื‘ื™ื•ืชืจ ืฉืฆืจื™ื›ื™ื ืœื”ื™ื•ืช ืžื•ื’ื ื™ื ื”ื ืžืื’ืจ Git ื•ืžืขืจื›ื•ืช CI/CD, ืœื ืื™ืฉื•ืจื™ ื”ืืฉื›ื•ืœ. ืื ื™ืฉ ืœืš ืžื“ื™ื ื™ื•ืช ื•ื‘ืงืจื•ืช ืื‘ื˜ื—ื” ืžื•ื’ื“ืจื•ืช ื”ื™ื˜ื‘ ืขื‘ื•ืจ ืกื•ื’ื™ื ืืœื” ืฉืœ ืžืขืจื›ื•ืช, ื•ืื™ืฉื•ืจื™ ืืฉื›ื•ืœ ื ืฉืœืคื™ื ืจืง ืœืฆื™ื ื•ืจื•ืช ื›ืกื•ื“ื•ืช, ื™ื™ืชื›ืŸ ืฉื”ืื‘ื˜ื—ื” ื”ื ื•ืกืคืช ืฉืœ ื’ื™ืฉืช ืžืฉื™ื›ื” ืœื ืชื”ื™ื” ื‘ืขืœืช ืขืจืš ื›ืคื™ ืฉื—ืฉื‘ื• ื‘ืžืงื•ืจ.

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

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

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

ื .ื‘ ื”ืขืจื” ืžื”ืžืชืจื’ื

ื”ื—ื™ืกืจื•ืŸ ืฉืœ ืžื•ื“ืœ ื”-pull ื”ื•ื ืฉืงืฉื” ืœื”ื›ื ื™ืก ืžื ื™ืคืกื˜ื™ื ืžืขื•ื‘ื“ื™ื ืœ-Git, ืื‘ืœ ืื™ืŸ ื—ื™ืกืจื•ืŸ ืฉืฆื™ื ื•ืจ ื”ืชืงืœื™ื˜ื•ืจื™ื ื‘ืžื•ื“ืœ ื”-pull ื—ื™ ื‘ื ืคืจื“ ืžื”ื’ืœื™ืฉื” ื•ื‘ืขืฆื ื”ื•ืคืš ืœืงื˜ื’ื•ืจื™ื” ืฆื™ื ื•ืจ. ื™ื™ืฉื•ื ืจืฆื™ืฃ. ืœื›ืŸ, ื™ื™ื“ืจืฉ ืขื•ื“ ื™ื•ืชืจ ืžืืžืฅ ื›ื“ื™ ืœืืกื•ืฃ ืืช ื”ืกื˜ื˜ื•ืก ืฉืœื”ื ืžื›ืœ ื”ืคืจื™ืกื•ืช ื•ืื™ื›ืฉื”ื• ืœืกืคืง ื’ื™ืฉื” ืœืœื•ื’ื™ื/ืกื˜ื˜ื•ืก, ืจืฆื•ื™ ื‘ื”ืชื™ื™ื—ืกื•ืช ืœืžืขืจื›ืช ื”ืชืงืœื™ื˜ื•ืจื™ื.

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

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

  1. ืžื•ื“ืœ ื”ืžืฉื™ื›ื” ืžืชืื™ื ืœื ื• ืœืืจื’ืŸ ืขื“ื›ื•ื ื™ื ืฉืœ ืจื›ื™ื‘ื™ ืžืขืจื›ืช ื‘ืžืกืคืจ ืจื‘ ืฉืœ ืืฉื›ื•ืœื•ืช (ืจืื”. ืžืืžืจ ืขืœ ืžืคืขื™ืœ ืชื•ืกืฃ).
  2. ืžื•ื“ืœ ื”ื“ื—ื™ืคื” ื”ืžื‘ื•ืกืก ืขืœ GitLab CI ืžืชืื™ื ื”ื™ื˜ื‘ ืœื”ืคืขืœืช ื™ื™ืฉื•ืžื™ื ื‘ืืžืฆืขื•ืช ืชืจืฉื™ืžื™ Helm. ื‘ืžืงื‘ื™ืœ, ืคืจื™ืกืช ื”ืคืจื™ืกื•ืช ื‘ืชื•ืš ืฆื™ื ื•ืจื•ืช ืžื ื•ื˜ืจืช ื‘ืืžืฆืขื•ืช ื”ื›ืœื™ werf. ืื’ื‘, ื‘ื”ืงืฉืจ ืฉืœ ื”ืคืจื•ื™ืงื˜ ื”ื–ื” ืฉืœื ื•, ืฉืžืขื ื• ืืช ื”-"GitOps" ื”ืงื‘ื•ืข ื›ืฉื“ื ื• ื‘ื‘ืขื™ื•ืช ื”ื“ื•ื—ืงื•ืช ืฉืœ ืžื”ื ื“ืกื™ DevOps ื‘ื“ื•ื›ืŸ ืฉืœื ื• ื‘-KubeCon Europe'19.

PPS ืžื”ืžืชืจื’ื

ืงืจื ื’ื ื‘ื‘ืœื•ื’ ืฉืœื ื•:

ืจืง ืžืฉืชืžืฉื™ื ืจืฉื•ืžื™ื ื™ื›ื•ืœื™ื ืœื”ืฉืชืชืฃ ื‘ืกืงืจ. ืœื”ืชื—ื‘ืจื‘ื‘ืงืฉื”.

ื”ืื ืืชื” ืžืฉืชืžืฉ ื‘-GitOps?

  • ื›ืŸ, ื’ื™ืฉื” ืœืžืฉื•ืš

  • ื›ืŸ, ืœื“ื—ื•ืฃ

  • ื›ืŸ, ืžืฉื™ื›ื” + ื“ื—ื™ืคื”

  • ื›ืŸ, ืžืฉื”ื• ืื—ืจ

  • ืœื

30 ืžืฉืชืžืฉื™ื ื”ืฆื‘ื™ืขื•. 10 ืžืฉืชืžืฉื™ื ื ืžื ืขื•.

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

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