ืžื‘ื•ื ืœ-GitOps ืขื‘ื•ืจ OpenShift

ื”ื™ื•ื ื ื“ื‘ืจ ืขืœ ื”ืขืงืจื•ื ื•ืช ื•ื”ืžื•ื“ืœื™ื ืฉืœ GitOps, ื›ืžื• ื’ื ืขืœ ื”ืื•ืคืŸ ืฉื‘ื• ืžื•ื“ืœื™ื ืืœื• ืžื™ื•ืฉืžื™ื ื‘ืคืœื˜ืคื•ืจืžืช OpenShift. ืžื“ืจื™ืš ืื™ื ื˜ืจืืงื˜ื™ื‘ื™ ื‘ื ื•ืฉื ื–ื” ื–ืžื™ืŸ ะฟะพ ััั‹ะปะบะต.

ืžื‘ื•ื ืœ-GitOps ืขื‘ื•ืจ OpenShift

ื‘ืงืฆืจื”, GitOps ื”ื™ื ืงื‘ื•ืฆื” ืฉืœ ืฉื™ื˜ื•ืช ืขื‘ื•ื“ื” ืœืฉื™ืžื•ืฉ ื‘ื‘ืงืฉื•ืช ืžืฉื™ื›ื” ืฉืœ Git ืœื ื™ื”ื•ืœ ืชืฆื•ืจื•ืช ืชืฉืชื™ืช ื•ืืคืœื™ืงืฆื™ื•ืช. ืžืื’ืจ Git ื‘-GitOps ืžื˜ื•ืคืœ ื›ืžืงื•ืจ ืžื™ื“ืข ื™ื—ื™ื“ ืขืœ ืžืฆื‘ ื”ืžืขืจื›ืช, ื•ื›ืœ ืฉื™ื ื•ื™ ื‘ืžืฆื‘ ื–ื” ื ื™ืชืŸ ืœืžืขืงื‘ ื•ื ื™ืชืŸ ืœื‘ื™ืงื•ืจืช ื‘ืื•ืคืŸ ืžืœื.

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

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

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

ืขืงืจื•ื ื•ืช GitOps

  • ื”ื’ื“ืจื•ืช ืžืขืจื›ืช ืžืชื•ืืจื•ืช ื›ืงื•ื“ ืžืงื•ืจ

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

  • ื”ืžืฆื‘ ื•ื”ืงื•ื ืคื™ื’ื•ืจืฆื™ื” ื”ืจืฆื•ื™ื™ื ืฉืœ ื”ืžืขืจื›ื•ืช ื ืงื‘ืขื™ื ื•ืžื ื•ืกื—ื™ื ื‘-Git

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

  • ื ื™ืชืŸ ืœื”ื—ื™ืœ ืฉื™ื ื•ื™ื™ ืชืฆื•ืจื” ื‘ืื•ืคืŸ ืื•ื˜ื•ืžื˜ื™ ื‘ืืžืฆืขื•ืช ื‘ืงืฉื•ืช ืžืฉื™ื›ื”

ื‘ืืžืฆืขื•ืช ื‘ืงืฉื•ืช ืžืฉื™ื›ื” ืฉืœ Git, ืื ื• ื™ื›ื•ืœื™ื ืœืฉืœื•ื˜ ื‘ืงืœื•ืช ื›ื™ืฆื“ ืฉื™ื ื•ื™ื™ื ืžื•ื—ืœื™ื ืขืœ ืชืฆื•ืจื•ืช ื‘ืžืื’ืจ. ืœื“ื•ื’ืžื”, ื”ื ื™ื›ื•ืœื™ื ืœื”ื™ื ืชืŸ ืœื—ื‘ืจื™ ืฆื•ื•ืช ืื—ืจื™ื ืœื‘ื“ื™ืงื” ืื• ืœืจื•ืฅ ืžื‘ื—ื ื™ CI ื•ื›ื•'.

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

  • ืชื™ืงื•ืŸ ื”ื‘ืขื™ื” ืฉืœ ืกื—ื™ืคื” ื‘ืœืชื™ ืžื‘ื•ืงืจืช ืฉืœ ืชืฆื•ืจื•ืช

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

