ื”ืงื“ืžื” ืฆื• GitOps ืคึฟืึทืจ OpenShift

ื”ื™ื™ึทื ื˜ ืžื™ืจ ื•ื•ืขืœืŸ ืจืขื“ืŸ ื•ื•ืขื’ืŸ ื“ื™ ืคึผืจื™ื ืกืึทืคึผืึทืœื– ืื•ืŸ ืžืึธื“ืขืœืก ืคื•ืŸ GitOps, ื•ื•ื™ ื’ืขื–ื•ื ื˜ ื•ื•ื™ ื•ื•ื™ ื“ื™ ืžืึธื“ืขืœืก ื–ืขื ืขืŸ ื™ืžืคึผืœืึทืžืขื ืึทื“ ืื•ื™ืฃ ื“ื™ OpenShift ืคึผืœืึทื˜ืคืึธืจืžืข. ืึทืŸ ื™ื ื˜ืขืจืึทืงื˜ื™ื•ื•ืข ืคื™ืจืขืจ ืื•ื™ืฃ ื“ืขื ื˜ืขืžืข ืื™ื– ื‘ื ื™ืžืฆื ะฟะพ ััั‹ะปะบะต.

ื”ืงื“ืžื” ืฆื• GitOps ืคึฟืึทืจ OpenShift

ืื™ืŸ ืึท ื ืึทื˜ืฉืขืœ, GitOps ืื™ื– ืึท ืกื›ื•ื ืคื•ืŸ ืคึผืจืึทืงื˜ื™ืกื™ื– ืคึฟืึทืจ ื ื™ืฆืŸ Git pull ืจื™ืงื•ื•ืขืก ืฆื• ืคื™ืจืŸ ื™ื ืคืจืึทืกื˜ืจืึทืงื˜ืฉืขืจ ืื•ืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทื ื–. ื“ื™ Git ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืื™ืŸ GitOps ืื™ื– ื‘ืื”ืื ื“ืœื˜ ื•ื•ื™ ืึท ืื™ื™ืŸ ืžืงื•ืจ ืคื•ืŸ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ื•ื•ืขื’ืŸ ื“ื™ ืฉื˜ืึทื˜ ืคื•ืŸ ื“ื™ ืกื™ืกื˜ืขื, ืื•ืŸ ืงื™ื™ืŸ ืขื ื“ืขืจื•ื ื’ืขืŸ ืฆื• ื“ืขื ืฉื˜ืึทื˜ ื–ืขื ืขืŸ ื’ืึธืจ ื˜ืจื™ื™ืกืึทื‘ืึทืœ ืื•ืŸ ืึทื“ื™ื˜ืึทื‘ืึทืœ.

