เบเบฒเบ™เปเบ™เบฐเบ™เปเบฒเบเปˆเบฝเบงเบเบฑเบš GitOps เบชเปเบฒเบฅเบฑเบš OpenShift

เบกเบทเป‰เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเบปเบ™เบ—เบฐเบ™เบฒเบเปˆเบฝเบงเบเบฑเบšเบซเบผเบฑเบเบเบฒเบ™เปเบฅเบฐเปเบšเบšเบˆเปเบฒเบฅเบญเบ‡เบ‚เบญเบ‡ GitOps, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบ•เบปเบงเปเบšเบšเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบขเบนเปˆเปƒเบ™เป€เบงเบ—เบต OpenShift. เบกเบตเบ„เบนเปˆเบกเบทเปเบšเบšเป‚เบ•เป‰เบ•เบญเบšเบเปˆเบฝเบงเบเบฑเบšเบซเบปเบงเบ‚เปเป‰เบ™เบตเป‰ เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ.

เบเบฒเบ™เปเบ™เบฐเบ™เปเบฒเบเปˆเบฝเบงเบเบฑเบš GitOps เบชเปเบฒเบฅเบฑเบš OpenShift

เบชเบฐเบซเบผเบธเบšเปเบฅเป‰เบง, GitOps เปเบกเปˆเบ™เบŠเบธเบ”เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ”เบถเบ‡ Git เป€เบžเบทเปˆเบญเบˆเบฑเบ”เบเบฒเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เปเบฅเบฐเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ. Git repository เปƒเบ™ GitOps เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบ›เบฑเบ™เปเบซเบผเปˆเบ‡เบ”เบฝเบงเบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบฅเบฐเบšเบปเบš, เปเบฅเบฐเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ”เป†เบ•เปเปˆเบเบฑเบšเบฅเบฑเบ”เบ™เบตเป‰เปเบกเปˆเบ™เบชเบฒเบกเบฒเบ”เบ•เบดเบ”เบ•เบฒเบกเป„เบ”เป‰เบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบ—เบตเปˆเปเบฅเบฐเบชเบฒเบกเบฒเบ”เบเบงเบ”เบชเบญเบšเป„เบ”เป‰.

เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ™ GitOps เปเบกเปˆเบ™เบšเปเปˆเปƒเบซเบกเปˆ; เบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰เป„เบ”เป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบกเบฒเบ”เบปเบ™เบ™เบฒเบ™เป€เบเบทเบญเบšเบ—เบปเปˆเบงเป‚เบฅเบเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ. GitOps เบžเบฝเบ‡เปเบ•เปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™ (เบเบฒเบ™เบ—เบปเบšเบ—เบงเบ™เบ„เบทเบ™, เบ”เบถเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป, tags, เปเบฅเบฐเบญเบทเปˆเบ™เป†) เปƒเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เปเบฅเบฐเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเปเบฅเบฐเปƒเบซเป‰เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡.

เบšเปเปˆเบกเบตเบ„เปเบฒเบ™เบดเบเบฒเบกเบ—เบฒเบ‡เบงเบดเบŠเบฒเบเบฒเบ™เบซเบผเบทเบŠเบธเบ”เบเบปเบ”เบฅเบฐเบšเบฝเบšเบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเบญเบฐเบ™เบธเบกเบฑเบ”เบชเปเบฒเบฅเบฑเบš GitOps, เบžเบฝเบ‡เปเบ•เปˆเบŠเบธเบ”เบ‚เบญเบ‡เบซเบผเบฑเบเบเบฒเบ™เบ—เบตเปˆเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ™เบตเป‰เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™:

  • เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบเบฒเบ™เบ›เบฐเบเบฒเบ”เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™ Git repository (configs, เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบก, เปเบฅเบฐเบญเบทเปˆเบ™เป†).
  • เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ‚เบญเบ‡เบฅเบฑเบ”เปเบกเปˆเบ™เป€เบฎเบฑเบ”เป‚เบ”เบเบœเปˆเบฒเบ™เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ”เบถเบ‡.
  • เบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบเบฒเบ™เปเบฅเปˆเบ™เปเบกเปˆเบ™เป„เบ”เป‰เบ™เปเบฒเป€เบญเบปเบฒเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบชเบญเบ”เบ„เปˆเบญเบ‡เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เปƒเบ™ repository เป‚เบ”เบเปƒเบŠเป‰ Git push requests.

เบซเบผเบฑเบเบเบฒเบ™ GitOps

  • เบ„เปเบฒเบ™เบดเบเบฒเบกเบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบ–เบทเบเบญเบฐเบ—เบดเบšเบฒเบเป€เบ›เบฑเบ™เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡

เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบฅเบฐเบšเบปเบšเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบ›เบฑเบ™เบฅเบฐเบซเบฑเบ”เป€เบžเบทเปˆเบญเปƒเบซเป‰เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปเบฅเบฐเบชเบฐเบšเบฑเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เปƒเบ™เบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™ Git, เป€เบŠเบดเปˆเบ‡เปƒเบŠเป‰เป€เบ›เบฑเบ™เปเบซเบผเปˆเบ‡เบ”เบฝเบงเบ‚เบญเบ‡เบ„เบงเบฒเบกเบˆเบดเบ‡. เบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบ‡เปˆเบฒเบเบ•เปเปˆเบเบฒเบ™ rollout เปเบฅเบฐ rollback เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ™เบฅเบฐเบšเบปเบš.

  • เบฅเบฑเบ”เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เปเบฅเบฐเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบ–เบทเบเบ•เบฑเป‰เบ‡เปเบฅเบฐเบชเบฐเบšเบฑเบšเบขเบนเปˆเปƒเบ™ Git