ื“ื’ืžื™ GitOps ืขื‘ื•ืจ OpenShift

ืžื™ื™ืฉื‘ ืžืฉืื‘ื™ื ืขืœ ืืฉื›ื•ืœ

ืœืคื™ ืžื•ื“ืœ ื–ื”, ืœืืฉื›ื•ืœ ื™ืฉ ื‘ืงืจ ืฉืื—ืจืื™ ืขืœ ื”ืฉื•ื•ืืช ืžืฉืื‘ื™ Kubernetes (ืงื‘ืฆื™ YAML) ื‘ืžืื’ืจ Git ืขื ื”ืžืฉืื‘ื™ื ื”ืืžื™ืชื™ื™ื ืฉืœ ื”ืืฉื›ื•ืœ. ืื ืžืชื’ืœื™ื ืื™ ื”ืชืืžื•ืช, ื”ื‘ืงืจ ืฉื•ืœื— ื”ื•ื“ืขื•ืช ื•ืื•ืœื™ ื ื•ืงื˜ ื‘ืคืขื•ืœื” ื›ื“ื™ ืœืชืงืŸ ืืช ื”ืคืขืจ. ืžื•ื“ืœ GitOps ื–ื” ืžืฉืžืฉ ื‘-Anthos Config Management ื•-Weaveworks Flux.

ืžื‘ื•ื ืœ-GitOps ืขื‘ื•ืจ OpenShift

ืžื™ื™ืฉื‘ ืžืฉืื‘ื™ื ื—ื™ืฆื•ื ื™ (ื“ื—ื™ืคื”)

ืžื•ื“ืœ ื–ื” ื™ื›ื•ืœ ืœื”ื™ื—ืฉื‘ ื›ื•ื•ืจื™ืืฆื™ื” ืฉืœ ื”ืงื•ื“ื, ื›ืืฉืจ ื™ืฉ ืœื ื• ื‘ืงืจ ืื—ื“ ืื• ื™ื•ืชืจ ื”ืื—ืจืื™ ืขืœ ืกื ื›ืจื•ืŸ ืžืฉืื‘ื™ื ื‘ืฆืžื“ื™ "ืžืื’ืจ Git - Kubernetes cluster". ื”ื”ื‘ื“ืœ ื›ืืŸ ื”ื•ื ืฉืœื›ืœ ืืฉื›ื•ืœ ืžื ื•ื”ืœ ืื™ืŸ ื‘ื”ื›ืจื— ื‘ืงืจ ื ืคืจื“ ืžืฉืœื•. ืฆืžื“ื™ ืืฉื›ื•ืœื•ืช ืฉืœ Git - k8s ืžื•ื’ื“ืจื™ื ืœืขืชื™ื ืงืจื•ื‘ื•ืช ื›-CRDs (ื”ื’ื“ืจื•ืช ืžืฉืื‘ื™ื ืžื•ืชืืžื•ืช ืื™ืฉื™ืช), ืฉื™ื›ื•ืœื™ื ืœืชืืจ ื›ื™ืฆื“ ื”ื‘ืงืจ ืฆืจื™ืš ืœื‘ืฆืข ืกื ื›ืจื•ืŸ. ื‘ืชื•ืš ืžื•ื“ืœ ื–ื”, ื‘ืงืจื™ื ืžืฉื•ื•ื™ื ืืช ืžืื’ืจ Git ืฉืฆื•ื™ืŸ ื‘-CRD ืขื ืžืฉืื‘ื™ ื”ืืฉื›ื•ืœื•ืช ืฉืœ Kubernetes, ืฉืฆื•ื™ื ื• ื’ื ื‘-CRD, ื•ืžื‘ืฆืขื™ื ืคืขื•ืœื•ืช ืžืชืื™ืžื•ืช ืขืœ ืกืžืš ืชื•ืฆืื•ืช ื”ื”ืฉื•ื•ืื”. ื‘ืคืจื˜, ืžื•ื“ืœ GitOps ื–ื” ืžืฉืžืฉ ื‘- ArgoCD.