ื“ืขืจ ื’ืขื“ืึทื ืง ืคื•ืŸ ื˜ื•ื™ืฉืŸ ื˜ืจืึทืงื™ื ื’ ืื™ืŸ GitOps ืื™ื– ืื™ืŸ ืงื™ื™ืŸ ืžื™ื˜ืœ ื ื™ื™ึท; ื“ืขืจ ืฆื•ื’ืึทื ื’ ืื™ื– ืœืึทื ื’ ืฉื•ื™ืŸ ื’ืขื ื™ืฆื˜ ื›ึผืžืขื˜ ื™ื•ื ืึทื•ื•ืขืจืกืึทืœื™ ื•ื•ืขืŸ ืืจื‘ืขื˜ืŸ ืžื™ื˜ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืžืงื•ืจ ืงืึธื“. GitOps ืคืฉื•ื˜ ื™ืžืคึผืœืึทืžืึทื ืฅ ืขื ืœืขืš ืคึฟืขื™ึดืงื™ื™ื˜ืŸ (ืจืขืฆืขื ื–ื™ืขืก, ืฆื™ืขืŸ ืจื™ืงื•ื•ืขืก, ื˜ืึทื’ืก, ืืื–"ื• ื•) ืื™ืŸ ื™ื ืคืจืึทืกื˜ืจืึทืงื˜ืฉืขืจ ืื•ืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืคืึทืจื•ื•ืึทืœื˜ื•ื ื’ ืื•ืŸ ื’ื™ื˜ ืขื ืœืขืš ื‘ืขื ืขืคื™ืฅ ื•ื•ื™ ืื™ืŸ ื“ื™ ืคืึทืœ ืคื•ืŸ ืžืงื•ืจ ืงืึธื“ ืคืึทืจื•ื•ืึทืœื˜ื•ื ื’.

ืขืก ืื™ื– ืงื™ื™ืŸ ืึทืงืึทื“ืขืžื™ืง ื“ืขืคึฟื™ื ื™ืฆื™ืข ืึธื“ืขืจ ื‘ืื•ื•ื™ืœื™ืงื˜ ื’ืึทื ื’ ืคื•ืŸ ื›ึผืœืœื™ื ืคึฟืึทืจ GitOps, ื‘ืœื•ื™ื– ืึท ืกื›ื•ื ืคื•ืŸ ืคึผืจื™ื ืกืึทืคึผืึทืœื– ืื•ื™ืฃ ื•ื•ืึธืก ื“ื™ ืคื™ืจ ืื™ื– ื’ืขื‘ื•ื™ื˜:

  • ื“ื™ ื“ืขืงืœืึทืจืึทื˜ื™ื•ื•ืข ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’ ืคื•ืŸ ื“ื™ ืกื™ืกื˜ืขื ืื™ื– ืกื˜ืึธืจื“ ืื™ืŸ ื“ื™ Git ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ (ืงืึธื ืคื™ื’ืก, ืžืึธื ื™ื˜ืึธืจื™ื ื’, ืืื–"ื• ื•).
  • ืฉื˜ืึทื˜ ืขื ื“ืขืจื•ื ื’ืขืŸ ื–ืขื ืขืŸ ื’ืขืžืื›ื˜ ื“ื•ืจืš ืฆื™ืขืŸ ืจื™ืงื•ื•ืขืก.
  • ื“ื™ ืฉื˜ืึทื˜ ืคื•ืŸ ืคืœื™ืกื ื“ื™ืง ืกื™ืกื˜ืขืžืขืŸ ืื™ื– ื’ืขื‘ืจืื›ื˜ ืื™ืŸ ืฉื•ืจื” ืžื™ื˜ ื“ื™ ื“ืึทื˜ืŸ ืื™ืŸ ื“ื™ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ื ื™ืฆืŸ Git ืฉื˜ื•ืคึผืŸ ืจื™ืงื•ื•ืขืก.

GitOps ืคึผืจื™ื ืกืึทืคึผืึทืœื–

  • ืกื™ืกื˜ืขื ื“ืขืคึฟื™ื ื™ืฆื™ืข ื–ืขื ืขืŸ ื“ื™ืกืงืจื™ื™ื‘ื“ ื•ื•ื™ ืžืงื•ืจ ืงืึธื“

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

  • ื“ืขืจ ื’ืขื•ื•ืืœื˜ ืฉื˜ืึทื˜ ืื•ืŸ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืคื•ืŸ ืกื™ืกื˜ืขืžืขืŸ ื–ืขื ืขืŸ ื‘ืึทืฉื˜ื™ืžื˜ ืื•ืŸ ื•ื•ืขืจืกื™ืขืก ืื™ืŸ Git

ื“ื•ืจืš ืกื˜ืึธืจื™ื ื’ ืื•ืŸ ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ื’ืขื‘ืขื˜ืŸ ืกื™ืกื˜ืขื ืคื•ืŸ ืกื™ืกื˜ืขืžืขืŸ ืื™ืŸ Git, ืžื™ืจ ืงืขื ืขืŸ ืœื™ื™ื›ื˜ ืจืึธื•ืœื“ ืื•ื™ืก ืื•ืŸ ืฆื•ืจื™ืงืงืจื™ื’ืŸ ืขื ื“ืขืจื•ื ื’ืขืŸ ืฆื• ืกื™ืกื˜ืขืžืขืŸ ืื•ืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื–. ืžื™ืจ ืงืขื ืขืŸ ืื•ื™ืš ื ื•ืฆืŸ Git ืก ื–ื™ื›ืขืจื”ื™ื™ื˜ ืžืขืงืึทื ื™ื–ืึทืžื– ืฆื• ืงืึธื ื˜ืจืึธืœื™ืจืŸ ืงืึธื“ ืึธื•ื ืขืจืฉื™ืคึผ ืื•ืŸ ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ื“ื™ ืึธื˜ืึทื ื˜ื™ืกื™ื˜ื™.

  • ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืขื ื“ืขืจื•ื ื’ืขืŸ ืงืขื ืขืŸ ื–ื™ื™ืŸ ืื•ื™ื˜ืึธืžืึทื˜ื™ืฉ ื’ืขื•ื•ืขื ื“ื˜ ื“ื•ืจืš ืฆื™ืขืŸ ืจื™ืงื•ื•ืขืก

ืžื™ื˜ Git pull ืจื™ืงื•ื•ืขืก, ืžื™ืจ ืงืขื ืขืŸ ืœื™ื™ื›ื˜ ืงืึธื ื˜ืจืึธืœื™ืจืŸ ื•ื•ื™ ืขื ื“ืขืจื•ื ื’ืขืŸ ื–ืขื ืขืŸ ื’ืขื•ื•ืขื ื“ื˜ ืฆื• ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทื ื– ืื™ืŸ ื“ื™ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ื–ื™ื™ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื’ืขื‘ืŸ ืฆื• ืื ื“ืขืจืข ืžืึทื ืฉืึทืคึฟื˜ ืžื™ื˜ื’ืœื™ื“ืขืจ ืคึฟืึทืจ ืึธืคึผืฉืึทืฆื•ื ื’ ืึธื“ืขืจ ืœื•ื™ืคืŸ ื“ื•ืจืš ืกื™ ื˜ืขืกืฅ, ืขื˜ืง.

ืื•ืŸ ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืฆื™ื™ื˜, ืขืก ืื™ื– ื ื™ื˜ ื“ืึทืจืคึฟืŸ ืฆื• ืคืึทืจืฉืคึผืจื™ื™ื˜ืŸ ืึทื“ืžื™ืŸ ื›ื•ื—ื•ืช ืœื™ื ืงืก ืื•ืŸ ืจืขื›ื˜. ืฆื• ื™ื‘ืขืจื’ืขื‘ืŸ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืขื ื“ืขืจื•ื ื’ืขืŸ, ื™ื•ื–ืขืจื– ื ืึธืจ ื“ืึทืจืคึฟืŸ ืฆื•ื ืขืžืขืŸ ืคึผืขืจืžื™ืฉืึทื ื– ืื™ืŸ ื“ื™ Git ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ื•ื•ื• ื“ื™ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทื ื– ื–ืขื ืขืŸ ืกื˜ืึธืจื“.

  • ืคื™ืงืกื™ืจ ื“ื™ ืคึผืจืึธื‘ืœืขื ืคื•ืŸ ืึทื ืงืึทื ื˜ืจืึธื•ืœื“ ื“ืจื™ืคื˜ ืคื•ืŸ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทื ื–

ืึทืžืึธืœ ื“ื™ ื’ืขื‘ืขื˜ืŸ ืฉื˜ืึทื˜ ืคื•ืŸ ื“ื™ ืกื™ืกื˜ืขื ืื™ื– ืกื˜ืึธืจื“ ืื™ืŸ ืึท Git ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™, ืึทืœืข ื•ื•ืึธืก ืžื™ืจ ื”ืึธื‘ืŸ ืฆื• ื˜ืึธืŸ ืื™ื– ืฆื• ื’ืขืคึฟื™ื ืขืŸ ื•ื•ื™ื™ื›ื•ื•ืืจื’ ื•ื•ืึธืก ื•ื•ืขื˜ ืขื ืฉื•ืจ ืึทื– ื“ื™ ืงืจืึทื ื˜ ืฉื˜ืึทื˜ ืคื•ืŸ ื“ื™ ืกื™ืกื˜ืขื ืฉื˜ื™ืžืขืŸ ืฆื• ื–ื™ื™ืŸ ื’ืขื•ื•ืืœื˜ ืฉื˜ืึทื˜. ืื•ื™ื‘ ื“ืึธืก ืื™ื– ื ื™ืฉื˜ ื“ืขืจ ืคืึทืœ, ื“ื™ ื•ื•ื™ื™ื›ื•ื•ืืจื’ ื–ืึธืœ - ื“ื™ืคึผืขื ื“ื™ื ื’ ืื•ื™ืฃ ื“ื™ ืกืขื˜ื˜ื™ื ื’ืก - ืึธื“ืขืจ ืขืœื™ืžื™ื ื™ืจืŸ ื“ื™ ื“ื™ืกืงืจืขืคึผืึทื ืกื™ ืึทืœื™ื™ืŸ, ืึธื“ืขืจ ื’ืขื‘ื  ืฆื• ื•ื•ื™ืกืŸ ืื•ื ื“ื– ื•ื•ืขื’ืŸ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ื“ืจื™ืคื˜.

GitOps ืžืึธื“ืขืœืก ืคึฟืึทืจ OpenShift

ืื•ื™ืฃ-ืงื ื•ื™ืœ ืžื™ื˜ืœ ืจืขืงืึธื ืกื™ืœืขืจ

ืœื•ื™ื˜ ื“ืขื ืžืึธื“ืขืœ, ื“ืขืจ ืงื ื•ื™ืœ ื”ืื˜ ืึท ืงืึธื ื˜ืจืึธืœืœืขืจ ื•ื•ืึธืก ืื™ื– ืคืึทืจืึทื ื˜ื•ื•ืึธืจื˜ืœืขืš ืคึฟืึทืจ ืงืึทืžืคึผืขืจื™ื ื’ Kubernetes ืจืขืกื•ืจืกืŸ (YAML ื˜ืขืงืขืก) ืื™ืŸ ื“ื™ Git ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืžื™ื˜ ื“ื™ ืคืึทืงื˜ื™ืฉ ืจืขืกื•ืจืกืŸ ืคื•ืŸ ื“ืขื ืงื ื•ื™ืœ. ืื•ื™ื‘ ื“ื™ืกืงืจืขืคึผืึทื ืกื™ื– ื–ืขื ืขืŸ ื“ื™ื˜ืขืงื˜ืึทื“, ื“ืขืจ ืงืึธื ื˜ืจืึธืœืœืขืจ ืกืขื ื“ื– ื ืึธื•ื˜ืึทืคืึทืงื™ื™ืฉืึทื ื– ืื•ืŸ ืขืคืฉืขืจ ื ืขืžืขืŸ ืงืึทืžืฃ ืฆื• ืคืึทืจืจื™ื›ื˜ืŸ ื“ื™ ื“ื™ืกืงืจืขืคึผืึทื ืกื™ื–. ื“ืขืจ GitOps ืžืึธื“ืขืœ ืื™ื– ื’ืขื ื™ืฆื˜ ืื™ืŸ Anthos Config Management ืื•ืŸ Weaveworks Flux.

ื”ืงื“ืžื” ืฆื• GitOps ืคึฟืึทืจ OpenShift

ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ืžื™ื˜ืœ ืจืขืงืึธื ืกื™ืœืขืจ (ืฉื˜ื•ืคึผืŸ)

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

ื”ืงื“ืžื” ืฆื• GitOps ืคึฟืึทืจ OpenShift

GitOps ืื•ื™ืฃ ื“ื™ OpenShift ืคึผืœืึทื˜ืคืึธืจืžืข

ืึทื“ืžื™ื ื™ืกื˜ืจืึทืฆื™ืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹ืžืึทืœื˜ื™-ืงื ื•ื™ืœ ืงื•ื‘ืขืจื ืขื˜ืขืก ื™ื ืคืจืึทืกื˜ืจืึทืงื˜ืฉืขืจ

ืžื™ื˜ ื“ื™ ืคืึทืจืฉืคึผืจื™ื™ื˜ืŸ ืคื•ืŸ Kubernetes ืื•ืŸ ื“ื™ ื’ืจืึธื•ื™ื ื’ ืคึผืึธืคึผื•ืœืึทืจื™ื˜ืขื˜ ืคื•ืŸ ืžื•ืœื˜ื™-ื•ื•ืึธืœืงืŸ ืกื˜ืจืึทื˜ืขื’ื™ืขืก ืื•ืŸ ื‘ืจืขื’ ืงืึทืžืคึผื™ื•ื˜ื™ื ื’, ื“ื™ ื“ื•ืจื›ืฉื ื™ื˜ืœืขืš ื ื•ืžืขืจ ืคื•ืŸ OpenShift ืงืœืึทืกื˜ืขืจื– ืคึผืขืจ ืงื•ื ื” ืื™ื– ืื•ื™ืš ื™ื ืงืจื™ืกื™ื ื’.

ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ื•ื•ืขืŸ ื ื™ืฆืŸ ื‘ืจืขื’ ืงืึทืžืคึผื™ื•ื˜ื™ื ื’, ืื™ื™ืŸ ืงื•ื ื” ืก ืงืœืึทืกื˜ืขืจื– ืงืขื ืขืŸ ื–ื™ื™ืŸ ื“ื™ืคึผืœื•ื™ื“ ืื™ืŸ ื”ื•ื ื“ืขืจื˜ืขืจ ืึธื“ืขืจ ืืคื™ืœื• ื˜ื•ื™ื–ื ื˜ืขืจ. ื•ื•ื™ ืึท ืจืขื–ื•ืœื˜ืึทื˜, ืขืจ ืื™ื– ื’ืขืฆื•ื•ื•ื ื’ืขืŸ ืฆื• ืคื™ืจืŸ ืขื˜ืœืขื›ืข ืคืจื™ื™ึท ืึธื“ืขืจ ืงืึธื•ืึธืจื“ืึทื ื™ื™ื˜ื™ื“ OpenShift ืงืœืึทืกื˜ืขืจื– ืื™ืŸ ื“ื™ ืฆื™ื‘ื•ืจ ื•ื•ืึธืœืงืŸ ืื•ืŸ ืื•ื™ืฃ-ื”ืึทื ืึธื›ืข.

ืื™ืŸ ื“ืขื ืคืึทืœ, ืึท ืคึผืœืึทืฅ ืคื•ืŸ ืคึผืจืึธื‘ืœืขืžืก ืžื•ื–ืŸ ื–ื™ื™ืŸ ืกืึทืœื•ื•ื“, ืกืคึผืขืฆื™ืขืœ:

  • ืงืึธื ื˜ืจืึธืœื™ืจืŸ ืึทื– ื“ื™ ืงืœืึทืกื˜ืขืจื– ื–ืขื ืขืŸ ืื™ืŸ ืึทืŸ ื™ื™ื“ืขื ื™ืงืึทืœ ืฉื˜ืึทื˜ (ืงืึธื ืคื™ื’ืขืก, ืžืึธื ื™ื˜ืึธืจื™ื ื’, ืกื˜ืึธืจื™ื“ื–ืฉ, ืืื–"ื• ื•)
  • ืจื™ืงืจื™ื™ื™ื˜ (ืึธื“ืขืจ ื•ืžืงืขืจืŸ) ืงืœืึทืกื˜ืขืจื– ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ืึท ื‘ืึทื•ื•ื•ืกื˜ ืฉื˜ืึทื˜.
  • ืฉืึทืคึฟืŸ ื ื™ื™ึทืข ืงืœืึทืกื˜ืขืจื– ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ืึท ื‘ืึทื•ื•ื•ืกื˜ ืฉื˜ืึทื˜.
  • ืจืึธื•ืœื™ื ื’ ืขื ื“ืขืจื•ื ื’ืขืŸ ืฆื• ืงื™ื™ืคืœ OpenShift ืงืœืึทืกื˜ืขืจื–.
  • ืฆื•ืจื™ืงืงืจื™ื’ืŸ ืขื ื“ืขืจื•ื ื’ืขืŸ ืื™ืŸ ืงื™ื™ืคืœ OpenShift ืงืœืึทืกื˜ืขืจื–.
  • ืœื™ื ืง ื˜ืขืžืคึผืœืึทื˜ืข ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทื ื– ืฆื• ืคืึทืจืฉื™ื“ืขื ืข ื™ื ื•ื•ื™ื™ืจืึทื ืžืึทื ืฅ.

ืึทืคึผืคึผืœื™ืงืึทื˜ื™ืึธืŸ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทื ื–

ื‘ืขืฉืึทืก ื–ื™ื™ืขืจ ืœื™ื™ืคืกื™ื™ืง, ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืึธืคื˜ ืคืึธืจืŸ ื“ื•ืจืš ืึท ืงื™ื™ื˜ ืคื•ืŸ ืงืœืึทืกื˜ืขืจื– (ื“ืขื•ื•, ื‘ื™ื ืข, ืืื–"ื• ื•) ืื™ื™ื“ืขืจ ื–ื™ื™ ืขื ื“ื™ืงืŸ ืื™ืŸ ืึท ืคึผืจืึธื“ื•ืงืฆื™ืข ืงื ื•ื™ืœ. ืื™ืŸ ืึทื“ื™ืฉืึทืŸ, ืจืขื›ื˜ ืฆื• ืึทื•ื•ื™ื™ืœืึทื‘ื™ืœืึทื˜ื™ ืื•ืŸ ืกืงืึทืœืึทื‘ื™ืœื™ื˜ื™ ืจืขืงื•ื•ื™ืจืขืžืขื ืฅ, ืงืึทืกื˜ืึทืžืขืจื– ืึธืคื˜ ืฆืขื•ื•ื™ืงืœืขืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืึทืจื™ื‘ืขืจ ืงื™ื™ืคืœ ืื•ื™ืฃ-ื”ืึทื ืึธื›ืข ืงืœืึทืกื˜ืขืจื– ืึธื“ืขืจ ืงื™ื™ืคืœ ืžืงื•ืžื•ืช ืคื•ืŸ ืึท ืฆื™ื‘ื•ืจ ื•ื•ืึธืœืงืŸ ืคึผืœืึทื˜ืคืึธืจืžืข.

ืื™ืŸ ื“ืขื ืคืึทืœ, ื“ื™ ืคืืœื’ืขื ื“ืข ื˜ืึทืกืงืก ืžื•ื–ืŸ ื–ื™ื™ืŸ ืกืึทืœื•ื•ื“:

  • ืคืึทืจื–ื™ื›ืขืจืŸ ื“ื™ ื‘ืึทื•ื•ืขื’ื•ื ื’ ืคื•ืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– (ื‘ื™ื ืึทืจื™ืขืก, ืงืึธื ืคื™ื’ืก, ืืื–"ื• ื•) ืฆื•ื•ื™ืฉืŸ ืงืœืึทืกื˜ืขืจื– (ื“ืขื•ื•, ื‘ื™ื ืข, ืืื–"ื• ื•).
  • ืจืึธื•ืœื™ื ื’ ืขื ื“ืขืจื•ื ื’ืขืŸ ืฆื• ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– (ื‘ื™ื ืึทืจื™ืขืก, ืงืึธื ืคื™ื’ืก, ืืื–"ื• ื•) ืื™ืŸ ืขื˜ืœืขื›ืข OpenShift ืงืœืึทืกื˜ืขืจื–.
  • ืฆื•ืจื™ืงืงืจื™ื’ืŸ ืขื ื“ืขืจื•ื ื’ืขืŸ ืฆื• ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืฆื• ืึท ืคืจื™ืขืจื“ื™ืงืŸ ื‘ืึทื•ื•ื•ืกื˜ ืฉื˜ืึทื˜.

OpenShift GitOps ื ื•ืฆืŸ ืงืึทืกืขืก

1. ืึทืคึผืœื™ื™ื™ื ื’ ืขื ื“ืขืจื•ื ื’ืขืŸ ืคื•ืŸ ื“ื™ ื’ื™ื˜ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™

ื ืงื ื•ื™ืœ ืึทื“ืžื™ื ื™ืกื˜ืจืึทื˜ืึธืจ ืงืขื ืขืŸ ืงืจืึธื OpenShift ืงื ื•ื™ืœ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทื ื– ืื™ืŸ ืึท Git ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืื•ืŸ ืื•ื™ื˜ืึธืžืึทื˜ื™ืฉ ืฆื•ืœื™ื™ื’ืŸ ื–ื™ื™ ืฆื• ืขืคืขืจื˜ืœืึทืกืœื™ ืฉืึทืคึฟืŸ ื ื™ื™ึทืข ืงืœืึทืกื˜ืขืจื– ืื•ืŸ ื‘ืจืขื ื’ืขืŸ ื–ื™ื™ ืื™ืŸ ืึท ืฉื˜ืึทื˜ ื™ื™ื“ืขื ื™ืงืึทืœ ืฆื• ื“ื™ ื‘ืึทื•ื•ื•ืกื˜ ืฉื˜ืึทื˜ ืกื˜ืึธืจื“ ืื™ืŸ ื“ื™ Git ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™.

2. ืกื™ื ื’ืงืจืึทื ืึทื–ื™ื™ืฉืึทืŸ ืžื™ื˜ ืกืขืงืจืขื˜ ืžืึทื ืึทื’ืขืจ

ื“ืขืจ ืึทื“ืžื™ื ื™ืกื˜ืจืึทื˜ืึธืจ ื•ื•ืขื˜ ืื•ื™ืš ื ื•ืฅ ืคื•ืŸ ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ืกื™ื ื’ืงืจืึทื ื™ื™ื– OpenShift ืกื•ื“ ืึทื‘ื“ื–ืฉืขืงืฅ ืžื™ื˜ ืฆื•ื ืขืžืขืŸ ื•ื•ื™ื™ื›ื•ื•ืืจื’ ื•ื•ื™ ื•ื•ืึธืœื˜ ืฆื• ืคื™ืจืŸ ื–ื™ื™ ืžื™ื˜ ืกืคึผืขืฆื™ืขืœ ืžื›ืฉื™ืจื™ื ื•ื•ืึธืก ื–ืขื ืขืŸ ื‘ืืฉืืคืŸ ืคึฟืึทืจ ื“ืขื.

3. ืงืึธื ื˜ืจืึธืœ ืคื•ืŸ ื“ืจื™ืคื˜ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทื ื–

ื“ืขืจ ืึทื“ืžื™ื ื™ืกื˜ืจืึทื˜ืึธืจ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืื™ืŸ ื˜ื•ื™ื•ื•ืข ืื•ื™ื‘ OpenShift GitOps ื–ื™ืš ื™ื™ื“ืขื ืึทืคื™ื™ื“ ืื•ืŸ ื•ื•ืึธืจื ื– ื•ื•ืขื’ืŸ ื“ื™ืกืงืจืขืคึผืึทื ืกื™ื– ืฆื•ื•ื™ืฉืŸ ืคืึทืงื˜ื™ืฉ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทื ื– ืื•ืŸ ื“ื™ ืกืคึผืขืกื™ืคื™ืขื“ ืื™ืŸ ื“ื™ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™, ืึทื–ื•ื™ ื–ื™ื™ ืงืขื ืขืŸ ื’ืขืฉื•ื•ื™ื ื“ ืจื™ืกืคึผืึทื ื“ ืฆื• ื“ืจื™ืคื˜.

4. ื ืึธื•ื˜ืึทืคืึทืงื™ื™ืฉืึทื ื– ื•ื•ืขื’ืŸ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ื“ืจื™ืคื˜

ื–ื™ื™ ื–ืขื ืขืŸ ื ื•ืฆื™ืง ืื™ืŸ ื“ืขื ืคืึทืœ ื•ื•ืขืŸ ื“ืขืจ ืึทื“ืžื™ื ื™ืกื˜ืจืึทื˜ืึธืจ ื•ื•ื™ืœ ื’ืขืฉื•ื•ื™ื ื“ ืœืขืจื ืขืŸ ื•ื•ืขื’ืŸ ื“ืจื™ืคื˜ ืงืึทืกืขืก ืคื•ืŸ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืฆื• ื’ืขืฉื•ื•ื™ื ื“ ื ืขืžืขืŸ ืฆื•ื ืขืžืขืŸ ืžื™ื˜ืœืขืŸ ืื•ื™ืฃ ื–ื™ื™ืŸ ืื™ื™ื’ืŸ.

5. ืžืึทื ื•ืึทืœ ืกื™ื ื’ืงืจืึทื ืึทื–ื™ื™ืฉืึทืŸ ืคื•ืŸ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทื ื– ื•ื•ืขืŸ ื“ืจื™ืคื˜ื™ื ื’

ืึทืœืึทื•ื– ื“ืขืจ ืึทื“ืžื™ื ื™ืกื˜ืจืึทื˜ืึธืจ ืฆื• ืกื™ื ื’ืงืจืึทื ื™ื™ื– ื“ื™ OpenShift ืงื ื•ื™ืœ ืžื™ื˜ ื“ื™ Git ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืื™ืŸ ื“ื™ ื’ืขืฉืขืขื ื™ืฉ ืคื•ืŸ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ื“ืจื™ืคื˜, ืฆื• ื’ืขืฉื•ื•ื™ื ื“ ืฆื•ืจื™ืงืงื•ืžืขืŸ ื“ืขื ืงื ื•ื™ืœ ืฆื• ืึท ืคืจื™ืขืจื“ื™ืงืŸ ื‘ืึทื•ื•ื•ืกื˜ ืฉื˜ืึทื˜.

6.ืึทื•ื˜ืึธ-ืกื™ื ื’ืงืจืึทื ืึทื–ื™ื™ืฉืึทืŸ ืคื•ืŸ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทื ื– ื•ื•ืขืŸ ื“ืจื™ืคื˜ื™ื ื’

ื“ืขืจ ืึทื“ืžื™ื ื™ืกื˜ืจืึทื˜ืึธืจ ืงืขื ืขืŸ ืื•ื™ืš ืงืึทื ืคื™ื’ื™ืขืจ ื“ื™ OpenShift ืงื ื•ื™ืœ ืฆื• ืื•ื™ื˜ืึธืžืึทื˜ื™ืฉ ืกื™ื ื’ืงืจืึทื ื™ื™ื– ืžื™ื˜ ื“ื™ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ื•ื•ืขืŸ ืึท ื“ืจื™ืคื˜ ืื™ื– ื“ื™ื˜ืขืงื˜ืึทื“, ืึทื–ื•ื™ ืึทื– ื“ื™ ืงื ื•ื™ืœ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืฉื˜ืขื ื“ื™ืง ื’ืœื™ื™ึทื›ืŸ ื“ื™ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทื ื– ืื™ืŸ ื’ื™ื˜.

7. ืขื˜ืœืขื›ืข ืงืœืึทืกื˜ืขืจื– - ืื™ื™ื ืขืจ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™

ื“ืขืจ ืึทื“ืžื™ื ื™ืกื˜ืจืึทื˜ืึธืจ ืงืขื ืขืŸ ืงืจืึธื ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทื ื– ืคื•ืŸ ืขื˜ืœืขื›ืข ืคืึทืจืฉื™ื“ืขื ืข OpenShift ืงืœืึทืกื˜ืขืจื– ืื™ืŸ ืื™ื™ืŸ Git ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืื•ืŸ ืกืึทืœืขืงื˜ื™ื•ื•ืœื™ ืฆื•ืœื™ื™ื’ืŸ ื–ื™ื™ ื•ื•ื™ ื“ืืจืฃ.

8. ื›ื™ื™ืขืจืึทืจืงื™ ืคื•ืŸ ืงื ื•ื™ืœ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทื ื– (ื™ืจื•ืฉื”)

ื“ืขืจ ืึทื“ืžื™ื ื™ืกื˜ืจืึทื˜ืึธืจ ืงืขื ืขืŸ ืฉื˜ืขืœืŸ ืึท ื›ื™ื™ืขืจืึทืจืงื™ ืคื•ืŸ ืงื ื•ื™ืœ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทื ื– ืื™ืŸ ื“ื™ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ (ื‘ื™ื ืข, ืคึผืจืึธื“, ืึทืคึผ ืคึผืึธืจื˜ืคืขืœ, ืขื˜ืง ืžื™ื˜ ื™ืจื•ืฉื”). ืื™ืŸ ืื ื“ืขืจืข ื•ื•ืขืจื˜ืขืจ, ืขืก ืงืขื ืขืŸ ื‘ืึทืฉื˜ื™ืžืขืŸ ืฆื™ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทื ื– ื–ืึธืœ ื–ื™ื™ืŸ ื’ืขื•ื•ืขื ื“ื˜ ืฆื• ืื™ื™ื ืขืจ ืึธื“ืขืจ ืžืขืจ ืงืœืึทืกื˜ืขืจื–.

ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืื•ื™ื‘ ืึท ืึทื“ืžื™ื ื™ืกื˜ืจืึทื˜ืึธืจ ืฉื˜ืขืœื˜ ื“ื™ ื›ื™ื™ืขืจืึทืจืงื™ "ืคึผืจืึธื“ื•ืงืฆื™ืข ืงืœืึทืกื˜ืขืจื– (ืคึผืจืึธื“) โ†’ ืกื™ืกื˜ืขื ืจืขื ื˜ื’ืขื  ืงืœืึทืกื˜ืขืจื– โ†’ ืคึผืจืึธื“ื•ืงืฆื™ืข ืงืœืึทืกื˜ืขืจื– ืคื•ืŸ ืกื™ืกื˜ืขื ืจืขื ื˜ื’ืขื " ืื™ืŸ ื“ื™ ื’ื™ื˜ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™, ืึท ืงืึธืžื‘ื™ื ืึทืฆื™ืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹ื“ื™ ืคืืœื’ืขื ื“ืข ืงืึธื ืคื™ื’ืก ืื™ื– ื’ืขื•ื•ืขื ื“ื˜ ืฆื• ื“ื™ ืคึผืจืึธื“ื•ืงืฆื™ืข ืงืœืึทืกื˜ืขืจื– ืคื•ืŸ ืกื™ืกื˜ืขื X:

  • ืงืึธื ืคื™ื’ืก ืคึผืจืึธืกื˜ ืฆื• ืึทืœืข ืคึผืจืึธื“ื•ืงืฆื™ืข ืงืœืึทืกื˜ืขืจื–.
  • ืงืึธื ืคื™ื’ืก ืคึฟืึทืจ ื“ื™ ืกื™ืกื˜ืขื X ืงื ื•ื™ืœ.
  • ืงืึธื ืคื™ื’ืก ืคึฟืึทืจ ื“ื™ X ืกื™ืกื˜ืขื ืคึผืจืึธื“ื•ืงืฆื™ืข ืงื ื•ื™ืœ.

9. ื˜ืขืžืคึผืœืึทื˜ืขืก ืื•ืŸ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืึธื•ื•ื•ืขืจืจื™ื™ื“ื–

ื“ืขืจ ืึทื“ืžื™ื ื™ืกื˜ืจืึทื˜ืึธืจ ืงืขื ืขืŸ ืึธื•ื•ื•ืขืจืจื™ื™ื“ ืึท ืกื›ื•ื ืคื•ืŸ ื™ื ื›ืขืจืึทื˜ื™ื“ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทื ื– ืื•ืŸ ื–ื™ื™ืขืจ ื•ื•ืึทืœื•ืขืก, ืœืžืฉืœ, ืฆื• ืคื™ื™ืŸ-ื˜ื•ืŸ ื“ื™ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืคึฟืึทืจ ืกืคึผืขืฆื™ืคื™ืฉ ืงืœืึทืกื˜ืขืจื– ืฆื• ื•ื•ืึธืก ื–ื™ื™ ื•ื•ืขืœืŸ ื–ื™ื™ืŸ ื’ืขื•ื•ืขื ื“ื˜.

10. ืกืขืœืขืงื˜ื™ื•ื• ืึทืจื™ื™ึทื ื ืขืžืขืŸ ืื•ืŸ ื•ื™ืกืฉืœื™ืกืŸ ืคึฟืึทืจ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทื ื–, ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทื ื–

ื“ืขืจ ืึทื“ืžื™ื ื™ืกื˜ืจืึทื˜ืึธืจ ืงืขื ืขืŸ ืฉื˜ืขืœืŸ ื“ื™ ื‘ืื“ื™ื ื’ื•ื ื’ืขืŸ ืคึฟืึทืจ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืึธื“ืขืจ ื ื™ื˜-ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืคื•ืŸ ื–ื™ื›ืขืจ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทื ื– ืฆื• ืงืœืึทืกื˜ืขืจื– ืžื™ื˜ ื–ื™ื›ืขืจ ืงืขืจืึทืงื˜ืขืจื™ืกื˜ื™ืงืก.

11. ืžื•ืกื˜ืขืจ ืฉื˜ื™ืฆืŸ

ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ื•ื•ืขืœืŸ ื ื•ืฅ ืคื•ืŸ ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ืงืœื™ื™ึทื‘ืŸ ื•ื•ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืจืขืกื•ืจืกืŸ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื“ื™ืคื™ื™ื ื“ (ื”ืขืœื ื˜ืฉืึทืจื˜, ืจื™ื™ืŸ Kubernetes yaml, ืืื–"ื• ื•) ืฆื• ื ื•ืฆืŸ ื“ื™ ืžืขืจืกื˜ ืฆื•ื ืขืžืขืŸ ืคึฟืึธืจืžืึทื˜ ืคึฟืึทืจ ื™ืขื“ืขืจ ืกืคึผืขืฆื™ืคื™ืฉ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ.

GitOps ืžื›ืฉื™ืจื™ื ืื•ื™ืฃ ื“ื™ OpenShift ืคึผืœืึทื˜ืคืึธืจืžืข

ArgoCD

ArgoCD ื™ืžืคึผืœืึทืžืึทื ืฅ ื“ื™ ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ืจื™ืกืึธืจืก ืจืขืงืึธื ืกื™ืœืข ืžืึธื“ืขืœ ืื•ืŸ ืึธืคืคืขืจืก ืึท ืกืขื ื˜ืจืึทืœื™ื™ื–ื“ ื•ื™ ืคึฟืึทืจ ืึธืจืงืขืกื˜ืจื™ื™ื˜ื™ื ื’ ืื™ื™ืŸ-ืฆื•-ืคื™ืœืข ื‘ืืฆื™ื•ื ื’ืขืŸ ืฆื•ื•ื™ืฉืŸ ืงืœืึทืกื˜ืขืจื– ืื•ืŸ Git ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ื–. ื“ื™ ื“ื™ืกืึทื“ื•ื•ืึทื ื˜ื™ื“ื–ืฉื™ื– ืคื•ืŸ ื“ืขื ืคึผืจืึธื’ืจืึทื ืึทืจื™ื™ึทื ื ืขืžืขืŸ ื“ื™ ื™ื ืึทื‘ื™ืœื™ื˜ื™ ืฆื• ืคื™ืจืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ื•ื•ืขืŸ ArgoCD ืื™ื– ื ื™ืฉื˜ ืืจื‘ืขื˜ืŸ.

ื‘ืึทืึทืžื˜ืขืจ ื•ื•ืขื‘ื–ื™ื™ึทื˜ืœ

ืคืœืึทืงืก

ืคืœื•ืงืก ื™ืžืคึผืœืึทืžืึทื ืฅ ืึทืŸ ืื•ื™ืฃ-ืงืœื•ืกื˜ืขืจ ืจื™ืกืึธืจืก ืจืขืงืึธื ืกื™ืœืข ืžืึธื“ืขืœ ืื•ืŸ, ื•ื•ื™ ืึท ืจืขื–ื•ืœื˜ืึทื˜, ืขืก ืื™ื– ืงื™ื™ืŸ ืกืขื ื˜ืจืึทืœื™ื™ื–ื“ ืคืึทืจื•ื•ืึทืœื˜ื•ื ื’ ืคื•ืŸ ื“ื™ ื“ืขืคึฟื™ื ื™ืฆื™ืข ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™, ื•ื•ืึธืก ืื™ื– ืึท ืฉื•ื•ืึทืš ืคื•ื ื˜. ืื•ื™ืฃ ื“ื™ ืื ื“ืขืจืข ื”ืึทื ื˜, ืคึผื•ื ืงื˜ ื•ื•ื™ื™ึทืœ ืคื•ืŸ ื“ื™ ืคืขืœืŸ ืคื•ืŸ ืกืขื ื˜ืจืึทืœื™ื–ื™ื™ืฉืึทืŸ, ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ืคื™ืจืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ื‘ืœื™ื™ื‘ื˜ ืืคื™ืœื• ืื•ื™ื‘ ืื™ื™ืŸ ืงื ื•ื™ืœ ืคื™ื™ืœื–.

ื‘ืึทืึทืžื˜ืขืจ ื•ื•ืขื‘ื–ื™ื™ึทื˜ืœ

ื™ื ืกื˜ืึธืœื™ื ื’ ArgoCD ืื•ื™ืฃ OpenShift

ArgoCD ืึธืคืคืขืจืก ืึท ื•ื™ืกื’ืขืฆื™ื™ื›ื ื˜ ื‘ืึทืคึฟืขืœืŸ ืฉื•ืจื” ืฆื•ื‘ื™ื ื“ ืื•ืŸ ื•ื•ืขื‘ ืงืึทื ืกืึธื•ืœ, ืึทื–ื•ื™ ืžื™ืจ ื•ื•ืขืœืŸ ื ื™ืฉื˜ ื“ืขืงืŸ ืคืœืึทืงืก ืื•ืŸ ืื ื“ืขืจืข ืึทืœื˜ืขืจื ืึทื˜ื™ื•ื•ืขืก ื“ืึธ.

ืฆื• ืฆืขื•ื•ื™ืงืœืขืŸ 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 Tool

# 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 ืกืขืจื•ื•ื™ืจืขืจ ืึทื“ืžื™ืŸ ืคึผืึทืจืึธืœ

# 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 ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™.
  • ืกืขืœืขืงื˜ื™ื ื’ ืื•ืŸ ื“ื™ืคึผืœื•ื™ื™ื ื’ GitOps ืžื›ืฉื™ืจื™ื.
  • ืžื™ืจ ืœื™ื™ื’ืŸ ืื•ื ื“ื–ืขืจ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืฆื• ื“ืขื ื˜ืึธืึธืœืงื™ื˜.
  • ืžื™ืจ ื“ืขืคื™ื ื™ืจืŸ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื™ืŸ ืื•ื ื“ื–ืขืจ GitOps ื˜ืึธืึธืœืงื™ื˜.
  • ืžื™ืจ ื“ื•ืจื›ืคื™ืจืŸ ืึท ืคึผืจืึธื‘ืข ืœื•ื™ืคืŸ ืคื•ืŸ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืžื™ื˜ ื“ื™ GitOps ื˜ืึธืึธืœืงื™ื˜.
  • ืžื™ืจ ืกื™ื ื’ืงืจืึทื ื™ื™ื– ืึทื‘ื“ื–ืฉืขืงืฅ ืžื™ื˜ ื“ื™ GitOps ื˜ืึธืึธืœืงื™ื˜.
  • ื’ืขื‘ืŸ ืคึผืจื•ื ื™ื ื’ ืื•ืŸ ืึทื•ื˜ืึธ-ืกื™ื ื’ืงืจืึทื ืึทื–ื™ื™ืฉืึทืŸ ืคื•ืŸ ืึทื‘ื“ื–ืฉืขืงืฅ.

ื•ื•ื™ ื“ืขืจืžืื ื˜ ืื™ืŸ ื“ื™ ืคืจื™ืขืจื“ื™ืงืข ืึทืจื˜ื™ืงืœ, ืื™ืŸ GitOps ืขืก ืื™ื– ืื™ื™ืŸ ืื•ืŸ ื‘ืœื•ื™ื– ืื™ื™ืŸ ืžืงื•ืจ ืคื•ืŸ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ื•ื•ืขื’ืŸ ืึทืœืข ืึทื‘ื“ื–ืฉืขืงืฅ ืื™ืŸ ื“ื™ Kubernetes ืงื ื•ื™ืœ (s) - ื“ื™ 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 ื˜ืขืงืข ืฆื• ื‘ืึทื–ื™ื™ึทื˜ื™ืงืŸ ื“ื™ ืคืขืœื“ ื•ื•ืึธืก Argo CD ืงืขืŸ ื ื™ืฉื˜ ืกื™ื ืง.

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

ืื™ืŸ ื“ืขืจืฆื•, ื“ื™ ืžืึทืจืฉืจื•ื˜ ื“ืึทืจืฃ ื–ื™ื™ืŸ ื’ืขื‘ื™ื˜ืŸ. ืžื™ืจ ื•ื•ืขืœืŸ ืขืจืฉื˜ืขืจ ืฉื˜ืขืœืŸ ืึท ืžื•ืœื˜ื™ืœื™ื ืข ื‘ื™ื™ึทื˜ืขื•ื•ื“ื™ืง ืื•ืŸ ื“ืขืžืึธืœื˜ ืคืึทืจื‘ื™ื™ึทื˜ืŸ ื™ื ื’ืจืขืกืก: ื ืึทืœ ืžื™ื˜ ื“ื™ ืื™ื ื”ืึทืœื˜ ืคื•ืŸ ื“ื™ ื‘ื™ื™ึทื˜ืขื•ื•ื“ื™ืง.

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 CD ื“ื™ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืžื™ืจ ื‘ืืฉืืคืŸ, ืžื™ื˜ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืงืึธื“ ืคื•ืŸ ืื•ื ื“ื–ืขืจ ื‘ื™ื™ึทืฉืคึผื™ืœ. ื ืึธืจ ืžืึทื›ืŸ ื–ื™ื›ืขืจ ืึทื– ืื™ืจ ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ื“ื™ ืคึผื™ื ื˜ืœืขืš ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ื•ื•ืึธืก ืื™ืจ ื”ืึธื˜ ื‘ืืฉืืคืŸ ืคืจื™ืขืจ.

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 CD, ื“ื™ ื˜ืึธืึธืœืงื™ื˜ ื”ื™ื™ื‘ื˜ ืฆื• ืงืึธื ื˜ืจืึธืœื™ืจืŸ ืฉื•ื™ืŸ ื“ื™ืคึผืœื•ื™ื“ ืึทื‘ื“ื–ืฉืขืงืฅ ืงืขื’ืŸ ื“ื™ ื–ื•ืš ืื™ืŸ ื“ื™ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™. ืื™ืŸ ืื•ื ื“ื–ืขืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืึทื•ื˜ืึธ-ืกื™ื ืง ืื•ืŸ ืงืœื™ื ืึทืคึผ ื–ืขื ืขืŸ ืคืึทืจืงืจื™ืคึผืœื˜, ืึทื–ื•ื™ ื“ื™ ืขืœืขืžืขื ื˜ืŸ ื˜ืึธืŸ ื ื™ื˜ ื˜ื•ื™ืฉืŸ ื ืึธืš. ื‘ื™ื˜ืข ื˜ืึธืŸ ืึทื– ืื™ืŸ ื“ื™ ืึทืจื’ืึธ ืงืึธืžืคึผืึทืงื˜ื“ื™ืกืง ืฆื•ื‘ื™ื ื“ ืื•ื ื“ื–ืขืจ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื•ื•ืขื˜ ื”ืึธื‘ืŸ ื“ื™ ืกื˜ืึทื˜ื•ืก "ืื•ื™ืก ืคื•ืŸ ืกื™ื ืง" ื•ื•ื™ื™ึทืœ ืขืก ืื™ื– ืงื™ื™ืŸ ืคื™ืจืžืข ื•ื•ืึธืก ArgoCD ื’ื™ื˜.
ื“ืึธืก ืื™ื– ื•ื•ืึธืก ื•ื•ืขืŸ ืžื™ืจ ืึธื ื”ื™ื™ื‘ืŸ ืกื™ื ื’ืงืจืึทื ืึทื–ื™ื™ืฉืึทืŸ ืึท ื‘ื™ืกืœ ืฉืคึผืขื˜ืขืจ, ื“ื™ ืึทื‘ื“ื–ืฉืขืงืฅ ื•ื•ืขื˜ ื ื™ืฉื˜ ื–ื™ื™ืŸ ืจื™ืคึผืœื•ื™ื“.

ืื™ืฆื˜ ืœืึธื–ืŸ ืึท ืคึผืจื•ื‘ื™ืจืŸ ืœื•ื™ืคืŸ ืฆื• ืžืึทื›ืŸ ื–ื™ื›ืขืจ ืึทื– ืขืก ื–ืขื ืขืŸ ืงื™ื™ืŸ ืขืจืจืึธืจืก ืื™ืŸ ืื•ื ื“ื–ืขืจ ื˜ืขืงืขืก.

argocd app sync simple-app --dry-run

ืื•ื™ื‘ ืขืก ื–ืขื ืขืŸ ืงื™ื™ืŸ ืขืจืจืึธืจืก, ืื™ืจ ืงืขื ืขืŸ ื’ื™ื™ื  ื•ื•ื™ื™ึทื˜ืขืจ ืฆื• ืกื™ื ื’ืงืจืึทื ืึทื–ื™ื™ืฉืึทืŸ.

argocd app sync simple-app

ื ืึธืš ืคืœื™ืกื ื“ื™ืง ื“ื™ ืึทืจื’ืึธืงื“ ื‘ืึทืงื•ืžืขืŸ ื‘ืึทืคึฟืขืœ ืื•ื™ืฃ ืื•ื ื“ื–ืขืจ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ, ืžื™ืจ ื–ืึธืœ ื–ืขืŸ ืึทื– ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืกื˜ืึทื˜ื•ืก ืื™ื– ืคืืจืขื ื“ืขืจื˜ ืฆื• ื’ืขื–ื•ื ื˜ ืึธื“ืขืจ ืกื™ื ืกืขื“. ื“ืึธืก ื•ื•ืขื˜ ืžื™ื™ื ืขืŸ ืึทื– ืึทืœืข ืจืขืกื•ืจืกืŸ ืื™ืŸ ื“ื™ 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

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’