เป‚เบ”เบเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเปเบฅเบฐเบชเบฐเบšเบฑเบšเบžเบฒเบชเบฒเบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบ™ Git, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบกเป‰เบงเบ™เบญเบญเบเปเบฅเบฐเบกเป‰เบงเบ™เบ„เบทเบ™เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบฅเบฐเบšเบปเบšเปเบฅเบฐเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป„เบ”เป‰เบขเปˆเบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบ. เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เบเบปเบ™เป„เบเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ‚เบญเบ‡ Git เป€เบžเบทเปˆเบญเบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เป€เบ›เบฑเบ™เป€เบˆเบปเป‰เบฒเบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ” เปเบฅเบฐเบเบงเบ”เบชเบญเบšเบ„เบงเบฒเบกเบ–เบทเบเบ•เป‰เบญเบ‡เบ‚เบญเบ‡เบกเบฑเบ™.

  • เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบœเปˆเบฒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ”เบถเบ‡

เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป Git pull, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบ„เบงเบšเบ„เบธเบกเป„เบ”เป‰เบขเปˆเบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบเบงเปˆเบฒเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบเบฑเบšเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปƒเบ™ repository. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบžเบงเบเป€เบ‚เบปเบฒเบชเบฒเบกเบฒเบ”เบ–เบทเบเบกเบญเบšเปƒเบซเป‰เบชเบฐเบกเบฒเบŠเบดเบเบ—เบตเบกเบญเบทเปˆเบ™เป€เบžเบทเปˆเบญเบ—เบปเบšเบ—เบงเบ™เบซเบผเบทเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบœเปˆเบฒเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš CI, เปเบฅเบฐเบญเบทเปˆเบ™เป†.

เปเบฅเบฐเปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™, เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เปเบˆเบเบขเบฒเบเบญเปเบฒเบ™เบฒเบ” admin เบŠเป‰เบฒเบเปเบฅเบฐเบ‚เบงเบฒ. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ, เบœเบนเป‰เปƒเบŠเป‰เบžเบฝเบ‡เปเบ•เปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเปƒเบ™ Git repository เบšเปˆเบญเบ™เบ—เบตเปˆเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™เบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰.

  • เบเบฒเบ™โ€‹เปเบเป‰โ€‹เป„เบ‚โ€‹เบšเบฑเบ™โ€‹เบซเบฒโ€‹เบ‚เบญเบ‡ drift uncontrolled เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ•เบฑเป‰เบ‡โ€‹เบ„เปˆเบฒโ€‹

เป€เบกเบทเปˆเบญเบชเบฐเบ–เบฒเบ™เบฐเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™เบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™ Git, เบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เปเบกเปˆเบ™เบŠเบญเบเบซเบฒเบŠเบญเบšเปเบงเบ—เบตเปˆเบˆเบฐเบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบงเปˆเบฒเบชเบฐเบ–เบฒเบ™เบฐเบ›เบฐเบˆเบธเบšเบฑเบ™เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบเบปเบ‡เบเบฑเบšเบชเบฐเบ–เบฒเบ™เบฐเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™. เบ–เป‰เบฒเบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เบเปเบฅเบฐเบ™เบต, เบŠเบญเบšเปเบงเบ™เบตเป‰เบ„เบงเบ™ - เบ‚เบถเป‰เบ™เบเบฑเบšเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ - เบฅเบปเบšเบฅเป‰เบฒเบ‡เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡, เบซเบผเบทเปเบˆเป‰เบ‡เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ drift.

เบฎเบนเบšเปเบšเบš GitOps เบชเปเบฒเบฅเบฑเบš OpenShift

On-Cluster Resource Reconciler

เบญเบตเบ‡เบ•เบฒเบกเบฎเบนเบšเปเบšเบšเบ™เบตเป‰, เบเบธเปˆเบกเบกเบตเบ•เบปเบงเบ„เบงเบšเบ„เบธเบกเบ—เบตเปˆเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเปƒเบ™เบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบšเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™ Kubernetes (เป„เบŸเบฅเปŒ YAML) เปƒเบ™เบšเปˆเบญเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™ Git เบเบฑเบšเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡เบ‚เบญเบ‡เบเบธเปˆเบก. เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบ„เบงเบฒเบกโ€‹เปเบ•เบโ€‹เบ•เปˆเบฒเบ‡โ€‹เบ–เบทเบโ€‹เบเบงเบ”โ€‹เบžเบปเบšโ€‹, เบœเบนเป‰โ€‹เบ„เบงเบšโ€‹เบ„เบธเบกโ€‹เบˆเบฐโ€‹เบชเบปเปˆเบ‡โ€‹เปเบˆเป‰เบ‡โ€‹เบเบฒเบ™โ€‹เปเบฅเบฐโ€‹เบญเบฒเบ”โ€‹เบˆเบฐโ€‹เบ”เปเบฒโ€‹เป€เบ™เบตเบ™โ€‹เบเบฒเบ™โ€‹เปเบเป‰โ€‹เป„เบ‚โ€‹เบ„เบงเบฒเบกโ€‹เปเบ•เบโ€‹เบ•เปˆเบฒเบ‡โ€‹เป„เบ”เป‰โ€‹. เบฎเบนเบšเปเบšเบš GitOps เบ™เบตเป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™ Anthos Config Management เปเบฅเบฐ Weaveworks Flux.

เบเบฒเบ™เปเบ™เบฐเบ™เปเบฒเบเปˆเบฝเบงเบเบฑเบš GitOps เบชเปเบฒเบฅเบฑเบš OpenShift

Reconciler เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบžเบฒเบเบ™เบญเบ (Push)

เบฎเบนเบšเปเบšเบšเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ–เบทเบเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเป€เบ›เบฑเบ™เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ, เป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเบกเบตเบซเบ™เบถเปˆเบ‡เบซเบผเบทเบซเบผเบฒเบเบ•เบปเบงเบ„เบงเบšเบ„เบธเบกเบ—เบตเปˆเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ synchronizing เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เปƒเบ™เบ„เบนเปˆ "Git repository - Kubernetes cluster". เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบ—เบตเปˆเบ™เบตเป‰เปเบกเปˆเบ™เบงเปˆเบฒเปเบ•เปˆเบฅเบฐเบเบธเปˆเบกเบ—เบตเปˆเบ–เบทเบเบ„เบธเป‰เบกเบ„เบญเบ‡เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบกเบตเบ•เบปเบงเบ„เบงเบšเบ„เบธเบกเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡. Git - k8s cluster pairs เบกเบฑเบเบˆเบฐเบ–เบทเบเบเปเบฒเบ™เบปเบ”เป€เบ›เบฑเบ™ CRDs (เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบตเปˆเบเปเบฒเบซเบ™เบปเบ”เป€เบญเบ‡), เป€เบŠเบดเปˆเบ‡เบชเบฒเบกเบฒเบ”เบญเบฐเบ—เบดเบšเบฒเบเบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบ•เบปเบงเบ„เบงเบšเบ„เบธเบกเบ„เบงเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ synchronization. เบžเบฒเบเปƒเบ™เบ•เบปเบงเปเบšเบšเบ™เบตเป‰, เบœเบนเป‰เบ„เบงเบšเบ„เบธเบกเบ›เบฝเบšเบ—เบฝเบš Git repository เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™ CRD เบเบฑเบšเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ‚เบญเบ‡เบเบธเปˆเบก Kubernetes, เป€เบŠเบดเปˆเบ‡เบเบฑเบ‡เบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™ CRD, เปเบฅเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบœเบปเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบš. เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ, เบฎเบนเบšเปเบšเบš GitOps เบ™เบตเป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™ ArgoCD.

เบเบฒเบ™เปเบ™เบฐเบ™เปเบฒเบเปˆเบฝเบงเบเบฑเบš GitOps เบชเปเบฒเบฅเบฑเบš OpenShift

GitOps เปƒเบ™เป€เบงเบ—เบต OpenShift

เบเบฒเบ™เบšเปเบฅเบดเบซเบฒเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบซเบผเบฒเบเบเบธเปˆเบก Kubernetes

เบ”เป‰เบงเบเบเบฒเบ™เปเบœเปˆเบเบฐเบˆเบฒเบเบ‚เบญเบ‡ Kubernetes เปเบฅเบฐเบ„เบงเบฒเบกเบ™เบดเบเบปเบกเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบ‚เบญเบ‡เบเบธเบ”เบ—เบฐเบชเบฒเบ”เบซเบผเบฒเบเบ„เบฅเบฒเบงเปเบฅเบฐเบ„เบญเบกเบžเบดเบงเป€เบ•เบตเป‰เบ‚เบญเบš, เบˆเปเบฒเบ™เบงเบ™เบเบธเปˆเบก OpenShift เบชเบฐเป€เบฅเปˆเบเบ•เปเปˆเบฅเบนเบเบ„เป‰เบฒเบเปเปˆเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™.

เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบกเบทเปˆเบญเปƒเบŠเป‰ Edge computing, เบเบธเปˆเบกเบฅเบนเบเบ„เป‰เบฒเบซเบ™เบถเปˆเบ‡เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเป„เบ›เปƒเบŠเป‰เป€เบ›เบฑเบ™เบฎเป‰เบญเบเบซเบผเบทเบซเบผเบฒเบเบžเบฑเบ™เบ„เบปเบ™. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบฅเบฒเบงเบ–เบทเบเบšเบฑเบ‡เบ„เบฑเบšเปƒเบซเป‰เบˆเบฑเบ”เบเบฒเบ™เบเบธเปˆเบก OpenShift เบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฒเบ”เบซเบผเบทเบ›เบฐเบชเบฒเบ™เบ‡เบฒเบ™เบˆเปเบฒเบ™เบงเบ™เบซเบ™เบถเปˆเบ‡เปƒเบ™เบ„เบฅเบฒเบงเบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐเปเบฅเบฐเบขเบนเปˆเปƒเบ™เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆ.

เปƒเบ™โ€‹เบเปโ€‹เบฅเบฐโ€‹เบ™เบตโ€‹เบ™เบตเป‰โ€‹, เบšเบฑเบ™โ€‹เบซเบฒโ€‹เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบซเบผเบฒเบโ€‹เบ•เป‰เบญเบ‡โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เปเบเป‰โ€‹เป„เบ‚โ€‹, เป‚เบ”เบโ€‹เบชเบฐโ€‹เป€เบžเบฒเบฐโ€‹เปเบกเปˆเบ™โ€‹:

  • เบ„เบงเบšเบ„เบธเบกเบงเปˆเบฒเบเบธเปˆเบกเบขเบนเปˆเปƒเบ™เบชเบฐเบ–เบฒเบ™เบฐเบ”เบฝเบงเบเบฑเบ™ (เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ, เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบก, เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒ, เปเบฅเบฐเบญเบทเปˆเบ™เป†)
  • เบชเป‰เบฒเบ‡ (เบซเบผเบทเบŸเบทเป‰เบ™เบŸเบน) เบเบธเปˆเบกเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบชเบฐเบ–เบฒเบ™เบฐเบ—เบตเปˆเบฎเบนเป‰เบˆเบฑเบ.
  • เบชเป‰เบฒเบ‡เบเบธเปˆเบกเปƒเบซเบกเปˆเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบชเบฐเบ–เบฒเบ™เบฐเบ—เบตเปˆเบฎเบนเป‰เบˆเบฑเบ.
  • เป€เบ›เบตเบ”เบ•เบปเบงเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ•เปเปˆเบเบฑเบšเบซเบผเบฒเบเบเบธเปˆเบก OpenShift.
  • เบเบฑเบšเบ„เบทเบ™เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ™เบ—เบปเปˆเบงเบเบธเปˆเบก OpenShift เบซเบผเบฒเบเบญเบฑเบ™.
  • เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปเบกเปˆเปเบšเบšเบเบฑเบšเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™.

เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™

เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบงเบปเบ‡เบˆเบญเบ™เบŠเบตเบงเบดเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ, เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบกเบฑเบเบˆเบฐเบœเปˆเบฒเบ™เบฅเบฐเบšเบปเบšเบ•เปˆเบญเบ‡เป‚เบชเป‰เบ‚เบญเบ‡เบเบธเปˆเบก (dev, เบ‚เบฑเป‰เบ™เบ•เบญเบ™, เปเบฅเบฐเบญเบทเปˆเบ™เป†) เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบชเบดเป‰เบ™เบชเบธเบ”เปƒเบ™เบเบธเปˆเบกเบเบฒเบ™เบœเบฐเบฅเบดเบ”. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ„เบงเบฒเบกเบžเป‰เบญเบก เปเบฅเบฐเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ‚เบฐเปœเบฒเบ”, เบฅเบนเบเบ„เป‰เบฒเบกเบฑเบเบˆเบฐเบ™เบณเปƒเบŠเป‰เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบปเปˆเบงเบซเบผเบฒเบเบเบธเปˆเบกเบขเบนเปˆเปƒเบ™เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆ เบซเบผเบทเบซเบผเบฒเบเบ‚เบปเบ‡เป€เบ‚เบ”เบ‚เบญเบ‡เปเบžเบฅเบ”เบŸเบญเบกเบ„เบฅเบฒเบงเบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐ.

เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบ™เบตเป‰, เบงเบฝเบเบ‡เบฒเบ™เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚:

  • เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ (binaries, configs, เปเบฅเบฐเบญเบทเปˆเบ™เป†) เบฅเบฐเบซเบงเปˆเบฒเบ‡ clusters (dev, stage, เปเบฅเบฐเบญเบทเปˆเบ™เป†).
  • เป€เบ›เบตเบ”เบ•เบปเบงเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ (binaries, configs, เปเบฅเบฐเบญเบทเปˆเบ™เป†) เปƒเบ™เบซเบผเบฒเบเบเบธเปˆเบก OpenShift.
  • เบเบฑเบšเบ„เบทเบ™เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เป„เบ›เบชเบนเปˆเบชเบฐเบ–เบฒเบ™เบฐเบ—เบตเปˆเบฎเบนเป‰เบˆเบฑเบเบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰.

OpenShift GitOps เปƒเบŠเป‰เบเปเบฅเบฐเบ™เบต

1. เบ™เบณเปƒเบŠเป‰เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบˆเบฒเบเบšเปˆเบญเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™ Git

เบœเบนเป‰เป€เบšเบดเปˆเบ‡เปเบเบ‡เบเบธเปˆเบกเบชเบฒเบกเบฒเบ”เป€เบเบฑเบšเบฎเบฑเบเบชเบฒ OpenShift cluster configurations เปƒเบ™ Git repository เปเบฅเบฐเบ™เปเบฒเปƒเบŠเป‰เบžเบงเบเบกเบฑเบ™เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡ clusters เปƒเบซเบกเปˆเบขเปˆเบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบเปเบฅเบฐเบ™เปเบฒเบžเบงเบเบกเบฑเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบชเบฐเบ–เบฒเบ™เบฐเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบšเบฅเบฑเบ”เบ—เบตเปˆเบฎเบนเป‰เบˆเบฑเบเบ—เบตเปˆเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™ Git repository.

2. synchronization เบเบฑเบšเบœเบนเป‰เบˆเบฑเบ”เบเบฒเบ™เบฅเบฑเบš

เบœเบนเป‰เป€เบšเบดเปˆเบ‡เปเบเบ‡เบฅเบฐเบšเบปเบšเบเบฑเบ‡เบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบˆเบฒเบเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™ synchronize เบงเบฑเบ”เบ–เบธเบฅเบฑเบš OpenShift เบเบฑเบšเบŠเบญเบšเปเบงเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเป€เบŠเบฑเปˆเบ™ Vault เป€เบžเบทเปˆเบญเบˆเบฑเบ”เบเบฒเบ™เบžเบงเบเบกเบฑเบ™เป‚เบ”เบเปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เบตเป‰.

3. เบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ drift

เบœเบนเป‰เป€เบšเบดเปˆเบ‡เปเบเบ‡เบžเบฝเบ‡เปเบ•เปˆเบˆเบฐเบขเบนเปˆเปƒเบ™เบ„เบงเบฒเบกเป‚เบ›เบ”เบ›เบฒเบ™เบ–เป‰เบฒ OpenShift GitOps เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡เบเปเบฒเบ™เบปเบ”เปเบฅเบฐเป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡เปเบฅเบฐเบชเบดเปˆเบ‡เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™ repository, เป€เบžเบทเปˆเบญเปƒเบซเป‰เบžเบงเบเป€เบ‚เบปเบฒเบชเบฒเบกเบฒเบ”เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบ•เปเปˆ drift เป„เบ”เป‰เบขเปˆเบฒเบ‡เป„เบงเบงเบฒ.

4. เบเบฒเบ™เปเบˆเป‰เบ‡เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ drift