ืžื‘ื•ื ืœ-GitOps ืขื‘ื•ืจ OpenShift

GitOps ื‘ืคืœื˜ืคื•ืจืžืช OpenShift

ื ื™ื”ื•ืœ ืชืฉืชื™ืช Kubernetes ืžืจื•ื‘ืช ืืฉื›ื•ืœื•ืช

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

ืœื“ื•ื’ืžื”, ื‘ืขืช ืฉื™ืžื•ืฉ ื‘ืžื—ืฉื•ื‘ ืงืฆื”, ื ื™ืชืŸ ืœืคืจื•ืก ืืฉื›ื•ืœื•ืช ืฉืœ ืœืงื•ื— ืื—ื“ ื‘ืžืื•ืช ืื• ืืคื™ืœื• ื‘ืืœืคื™ื. ื›ืชื•ืฆืื” ืžื›ืš, ื”ื•ื ื ืืœืฅ ืœื ื”ืœ ืžืกืคืจ ืืฉื›ื•ืœื•ืช OpenShift ืขืฆืžืื™ื™ื ืื• ืžืชื•ืืžื™ื ื‘ืขื ืŸ ื”ืฆื™ื‘ื•ืจื™ ื•ื‘-on-premise.

ื‘ืžืงืจื” ื–ื”, ื™ืฉ ืœืคืชื•ืจ ื”ืจื‘ื” ื‘ืขื™ื•ืช, ื‘ืžื™ื•ื—ื“:

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

ืชืฆื•ืจื•ืช ื™ื™ืฉื•ืžื™ื

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

ื‘ืžืงืจื” ื–ื”, ื™ืฉ ืœืคืชื•ืจ ืืช ื”ืžืฉื™ืžื•ืช ื”ื‘ืื•ืช:

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

ืžืงืจื™ ืฉื™ืžื•ืฉ ื‘-OpenShift GitOps

1. ื”ื—ืœืช ืฉื™ื ื•ื™ื™ื ืžืžืื’ืจ Git

ืžื ื”ืœ ืืฉื›ื•ืœ ื™ื›ื•ืœ ืœืื—ืกืŸ ืชืฆื•ืจื•ืช ืืฉื›ื•ืœื•ืช OpenShift ื‘ืžืื’ืจ Git ื•ืœื”ื—ื™ืœ ืื•ืชืŸ ื‘ืื•ืคืŸ ืื•ื˜ื•ืžื˜ื™ ื›ื“ื™ ืœื™ืฆื•ืจ ืืฉื›ื•ืœื•ืช ื—ื“ืฉื™ื ืœืœื ืžืืžืฅ ื•ืœื”ื‘ื™ื ืื•ืชื ืœืžืฆื‘ ื–ื”ื” ืœืžืฆื‘ ื”ื™ื“ื•ืข ื”ืžืื•ื—ืกืŸ ื‘ืžืื’ืจ Git.

2. ืกื ื›ืจื•ืŸ ืขื Secret Manager

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

3. ืฉืœื™ื˜ื” ื‘ืชืฆื•ืจื•ืช ืกื—ื™ืคื”

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

4. ื”ื•ื“ืขื•ืช ืขืœ ืกื—ื™ืคื” ืฉืœ ืชืฆื•ืจื”

ื”ื ืฉื™ืžื•ืฉื™ื™ื ื‘ืžืงืจื” ืฉื‘ื• ื”ืžื ื”ืœ ืจื•ืฆื” ืœืœืžื•ื“ ื‘ืžื”ื™ืจื•ืช ืขืœ ืžืงืจื™ื ืฉืœ ืกื—ืฃ ืชืฆื•ืจื” ื›ื“ื™ ืœื ืงื•ื˜ ื‘ืžื”ื™ืจื•ืช ื‘ืืžืฆืขื™ื ืžืชืื™ืžื™ื ื‘ืขืฆืžื•.