เบžเบงเบเบกเบฑเบ™เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบœเบนเป‰เบšเปเบฅเบดเบซเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบฎเบฝเบ™เบฎเบนเป‰เบขเปˆเบฒเบ‡เป„เบงเบงเบฒเบเปˆเบฝเบงเบเบฑเบšเบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ drift เป€เบžเบทเปˆเบญเบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เบกเบฒเบ”เบ•เบฐเบเบฒเบ™เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบšเบฅเบฒเบงเบขเปˆเบฒเบ‡เป„เบงเบงเบฒ.

5. synchronization เบ„เบนเปˆเบกเบทเบ‚เบญเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ drifting

เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบœเบนเป‰เป€เบšเบดเปˆเบ‡เปเบเบ‡เบฅเบฐเบšเบปเบš synchronize เบเบธเปˆเบก OpenShift เบเบฑเบš Git repository เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ drift, เป€เบžเบทเปˆเบญเบเบฑเบšเบ„เบทเบ™ cluster เบขเปˆเบฒเบ‡เป„เบงเบงเบฒเบเบฑเบšเบชเบฐเบ–เบฒเบ™เบฐเบ—เบตเปˆเบฎเบนเป‰เบˆเบฑเบเบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰.

6.Auto-synchronization เบ‚เบญเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ drifting

เบœเบนเป‰เป€เบšเบดเปˆเบ‡เปเบเบ‡เบฅเบฐเบšเบปเบšเบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบเบณเบ™เบปเบ”เบ„เปˆเบฒ OpenShift cluster เป€เบžเบทเปˆเบญ synchronize เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบเบฑเบš repository เป€เบกเบทเปˆเบญเบเบงเบ”เบžเบปเบš drift, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ cluster เบเบปเบ‡เบเบฑเบš configs เปƒเบ™ Git.

7. เบซเบผเบฒเบเบเบธเปˆเบก - เบซเบ™เบถเปˆเบ‡ repository

เบœเบนเป‰เบšเปเบฅเบดเบซเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ‚เบญเบ‡เบเบธเปˆเบก OpenShift เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบซเบผเบฒเบเบญเบฑเบ™เบขเบนเปˆเปƒเบ™เบšเปˆเบญเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™ Git เปเบฅเบฐเป€เบฅเบทเบญเบเปƒเบŠเป‰เบžเบงเบเบกเบฑเบ™เบ•เบฒเบกเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™.

8. เบฅเบณเบ”เบฑเบšเบ‚เบญเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเบธเปˆเบก (เบเบฒเบ™เบชเบทเบšเบ—เบญเบ”)

เบœเบนเป‰เป€เบšเบดเปˆเบ‡เปเบเบ‡เบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เบฅเปเบฒเบ”เบฑเบšเบŠเบฑเป‰เบ™เบ‚เบญเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเบธเปˆเบกเบขเบนเปˆเปƒเบ™เบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™ (เบ‚เบฑเป‰เบ™เบ•เบญเบ™, เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™, เบซเบผเบฑเบเบŠเบฑเบšเปเบญเบฑเบšเบฏ, เปเบฅเบฐเบญเบทเปˆเบ™เป†. เบ”เป‰เบงเบเบเบฒเบ™เบชเบทเบšเบ—เบญเบ”). เปƒเบ™เบ„เปเบฒเบชเบฑเบšเบ•เปˆเบฒเบ‡เป†เบญเบทเปˆเบ™เป†, เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เบงเปˆเบฒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ„เบงเบ™เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบเบฑเบšเบซเบ™เบถเปˆเบ‡เบซเบผเบทเบซเบผเบฒเบเบเบธเปˆเบก.

เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ–เป‰เบฒเบœเบนเป‰เบšเปเบฅเบดเบซเบฒเบ™เบ•เบฑเป‰เบ‡เบฅเปเบฒเบ”เบฑเบšเบŠเบฑเป‰เบ™ โ€œเบเบธเปˆเบกเบเบฒเบ™เบœเบฐเบฅเบดเบ” (เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™) โ†’ เบฅเบฐเบšเบปเบš X clusters โ†’ เบเบธเปˆเบกเบเบฒเบ™เบœเบฐเบฅเบดเบ”เบ‚เบญเบ‡เบฅเบฐเบšเบปเบš Xโ€ เปƒเบ™เบšเปˆเบญเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™ Git, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบเบฒเบ™เบฅเบงเบกเบเบฑเบ™เบ‚เบญเบ‡ configs เบ•เปเปˆเป„เบ›เบ™เบตเป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบเบฑเบšเบเบธเปˆเบกเบเบฒเบ™เบœเบฐเบฅเบดเบ”เบ‚เบญเบ‡เบฅเบฐเบšเบปเบš X:

  • เบเบณเบ™เบปเบ”เบ„เปˆเบฒเบ—เบปเปˆเบงเป„เบ›เบเบฑเบšเบ—เบธเบเบเบธเปˆเบกเบเบฒเบ™เบœเบฐเบฅเบดเบ”.
  • เบเบณเบ™เบปเบ”เบ„เปˆเบฒเบชเบณเบฅเบฑเบšเบฅเบฐเบšเบปเบš X cluster.
  • เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบชเบณเบฅเบฑเบšเบเบธเปˆเบกเบเบฒเบ™เบœเบฐเบฅเบดเบ”เบฅเบฐเบšเบปเบš X.

9. เปเบกเปˆเปเบšเบšเปเบฅเบฐเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ overrides

เบœเบนเป‰เป€เบšเบดเปˆเบ‡เปเบเบ‡เบฅเบฐเบšเบปเบšเบชเบฒเบกเบฒเบ” override เบŠเบธเบ”เบ‚เบญเบ‡ configs เบชเบทเบšเบ—เบญเบ”เปเบฅเบฐเบ„เปˆเบฒเบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, เบ›เบฑเบšเบ›เบฑเบšเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบชเปเบฒเบฅเบฑเบšเบเบธเปˆเบกเบชเบฐเป€เบžเบฒเบฐเบ—เบตเปˆเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰.