5. ืกื ื›ืจื•ืŸ ื™ื“ื ื™ ืฉืœ ืชืฆื•ืจื•ืช ื‘ืขืช ื“ืจื™ืคื˜ื™ื ื’

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

6. ืกื ื›ืจื•ืŸ ืื•ื˜ื•ืžื˜ื™ ืฉืœ ืชืฆื•ืจื•ืช ื‘ืขืช ืกื—ื™ืคื”

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

7. ืžืกืคืจ ืืฉื›ื•ืœื•ืช - ืžืื’ืจ ืื—ื“

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

8. ื”ื™ืจืจื›ื™ื” ืฉืœ ืชืฆื•ืจื•ืช ืืฉื›ื•ืœ (ื™ืจื•ืฉื”)

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

ืœื“ื•ื’ืžื”, ืื ืžื ื”ืœ ืžืขืจื›ืช ืžื’ื“ื™ืจ ืืช ื”ื”ื™ืจืจื›ื™ื” "ืืฉื›ื•ืœื•ืช ื™ื™ืฆื•ืจ (ืคืจื•ื“) โ†’ ืืฉื›ื•ืœื•ืช ืฉืœ ืžืขืจื›ืช X โ†’ ืืฉื›ื•ืœื•ืช ื™ื™ืฆื•ืจ ืฉืœ ืžืขืจื›ืช X" ื‘ืžืื’ืจ Git, ืื– ืฉื™ืœื•ื‘ ืฉืœ ื”ื”ื’ื“ืจื•ืช ื”ื‘ืื•ืช ืžื•ื—ืœ ืขืœ ืืฉื›ื•ืœื•ืช ื”ื™ื™ืฆื•ืจ ืฉืœ ืžืขืจื›ืช X:

  • ื”ื’ื“ืจื•ืช ืžืฉื•ืชืคื•ืช ืœื›ืœ ืืฉื›ื•ืœื•ืช ื”ื™ื™ืฆื•ืจ.
  • ื”ื’ื“ืจื•ืช ืขื‘ื•ืจ ืืฉื›ื•ืœ System X.
  • ื”ื’ื“ืจื•ืช ืขื‘ื•ืจ ืืฉื›ื•ืœ ื”ื™ื™ืฆื•ืจ ืฉืœ ืžืขืจื›ืช X.

9. ืชื‘ื ื™ื•ืช ื•ืขืงื™ืคื•ืช ืชืฆื•ืจื”

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

10. ื›ืœื•ืœ ื•ืื™ ื”ื›ืœืœื” ืกืœืงื˜ื™ื‘ื™ ืขื‘ื•ืจ ืชืฆื•ืจื•ืช, ืชืฆื•ืจื•ืช ื™ื™ืฉื•ืžื™ื

ื”ืžื ื”ืœ ื™ื›ื•ืœ ืœื”ื’ื“ื™ืจ ืืช ื”ืชื ืื™ื ืœื™ื™ืฉื•ื ืื• ืื™ ื™ื™ืฉื•ื ืฉืœ ืชืฆื•ืจื•ืช ืžืกื•ื™ืžื•ืช ืœืืฉื›ื•ืœื•ืช ืขื ืžืืคื™ื™ื ื™ื ืžืกื•ื™ืžื™ื.

11. ืชืžื™ื›ื” ื‘ืชื‘ื ื™ื•ืช