10. Selective include and exclude for configurations, เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ

เบœเบนเป‰เป€เบšเบดเปˆเบ‡เปเบเบ‡เบฅเบฐเบšเบปเบšเบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบซเบผเบทเบšเปเปˆเปเบกเปˆเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบšเบฒเบ‡เบขเปˆเบฒเบ‡เปƒเบซเป‰เบเบฑเบšเบเบธเปˆเบกเบ—เบตเปˆเบกเบตเบฅเบฑเบเบชเบฐเบ™เบฐเบšเบฒเบ‡เบขเปˆเบฒเบ‡.

11. เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เปเบกเปˆเปเบšเบš

เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบˆเบฒเบเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เป€เบฅเบทเบญเบเบงเบดเบ—เบตเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ (Helm Chart, pure Kubernetes yaml, เปเบฅเบฐเบญเบทเปˆเบ™เป†) เป€เบžเบทเปˆเบญเบ™เปเบฒเปƒเบŠเป‰เบฎเบนเบšเปเบšเบšเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบ—เบตเปˆเบชเบธเบ”เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบชเบฐเป€เบžเบฒเบฐ.

เป€เบ„เบทเปˆเบญเบ‡เบกเบท GitOps เปƒเบ™เป€เบงเบ—เบต OpenShift

ArgoCD

ArgoCD เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบปเบงเปเบšเบš Reconcile เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบžเบฒเบเบ™เบญเบ เปเบฅเบฐเบชเบฐเบซเบ™เบญเบ‡ UI เบ—เบตเปˆเป€เบ›เบฑเบ™เบชเบนเบ™เบเบฒเบ‡เป€เบžเบทเปˆเบญเบˆเบฑเบ”เบงเบฒเบ‡เบเบฒเบ™เบžเบปเบงเบžเบฑเบ™เปเบšเบšเบซเบ™เบถเปˆเบ‡เบซเบฒเบซเบผเบฒเบเบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบธเปˆเบก เปเบฅเบฐเบšเปˆเบญเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™ Git. เบ‚เปเป‰เป€เบชเบเบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบ™เบตเป‰เบฅเบงเบกเบกเบตเบเบฒเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เบˆเบฑเบ”เบเบฒเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เป€เบกเบทเปˆเบญ ArgoCD เบšเปเปˆเป€เบฎเบฑเบ”เบงเบฝเบ.

เป€เบงเบฑเบšโ€‹เป„เบŠโ€‹เบ—โ€‹เปŒโ€‹เบ—เบตเปˆโ€‹เป€เบ›เบฑเบ™โ€‹เบ—เบฒเบ‡โ€‹เบเบฒเบ™

เป„เบซเบผ

Flux เบ›เบฐเบ•เบดเบšเบฑเบ”เบฎเบนเบšเปเบšเบš On-Cluster Resource Reconcile เปเบฅเบฐ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบšเปเปˆเบกเบตเบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบชเบนเบ™เบเบฒเบ‡เบ‚เบญเบ‡ repository เบ„เปเบฒเบ™เบดเบเบฒเบก, เป€เบŠเบดเปˆเบ‡เป€เบ›เบฑเบ™เบˆเบธเบ”เบญเปˆเบญเบ™. เปƒเบ™เบ—เบฒเบ‡เบเบปเบ‡เบเบฑเบ™เบ‚เป‰เบฒเบก, เปเบ™เปˆเบ™เบญเบ™, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบเบฒเบ™เบ‚เบฒเบ”เบเบฒเบ™เบชเบนเบ™เบเบฒเบ‡, เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบเบฑเบ‡เบ„เบปเบ‡เบขเบนเปˆเป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบเบธเปˆเบกเบซเบ™เบถเปˆเบ‡เบˆเบฐเบฅเบปเป‰เบกเป€เบซเบฅเบง.

เป€เบงเบฑเบšโ€‹เป„เบŠโ€‹เบ—โ€‹เปŒโ€‹เบ—เบตเปˆโ€‹เป€เบ›เบฑเบ™โ€‹เบ—เบฒเบ‡โ€‹เบเบฒเบ™

เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ ArgoCD เปƒเบ™ OpenShift

ArgoCD เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบ”เบตเป€เบฅเบตเบ”เปเบฅเบฐ web console, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบšเปเปˆเบเบงเบกเป€เบญเบปเบฒ 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 Server เป€เบžเบทเปˆเบญเปƒเบซเป‰เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰เป‚เบ”เบ 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 admin

# 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 Server เบœเปˆเบฒเบ™ ArgoCD WebUI web console เบซเบผเบทเป€เบ„เบทเปˆเบญเบ‡เบกเบทเปเบ–เบงเบ„เปเบฒเบชเบฑเปˆเบ‡ ArgoCD Cli.
https://blog.openshift.com/is-it-too-late-to-integrate-gitops/

GitOps - เบกเบฑเบ™เบšเปเปˆเป€เบ„เบตเบเบŠเป‰เบฒเป€เบเบตเบ™เป„เบ›

"เบฅเบปเบ”เป„เบŸเป„เบ”เป‰เบญเบญเบเป„เบ›" - เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบ‚เบปเบฒเป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป‚เบญเบเบฒเบ”เบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ–เบทเบเบžเบฒเบ”. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡ OpenShift, เบ„เบงเบฒเบกเบ›เบฒเบ–เบฐเบซเบ™เบฒเบ—เบตเปˆเบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปƒเบ™เบ—เบฑเบ™เบ—เบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เปเบžเบฅเบฐเบ•เบฐเบŸเบญเบกเปƒเบซเบกเปˆเบ—เบตเปˆเป€เบขเบฑเบ™เบ™เบตเป‰เบกเบฑเบเบˆเบฐเบชเป‰เบฒเบ‡เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ™เบตเป‰เบขเปˆเบฒเบ‡เปเบ—เป‰เบˆเบดเบ‡เบเบฑเบšเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เปเบฅเบฐเบšเปเบฒเบฅเบธเบ‡เบฎเบฑเบเบชเบฒเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡, เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปเบฅเบฐเบงเบฑเบ”เบ–เบธ OpenShift เบญเบทเปˆเบ™เป†. เปเบ•เปˆเป‚เบญเบเบฒเบ”เบชเบฐเป€เบซเบกเบตเบžเบฒเบ”เป„เบ›เบซเบกเบปเบ”เบšเป?

เบชเบทเบšเบ•เปเปˆเบŠเบธเบ”เบ‚เบญเบ‡เบšเบปเบ”เบ„เบงเบฒเบกเบเปˆเบฝเบงเบเบฑเบš GitOps, เบกเบทเป‰เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบซเบฑเบ™เบงเบดเบ—เบตเบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเป€เบฎเบฑเบ”เบ”เป‰เบงเบเบกเบทเปเบฅเบฐเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ‚เบญเบ‡เบกเบฑเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบตเปˆเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบ–เบทเบเบ„เบธเป‰เบกเบ„เบญเบ‡เป‚เบ”เบเป€เบ„เบทเปˆเบญเบ‡เบกเบท GitOps. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบ—เปเบฒเบญเบดเบ”เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ httpd เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡. เบžเบฒเบšเบซเบ™เป‰เบฒเบˆเปเบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เป€เบ–เบดเบ‡เบงเบดเบ—เบตเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡ namespace, เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เปเบฅเบฐเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป€เบ›เบตเบ”เป€เบœเบตเบเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ™เบตเป‰เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡.

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

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ handcrafted. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบกเบฑเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เป‚เบญเบ™เบžเบฒเบเปƒเบ•เป‰เบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡ GitOps เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบชเบนเบ™เป€เบชเบเบ„เบงเบฒเบกเบžเป‰เบญเบก. เปƒเบ™เบชเบฑเป‰เบ™, เบกเบฑเบ™เป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰:

  • เบชเป‰เบฒเบ‡เบšเปˆเบญเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™ Git เบชเปเบฒเบฅเบฑเบšเบฅเบฐเบซเบฑเบ”.
  • เบžเบงเบเป€เบฎเบปเบฒเบชเบปเปˆเบ‡เบญเบญเบเบงเบฑเบ”เบ–เบธเบ›เบฐเบˆเบธเบšเบฑเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปเบฅเบฐเบญเบฑเบšเป‚เบซเบฅเบ”เบžเบงเบเบกเบฑเบ™เป„เบ›เบ—เบตเปˆเบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™ Git.
  • เบเบฒเบ™เป€เบฅเบทเบญเบ เปเบฅเบฐเบ™เบณเปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เบกเบท GitOps.
  • เบžเบงเบเป€เบฎเบปเบฒเป€เบžเบตเปˆเบกเบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปƒเบชเปˆเบŠเบธเบ”เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ™เบตเป‰.
  • เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบ™เบปเบ”เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเปƒเบ™เบŠเบธเบ”เป€เบ„เบทเปˆเบญเบ‡เบกเบท GitOps เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ.
  • เบžเบงเบเป€เบฎเบปเบฒเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป‚เบ”เบเปƒเบŠเป‰เบŠเบธเบ”เป€เบ„เบทเปˆเบญเบ‡เบกเบท GitOps.
  • เบžเบงเบเป€เบฎเบปเบฒ synchronize เบงเบฑเบ”เบ–เบธเป‚เบ”เบเปƒเบŠเป‰เบŠเบธเบ”เป€เบ„เบทเปˆเบญเบ‡เบกเบท GitOps.
  • เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบ•เบฑเบ”เบญเบญเบ เปเบฅเบฐ synchronization เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ‚เบญเบ‡เบงเบฑเบ”เบ–เบธ.

เบ”เบฑเปˆเบ‡เบ—เบตเปˆเป„เบ”เป‰เบเปˆเบฒเบงเปƒเบ™เบญเบฐเบ”เบตเบ” เบšเบปเบ”เบ„เบงเบฒเบก, เปƒเบ™ GitOps เบกเบตเปเบซเบผเปˆเบ‡เบซเบ™เบถเปˆเบ‡เปเบฅเบฐเบžเบฝเบ‡เปเบ•เปˆเบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบงเบฑเบ”เบ–เบธเบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™เบเบธเปˆเบก Kubernetes - เบ„เบฑเบ‡เป€เบเบฑเบš Git. เบ•เปเปˆเป„เบ›, เบžเบงเบเป€เบฎเบปเบฒเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบˆเบฒเบเบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ—เบตเปˆเบญเบปเบ‡เบเบฒเบ™เบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเปƒเบŠเป‰เบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™ Git เปเบฅเป‰เบง. เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐ เบซเบผเบทเบชเปˆเบงเบ™เบ•เบปเบง, เปเบ•เปˆเบกเบฑเบ™เบ•เป‰เบญเบ‡เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบเบธเปˆเบก Kubernetes เป„เบ”เป‰. เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™ repository เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบฅเบฐเบซเบฑเบ”เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ, เบซเบผเบท repository เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰. เปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เบกเบตเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เบขเปˆเบฒเบ‡เป€เบ‚เบฑเป‰เบกเบ‡เบงเบ”เปƒเบ™เบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบ„เบงเบฒเบกเบฅเบฑเบš, เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡, เปเบฅเบฐเบชเบดเปˆเบ‡เบญเบทเปˆเบ™เป†เบ—เบตเปˆเบฅเบฐเบญเบฝเบ”เบญเปˆเบญเบ™เบ”เป‰เบฒเบ™เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบˆเบฐเบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™.

เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเป‰เบฒเบ‡ repository เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐเปƒเบซเบกเปˆเปƒเบ™ GitHub. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป‚เบ—เบซเบฒเบกเบฑเบ™เปƒเบ”เบเปเปˆเบ•เบฒเบกเบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™, เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰เบŠเบทเปˆ blogpost.

เบ–เป‰เบฒเป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธ YAML เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบซเบผเบทเบขเบนเปˆเปƒเบ™ Git, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เปƒเบŠเป‰ oc เบซเบผเบท kubectl binaries. เปƒเบ™เบžเบฒเบšเบซเบ™เป‰เบฒเบˆเปเบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เบฎเป‰เบญเบ‡เบ‚เป YAML เบชเปเบฒเบฅเบฑเบš namespace, เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”, เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เปเบฅเบฐเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เบเปˆเบญเบ™เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒ cloned repository เบชเป‰เบฒเบ‡เปƒเบซเบกเปˆเปเบฅเบฐ cd เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบกเบฑเบ™.

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

เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡. เบ—เปเบฒเบญเบดเบ”เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบเปเบฒเบ™เบปเบ”เบ•เบปเบงเปเบ›เบซเบผเบฒเบเปเบ–เบงเปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เปเบ—เบ™ 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 CD เบ—เบตเปˆเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡, เบšเบฑเบ™เบˆเบธเบฅเบฐเบซเบฑเบ”เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบˆเบฒเบเบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เบžเบฝเบ‡เปเบ•เปˆเปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบ—เปˆเบฒเบ™เบฅเบฐเบšเบธ repository เบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰.

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

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ. เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบเปเบฒเบ™เบปเบ”เบ„เปˆเบฒเป€เบžเบทเปˆเบญเปƒเบซเป‰เบŠเบธเบ”เป€เบ„เบทเปˆเบญเบ‡เบกเบท GitOps เป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเปˆเบฒเบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™เปเบฅเบฐเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เปƒเบ”เบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰, เป€เบŠเบดเปˆเบ‡ OpenShift เปเบกเปˆเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เปƒเบ™เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบงเบฑเบ”เบ–เบธ, เป€เบŠเบดเปˆเบ‡เบชเบฒเบ‚เบฒเบชเบฐเป€เบžเบฒเบฐเบ‚เบญเบ‡ repository เปเบกเปˆเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™, เปเบฅเบฐเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบตเปˆเบ„เบงเบ™เบˆเบฐ sync เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”.

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, เบŠเบธเบ”เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบˆเบฐเป€เบฅเบตเปˆเบกเบเบงเบ”เบชเบญเบšเบงเบฑเบ”เบ–เบธเบ—เบตเปˆเปƒเบŠเป‰เปเบฅเป‰เบงเบ•เปเปˆเบเบฑเบšเบ„เปเบฒเบ™เบดเบเบฒเบกเปƒเบ™เบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™. เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบเบฒเบ™เบŠเบดเบ‡เบ„เปŒเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เปเบฅเบฐเบเบฒเบ™เป€เบฎเบฑเบ”เบ„เบงเบฒเบกเบชเบฐเบญเบฒเบ”เบ–เบทเบเบ›เบดเบ”เปƒเบŠเป‰เบ‡เบฒเบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบญเบปเบ‡เบ›เบฐเบเบญเบšเบšเปเปˆเบ›เปˆเบฝเบ™เปเบ›เบ‡เป€เบ—เบทเปˆเบญ. เบเบฐเบฅเบธเบ™เบฒเบฎเบฑเบšเบŠเบฒเบšเบงเปˆเบฒเปƒเบ™เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบš Argo CD เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบกเบตเบชเบฐเบ–เบฒเบ™เบฐ "Out of Sync" เป€เบžเบฒเบฐเบงเปˆเบฒเบšเปเปˆเบกเบตเบ›เป‰เบฒเบเบŠเบทเปˆเบ—เบตเปˆ ArgoCD เปƒเบซเป‰.
เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เบงเปˆเบฒโ€‹เป€เบ›เบฑเบ™โ€‹เบซเบเบฑเบ‡โ€‹เป€เบกเบทเปˆเบญโ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เป€เบฅเบตเปˆเบกโ€‹เบ•เบปเป‰เบ™ synchronization เป€เบฅเบฑเบโ€‹เบ™เป‰เบญเบโ€‹เบ•เปเปˆโ€‹เบกเบฒโ€‹, เบงเบฑเบ”โ€‹เบ–เบธโ€‹เบˆเบฐโ€‹เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบ„เบทเบ™โ€‹เปƒเบซเบกเปˆโ€‹.

เบ•เบญเบ™เบ™เบตเป‰เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป€เบžเบทเปˆเบญเปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบšเปเปˆเบกเบตเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เปƒเบ™เป„เบŸเบฅเปŒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ.

argocd app sync simple-app --dry-run

เบ–เป‰เบฒเบšเปเปˆเบกเบตเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ synchronization เป„เบ”เป‰.

argocd app sync simple-app

เบซเบผเบฑเบ‡เบˆเบฒเบเปเบฅเปˆเบ™ argocd get command เปƒเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบžเบงเบเป€เบฎเบปเบฒเบ„เบงเบ™เบˆเบฐเป€เบซเบฑเบ™เบงเปˆเบฒเบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เป„เบ”เป‰เบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™ Healthy เบซเบผเบท Synced. เบ™เบตเป‰เบˆเบฐเบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™ Git repository เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบเบปเบ‡เบเบฑเบ™เบเบฑเบšเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™เบ—เบตเปˆเป„เบ”เป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปเบฅเป‰เบง.

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

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™