ืžืคืชื—ื™ื ื™ื™ื”ื ื• ืžื”ื™ื›ื•ืœืช ืœื‘ื—ื•ืจ ื›ื™ืฆื“ ื™ื•ื’ื“ืจื• ืžืฉืื‘ื™ ื”ืืคืœื™ืงืฆื™ื” (Helm Chart, Kubernetes yaml ื˜ื”ื•ืจ ื•ื›ื•') ืขืœ ืžื ืช ืœื”ืฉืชืžืฉ ื‘ืคื•ืจืžื˜ ื”ืžืชืื™ื ื‘ื™ื•ืชืจ ืขื‘ื•ืจ ื›ืœ ืืคืœื™ืงืฆื™ื” ืกืคืฆื™ืคื™ืช.

ื›ืœื™ GitOps ื‘ืคืœื˜ืคื•ืจืžืช OpenShift

ArgoCD

ArgoCD ืžื™ื™ืฉืžืช ืืช ืžื•ื“ืœ External Resource Reconcile ื•ืžืฆื™ืขื” ืžืžืฉืง ืžืฉืชืžืฉ ืžืจื›ื–ื™ ืœืชื–ืžื•ืจ ืงืฉืจื™ื ืฉืœ ืื—ื“ ืœืจื‘ื™ื ื‘ื™ืŸ ืืฉื›ื•ืœื•ืช ื•ืžืื’ืจื™ Git. ื”ื—ืกืจื•ื ื•ืช ืฉืœ ืชื•ื›ื ื™ืช ื–ื• ื›ื•ืœืœื™ื ืืช ื—ื•ืกืจ ื”ื™ื›ื•ืœืช ืœื ื”ืœ ื™ื™ืฉื•ืžื™ื ื›ืืฉืจ ArgoCD ืื™ื ื• ืคื•ืขืœ.

ืืชืจ ืจืฉืžื™

ืฉื˜ืฃ

Flux ืžื™ื™ืฉืžืช ืžื•ื“ืœ On-Cluster Resource Reconcile ื•ื›ืชื•ืฆืื” ืžื›ืš, ืื™ืŸ ื ื™ื”ื•ืœ ืจื™ื›ื•ื–ื™ ืฉืœ ืžืื’ืจ ื”ื”ื’ื“ืจื•ืช, ื”ืžื”ื•ื•ื” ื ืงื•ื“ืช ืชื•ืจืคื”. ืžืฆื“ ืฉื ื™, ื“ื•ื•ืงื ื‘ื’ืœืœ ื—ื•ืกืจ ื”ืจื™ื›ื•ื–ื™ื•ืช, ื”ื™ื›ื•ืœืช ืœื ื”ืœ ืืคืœื™ืงืฆื™ื•ืช ื ืฉืืจืช ื’ื ืื ืืฉื›ื•ืœ ืื—ื“ ื ื›ืฉืœ.

ืืชืจ ืจืฉืžื™

ื”ืชืงื ืช ArgoCD ื‘-OpenShift

ArgoCD ืžืฆื™ืข ืžืžืฉืง ืฉื•ืจืช ืคืงื•ื“ื” ืžืขื•ืœื” ื•ืžืกื•ืฃ ืื™ื ื˜ืจื ื˜, ื›ืš ืฉืœื ื ืกืงื•ืจ ื›ืืŸ ืืช Flux ื•ื—ืœื•ืคื•ืช ืื—ืจื•ืช.

ื›ื“ื™ ืœืคืจื•ืก ืืช ArgoCD ื‘ืคืœื˜ืคื•ืจืžืช OpenShift 4, ื‘ืฆืข ืืช ื”ืฉืœื‘ื™ื ื”ื‘ืื™ื ื›ืžื ื”ืœ ืืฉื›ื•ืœ:

ืคืจื™ืกืช ืจื›ื™ื‘ื™ ArgoCD ื‘ืคืœื˜ืคื•ืจืžืช OpenShift

# Create a new namespace for ArgoCD components
oc create namespace argocd
# Apply the ArgoCD Install Manifest
oc -n argocd apply -f https://raw.githubusercontent.com/argoproj/argo-cd/v1.2.2/manifests/install.yaml
# Get the ArgoCD Server password
ARGOCD_SERVER_PASSWORD=$(oc -n argocd get pod -l "app.kubernetes.io/name=argocd-server" -o jsonpath='{.items[*].metadata.name}')

ืฉื™ืคื•ืจ ืฉืœ ืฉืจืช ArgoCD ื›ืš ืฉื ื™ืชืŸ ื™ื”ื™ื” ืœืจืื•ืชื• ืขืœ ื™ื“ื™ OpenShift Route

# Patch ArgoCD Server so no TLS is configured on the server (--insecure)
PATCH='{"spec":{"template":{"spec":{"$setElementOrder/containers":[{"name":"argocd-server"}],"containers":[{"command":["argocd-server","--insecure","--staticassets","/shared/app"],"name":"argocd-server"}]}}}}'
oc -n argocd patch deployment argocd-server -p $PATCH
# Expose the ArgoCD Server using an Edge OpenShift Route so TLS is used for incoming connections
oc -n argocd create route edge argocd-server --service=argocd-server --port=http --insecure-policy=Redirect

ืคืจื™ืกืช ื›ืœื™ ArgoCD Cli

# Download the argocd binary, place it under /usr/local/bin and give it execution permissions
curl -L https://github.com/argoproj/argo-cd/releases/download/v1.2.2/argocd-linux-amd64 -o /usr/local/bin/argocd
chmod +x /usr/local/bin/argocd

ืฉื™ื ื•ื™ ืกื™ืกืžืช ื”ื ื™ื”ื•ืœ ืฉืœ ArgoCD Server

# Get ArgoCD Server Route Hostname
ARGOCD_ROUTE=$(oc -n argocd get route argocd-server -o jsonpath='{.spec.host}')
# Login with the current admin password
argocd --insecure --grpc-web login ${ARGOCD_ROUTE}:443 --username admin --password ${ARGOCD_SERVER_PASSWORD}
# Update admin's password
argocd --insecure --grpc-web --server ${ARGOCD_ROUTE}:443 account update-password --current-password ${ARGOCD_SERVER_PASSWORD} --new-password

ืœืื—ืจ ื”ืฉืœืžืช ืฉืœื‘ื™ื ืืœื”, ืชื•ื›ืœ ืœืขื‘ื•ื“ ืขื ืฉืจืช ArgoCD ื“ืจืš ืžืกื•ืฃ ื”ืื™ื ื˜ืจื ื˜ ArgoCD WebUI ืื• ื›ืœื™ ืฉื•ืจืช ื”ืคืงื•ื“ื” ArgoCD Cli.
https://blog.openshift.com/is-it-too-late-to-integrate-gitops/

GitOps - ืืฃ ืคืขื ืœื ืžืื•ื—ืจ ืžื“ื™

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

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

oc create -f https://raw.githubusercontent.com/openshift/federation-dev/master/labs/lab-4-assets/namespace.yaml
oc create -f https://raw.githubusercontent.com/openshift/federation-dev/master/labs/lab-4-assets/deployment.yaml
oc create -f https://raw.githubusercontent.com/openshift/federation-dev/master/labs/lab-4-assets/service.yaml
oc expose svc/httpd -n simple-app

ืื– ื™ืฉ ืœื ื• ืืคืœื™ืงืฆื™ื” ื‘ืขื‘ื•ื“ืช ื™ื“. ื›ืขืช ื™ืฉ ืœื”ืขื‘ื™ืจ ืื•ืชื• ืชื—ืช ื ื™ื”ื•ืœ GitOps ืœืœื ืื•ื‘ื“ืŸ ื–ืžื™ื ื•ืช. ื‘ืงื™ืฆื•ืจ, ื–ื” ืขื•ืฉื” ืืช ื–ื”:

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

ื›ืคื™ ืฉื›ื‘ืจ ื”ื•ื–ื›ืจ ื‘ืงื•ื“ื ัั‚ะฐั‚ัŒะต, ื‘-GitOps ื™ืฉ ืžืงื•ืจ ืžื™ื“ืข ืื—ื“ ื•ื™ื—ื™ื“ ืขืœ ื›ืœ ื”ืื•ื‘ื™ื™ืงื˜ื™ื ื‘ืืฉื›ื•ืœ(ื™) Kubernetes - ืžืื’ืจ Git. ืœืื—ืจ ืžื›ืŸ, ืื ื• ื™ื•ืฆืื™ื ืžื ืงื•ื“ืช ื”ื ื—ื” ืฉื”ืืจื’ื•ืŸ ืฉืœืš ื›ื‘ืจ ืžืฉืชืžืฉ ื‘ืžืื’ืจ Git. ื–ื” ื™ื›ื•ืœ ืœื”ื™ื•ืช ืฆื™ื‘ื•ืจื™ ืื• ืคืจื˜ื™, ืื‘ืœ ื–ื” ื—ื™ื™ื‘ ืœื”ื™ื•ืช ื ื’ื™ืฉ ืœืืฉื›ื•ืœื•ืช Kubernetes. ื–ื” ื™ื›ื•ืœ ืœื”ื™ื•ืช ืื•ืชื• ืžืื’ืจ ื›ืžื• ืขื‘ื•ืจ ืงื•ื“ ื™ื™ืฉื•ืžื™ื, ืื• ืžืื’ืจ ื ืคืจื“ ืฉื ื•ืฆืจ ื‘ืžื™ื•ื—ื“ ืขื‘ื•ืจ ืคืจื™ืกื•ืช. ืžื•ืžืœืฅ ืœืงื‘ืœ ื”ืจืฉืื•ืช ืงืคื“ื ื™ื•ืช ื‘ืžืื’ืจ ืฉื›ืŸ ืฉื ื™ืื•ื—ืกื ื• ืกื•ื“ื•ืช, ืžืกืœื•ืœื™ื ื•ืฉืืจ ื“ื‘ืจื™ื ืจื’ื™ืฉื™ื ืœืื‘ื˜ื—ื”.

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

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

oc get namespace simple-app -o yaml --export > namespace.yaml
oc get deployment httpd -o yaml -n simple-app --export > deployment.yaml
oc get service httpd -o yaml -n simple-app --export > service.yaml
oc get route httpd -o yaml -n simple-app --export > route.yaml

ื›ืขืช ื ืขืจื•ืš ืืช ื”ืงื•ื‘ืฅ deployment.yaml ื›ื“ื™ ืœื”ืกื™ืจ ืืช ื”ืฉื“ื” ืฉืืจื’ื• CD ืœื ื™ื›ื•ืœ ืœืกื ื›ืจืŸ.

sed -i '/sgeneration: .*/d' deployment.yaml

ื‘ื ื•ืกืฃ, ื™ืฉ ืœืฉื ื•ืช ืืช ื”ืžืกืœื•ืœ. ืชื—ื™ืœื” ื ื’ื“ื™ืจ ืžืฉืชื ื” ืžืจื•ื‘ื” ืฉื•ืจื•ืช ื•ืœืื—ืจ ืžื›ืŸ ื ื—ืœื™ืฃ ืืช ingress: null ื‘ืชื•ื›ืŸ ืฉืœ ืื•ืชื• ืžืฉืชื ื”.

export ROUTE="  ingress:                                                            
    - conditions:
        - status: 'True'
          type: Admitted"

sed -i "s/  ingress: null/$ROUTE/g" route.yaml

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

git commit -am โ€˜initial commit of objectsโ€™
git push origin master

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

argocd repo add https://github.com/cooktheryan/blogpost

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

argocd app create --project default 
--name simple-app --repo https://github.com/cooktheryan/blogpost.git 
--path . --dest-server https://kubernetes.default.svc 
--dest-namespace simple-app --revision master --sync-policy none

ื‘ืจื’ืข ืฉื™ื™ืฉื•ื ืžืฆื•ื™ืŸ ื‘ืชืงืœื™ื˜ื•ืจ Argo, ืขืจื›ืช ื”ื›ืœื™ื ืžืชื—ื™ืœื” ืœื‘ื“ื•ืง ืื•ื‘ื™ื™ืงื˜ื™ื ืฉื›ื‘ืจ ื ืคืจืกื• ืžื•ืœ ื”ื”ื’ื“ืจื•ืช ื‘ืžืื’ืจ. ื‘ื“ื•ื’ืžื” ืฉืœื ื•, ืกื ื›ืจื•ืŸ ื•ื ื™ืงื•ื™ ืื•ื˜ื•ืžื˜ื™ ืžื•ืฉื‘ืชื™ื, ื›ืš ืฉื”ืืœืžื ื˜ื™ื ืขื“ื™ื™ืŸ ืœื ืžืฉืชื ื™ื. ืฉื™ืžื• ืœื‘ ืฉื‘ืžืžืฉืง Argo CD ืœืืคืœื™ืงืฆื™ื” ืฉืœื ื• ื™ื”ื™ื” ื”ืกื˜ื˜ื•ืก "ืœื ืžืกื•ื ื›ืจืŸ" ืžื›ื™ื•ื•ืŸ ืฉืื™ืŸ ืชื•ื•ื™ืช ืฉ-ArgoCD ืžืกืคืงืช.
ื–ื• ื”ืกื™ื‘ื” ืฉื›ืืฉืจ ื ืชื—ื™ืœ ื‘ืกื ื›ืจื•ืŸ ืžืขื˜ ืžืื•ื—ืจ ื™ื•ืชืจ, ื”ืื•ื‘ื™ื™ืงื˜ื™ื ืœื ื™ื™ืคืจืกื• ืžื—ื“ืฉ.

ื›ืขืช ื ืขืจื•ืš ื ื™ืกื•ื™ ื›ื“ื™ ืœื•ื•ื“ื ืฉืื™ืŸ ืฉื’ื™ืื•ืช ื‘ืงื‘ืฆื™ื ืฉืœื ื•.

argocd app sync simple-app --dry-run

ืื ืื™ืŸ ืฉื’ื™ืื•ืช, ืืชื” ื™ื›ื•ืœ ืœื”ืžืฉื™ืš ืœืกื ื›ืจื•ืŸ.

argocd app sync simple-app

ืœืื—ืจ ื”ืคืขืœืช ื”ืคืงื•ื“ื” argocd get ื‘ืืคืœื™ืงืฆื™ื” ืฉืœื ื•, ืขืœื™ื ื• ืœืจืื•ืช ืฉืกื˜ื˜ื•ืก ื”ืืคืœื™ืงืฆื™ื” ื”ืฉืชื ื” ืœ-Brea ืื• Synced. ื”ืžืฉืžืขื•ืช ื”ื™ื ืฉื›ืœ ื”ืžืฉืื‘ื™ื ื‘ืžืื’ืจ Git ืชื•ืืžื™ื ื›ืขืช ืœืื•ืชื ืžืฉืื‘ื™ื ืฉื›ื‘ืจ ื ืคืจืกื•.

argocd app get simple-app
Name:               simple-app
Project:            default
Server:             https://kubernetes.default.svc
Namespace:          simple-app
URL:                https://argocd-server-route-argocd.apps.example.com/applications/simple-app
Repo:               https://github.com/cooktheryan/blogpost.git
Target:             master
Path:               .
Sync Policy:        <none>
Sync Status:        Synced to master (60e1678)
Health Status:      Healthy
...   

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

argocd app set simple-app --sync-policy automated --auto-prune

ืื–, ื”ื‘ืื ื• ื‘ื”ืฆืœื—ื” ืืคืœื™ืงืฆื™ื” ืชื—ืช ืฉืœื™ื˜ืช GitOps ืฉื‘ืชื—ื™ืœื” ืœื ื”ืฉืชืžืฉื” ื‘-GitOps ื‘ืฉื•ื ืฆื•ืจื”.

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

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