αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž’αŸ†αž–αžΈ 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

On-Cluster Resource Reconcir

αž™αŸ„αž„αžαžΆαž˜αž‚αŸ†αžšαžΌαž“αŸαŸ‡ αž…αž„αŸ’αž€αŸ„αž˜αž˜αžΆαž“αž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆαžŠαŸ‚αž›αž‘αž‘αž½αž›αžαž»αžŸαžαŸ’αžšαžΌαžœαž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αŸ’αžšαŸ€αž”αž’αŸ€αž”αž’αž“αž’αžΆαž“ Kubernetes (αž―αž€αžŸαžΆαžš YAML) αž“αŸ…αž€αŸ’αž“αž»αž„αžƒαŸ’αž›αžΆαŸ†αž„ Git αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž’αž“αž’αžΆαž“αž–αž·αžαž“αŸƒαž…αž„αŸ’αž€αŸ„αž˜αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž—αžΆαž–αž˜αž·αž“αžŸαŸ’αžšαž”αž‚αŸ’αž“αžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αžƒαžΎαž‰ αž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆαž“αžΉαž„αž•αŸ’αž‰αžΎαž€αžΆαžšαž‡αžΌαž“αžŠαŸ†αžŽαžΉαž„ αž αžΎαž™αž’αžΆαž…αž…αžΆαžαŸ‹αžœαž·αž’αžΆαž“αž€αžΆαžšαžŠαžΎαž˜αŸ’αž”αžΈαž€αŸ‚αžαž˜αŸ’αžšαžΌαžœαž—αžΆαž–αž˜αž·αž“αžŸαŸ’αžšαž”αž‚αŸ’αž“αžΆαŸ” αž‚αŸ†αžšαžΌ GitOps αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„ Anthos Config αž“αž·αž„ Weaveworks Flux αŸ”

αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž’αŸ†αž–αžΈ GitOps αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ OpenShift

αž’αŸ’αž“αž€αžŸαž˜αŸ’αžšαž»αŸ‡αžŸαž˜αŸ’αžšαž½αž›αž’αž“αž’αžΆαž“αžαžΆαž„αž€αŸ’αžšαŸ… (αž‡αŸ†αžšαž»αž‰)

αž‚αŸ†αžšαžΌαž“αŸαŸ‡αž’αžΆαž…αž…αžΆαžαŸ‹αž‘αž»αž€αžαžΆαž‡αžΆαž”αŸ†αžšαŸ‚αž”αŸ†αžšαž½αž›αž“αŸƒαž€αŸ†αžŽαŸ‚αž˜αž»αž“ αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž™αžΎαž„αž˜αžΆαž“αž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆαž˜αž½αž™ αž¬αž…αŸ’αžšαžΎαž“αžŠαŸ‚αž›αž‘αž‘αž½αž›αžαž»αžŸαžαŸ’αžšαžΌαžœαž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜αž’αž“αž’αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„αž‚αžΌ "αžƒαŸ’αž›αžΆαŸ†αž„ Git - Kubernetes cluster" αŸ” αž—αžΆαž–αžαž»αžŸαž‚αŸ’αž“αžΆαž“αŸ…αž‘αžΈαž“αŸαŸ‡αž‚αžΊαžαžΆαž…αž„αŸ’αž€αŸ„αž˜αžŠαŸ‚αž›αž”αžΆαž“αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž“αžΈαž˜αž½αž™αŸ—αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž˜αžΆαž“αž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆαžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αžšαž”αžŸαŸ‹αžœαžΆαž“αŸ„αŸ‡αž‘αŸαŸ” αž‚αžΌαž…αž„αŸ’αž€αŸ„αž˜ Git - k8s αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž‡αžΆαž‰αžΉαž€αž‰αžΆαž”αŸ‹αžαžΆαž‡αžΆ CRDs (αž“αž·αž™αž˜αž“αŸαž™αž’αž“αž’αžΆαž“αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“) αžŠαŸ‚αž›αž’αžΆαž…αž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž›αž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆαž‚αž½αžšαž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž‚αŸ†αžšαžΌαž“αŸαŸ‡ αž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆαž”αŸ’αžšαŸ€αž”αž’αŸ€αž”αžƒαŸ’αž›αžΆαŸ†αž„ Git αžŠαŸ‚αž›αž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ CRD αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž’αž“αž’αžΆαž“αž“αŸƒαž…αž„αŸ’αž€αŸ„αž˜ Kubernetes αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž•αž„αžŠαŸ‚αžšαž“αŸ…αž€αŸ’αž“αž»αž„ CRD αž αžΎαž™αž’αž“αž»αžœαžαŸ’αžαžŸαž€αž˜αŸ’αž˜αž—αžΆαž–αžŸαž˜αžŸαŸ’αžšαž”αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαž›αž‘αŸ’αž’αž•αž›αž“αŸƒαž€αžΆαžšαž”αŸ’αžšαŸ€αž”αž’αŸ€αž”αŸ” αž‡αžΆαž–αž·αžŸαŸαžŸαž˜αŸ‰αžΌαžŠαŸ‚αž› GitOps αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž“αŸ…αž€αŸ’αž“αž»αž„ ArgoCD αŸ”

αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž’αŸ†αž–αžΈ GitOps αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ OpenShift

GitOps αž“αŸ…αž›αžΎαžœαŸαž‘αž·αž€αžΆ OpenShift

αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ Kubernetes αž–αž αž»αž…αž„αŸ’αž€αŸ„αž˜

αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαžšαžΈαž€αžšαžΆαž›αžŠαžΆαž›αž“αŸƒ Kubernetes αž“αž·αž„αž€αžΆαžšαž€αžΎαž“αž‘αžΎαž„αž“αžΌαžœαž”αŸ’αžšαž‡αžΆαž”αŸ’αžšαž·αž™αž—αžΆαž–αž“αŸƒαž™αž»αž‘αŸ’αž’αžŸαžΆαžŸαŸ’αžαŸ’αžšαž–αž αž»αž–αž–αž€ αž“αž·αž„αž€αžΆαžšαž‚αžŽαž“αžΆαž‚αŸ‚αž˜ αž…αŸ†αž“αž½αž“αž˜αž’αŸ’αž™αž˜αž“αŸƒαž€αŸ’αžšαž»αž˜ OpenShift αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αžαž·αžαž·αž‡αž“αž˜αŸ’αž“αžΆαž€αŸ‹αŸ—αž€αŸαž€αŸ†αž–αž»αž„αž€αžΎαž“αž‘αžΎαž„αž•αž„αžŠαŸ‚αžšαŸ”

αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸ αž“αŸ…αž–αŸαž›αž”αŸ’αžšαžΎ Edge Computing αž…αž„αŸ’αž€αŸ„αž˜αžšαž”αžŸαŸ‹αž’αžαž·αžαž·αž‡αž“αž˜αŸ’αž“αžΆαž€αŸ‹αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αžšαžΆαž”αŸ‹αžšαž™ αž¬αžšαžΆαž”αŸ‹αž–αžΆαž“αŸ‹αŸ” αž‡αžΆαž›αž‘αŸ’αž’αž•αž› αž‚αžΆαžαŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αžαŸ†αž±αŸ’αž™αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αŸ’αžšαž»αž˜ OpenShift αž―αž€αžšαžΆαž‡αŸ’αž™ αž¬αžŸαž˜αŸ’αžšαž”αžŸαž˜αŸ’αžšαž½αž›αž˜αž½αž™αž…αŸ†αž“αž½αž“αž“αŸ…αž€αŸ’αž“αž»αž„αž–αž–αž€αžŸαžΆαž’αžΆαžšαžŽαŸˆ αž“αž·αž„αž“αŸ…αž€αŸ’αž“αž»αž„αž”αžšαž·αžœαŸαžŽαŸ”

αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡ αž”αž‰αŸ’αž αžΆαž‡αžΆαž…αŸ’αžšαžΎαž“αžαŸ’αžšαžΌαžœαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™ αž‡αžΆαž–αž·αžŸαŸαžŸαŸ–

  • αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžαžΆαž…αž„αŸ’αž€αŸ„αž˜αžŸαŸ’αžαž·αžαž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ’αžαžΆαž“αž—αžΆαž–αžŠαžΌαž…αž‚αŸ’αž“αžΆ (αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹ αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™ αž€αžΆαžšαž•αŸ’αž‘αž»αž€αŸ”αž›αŸ”)
  • αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžœαž·αž‰ (αž¬αžŸαŸ’αžŠαžΆαžš) αž…αž„αŸ’αž€αŸ„αž˜αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαžŸαŸ’αžαžΆαž“αž—αžΆαž–αžŠαŸ‚αž›αž‚αŸαžŸαŸ’αž‚αžΆαž›αŸ‹αŸ”
  • αž”αž„αŸ’αž€αžΎαžαž…αž„αŸ’αž€αŸ„αž˜αžαŸ’αž˜αžΈαžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαžšαžŠαŸ’αž‹αžŠαŸ‚αž›αž‚αŸαžŸαŸ’αž‚αžΆαž›αŸ‹αŸ”
  • αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‘αŸ…αž€αŸ’αžšαž»αž˜ OpenShift αž…αŸ’αžšαžΎαž“αŸ”
  • αžαŸ’αžšαž‘αž”αŸ‹β€‹αž€αžΆαžšβ€‹αž•αŸ’αž›αžΆαžŸαŸ‹β€‹αž”αŸ’αžαžΌβ€‹αžšβ€‹αž“αŸ…β€‹αž‘αžΌαž‘αžΆαŸ†αž„β€‹αž€αŸ’αžšαž»αž˜ OpenShift αž…αŸ’αžšαžΎαž“β€‹αŸ”
  • αž—αŸ’αž‡αžΆαž”αŸ‹β€‹αž€αžΆαžšβ€‹αž€αŸ†αžŽαžαŸ‹β€‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’β€‹αž‚αŸ†αžšαžΌβ€‹αž‘αŸ…β€‹αž”αžšαž·αž™αžΆαž€αžΆαžŸβ€‹αž•αŸ’αžŸαŸαž„β€‹αž‚αŸ’αž“αžΆαŸ”

αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ

αž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αžœαžŠαŸ’αžαž‡αžΈαžœαž·αžαžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸ αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ‚αž„αžαŸ‚αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αžαŸ’αžŸαŸ‚αžŸαž„αŸ’αžœαžΆαž€αŸ‹αž“αŸƒαž…αž„αŸ’αž€αŸ„αž˜ (dev, stage αŸ”αž›αŸ”) αž˜αž»αž“αž–αŸαž›αž”αž‰αŸ’αž…αž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž…αž„αŸ’αž€αŸ„αž˜αž•αž›αž·αžαž€αž˜αŸ’αž˜αŸ” αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡ αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž—αžΆαž–αž’αžΆαž…αžšαž€αž”αžΆαž“ αž“αž·αž„αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαž“αŸƒαž€αžΆαžšαž’αŸ’αžœαžΎαž˜αžΆαžαŸ’αžšαžŠαŸ’αž‹αžΆαž“ αž’αžαž·αžαž·αž‡αž“αžαŸ‚αž„αžαŸ‚αžŠαžΆαž€αŸ‹αž±αŸ’αž™αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αŸ…αž‘αžΌαž‘αžΆαŸ†αž„αž…αž„αŸ’αž€αŸ„αž˜αž€αŸ’αž“αž»αž„αž”αžšαž·αžœαŸαžŽ αž¬αžαŸ†αž”αž“αŸ‹αž‡αžΆαž…αŸ’αžšαžΎαž“αž“αŸƒαžœαŸαž‘αž·αž€αžΆαž–αž–αž€αžŸαžΆαž’αžΆαžšαžŽαŸˆαŸ”

αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡ αž€αž·αž…αŸ’αž…αž€αžΆαžšαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αžαŸ’αžšαžΌαžœαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αŸ–

  • αž’αžΆαž“αžΆαž±αŸ’αž™αž˜αžΆαž“αž…αž›αž“αžΆαž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ (αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‚αŸ„αž›αž–αžΈαžš αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αŸ”αž›αŸ”) αžšαžœαžΆαž„αž…αž„αŸ’αž€αŸ„αž˜ (dev, αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αŸ”αž›αŸ”)αŸ”
  • αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‘αŸ…αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ (αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‚αŸ„αž›αž–αžΈαžš αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αŸ”αž›αŸ”) αž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ’αžšαž»αž˜ OpenShift αž‡αžΆαž…αŸ’αžšαžΎαž“αŸ”
  • αžαŸ’αžšαž‘αž”αŸ‹β€‹αž€αžΆαžšβ€‹αž•αŸ’αž›αžΆαžŸαŸ‹β€‹αž”αŸ’αžαžΌβ€‹αžšβ€‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈβ€‹αž‘αŸ…β€‹αžŸαŸ’αžαžΆαž“αž—αžΆαž–β€‹αžŠαŸ‚αž›β€‹αž”αžΆαž“β€‹αžŸαŸ’αž‚αžΆαž›αŸ‹β€‹αž–αžΈβ€‹αž˜αž»αž“β€‹αŸ”

OpenShift GitOps αž”αŸ’αžšαžΎαž€αžšαžŽαžΈ

1. αž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž–αžΈαžƒαŸ’αž›αžΆαŸ†αž„ Git

αž’αŸ’αž“αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž…αž„αŸ’αž€αŸ„αž˜αž’αžΆαž…αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž…αž„αŸ’αž€αŸ„αž˜ OpenShift αž“αŸ…αž€αŸ’αž“αž»αž„αžƒαŸ’αž›αžΆαŸ†αž„ Git αž αžΎαž™αž’αž“αž»αžœαžαŸ’αžαž–αž½αž€αžœαžΆαžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαž…αž„αŸ’αž€αŸ„αž˜αžαŸ’αž˜αžΈαžŠαŸ„αž™αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž”αŸ’αžšαžΉαž„αž”αŸ’αžšαŸ‚αž„ αž αžΎαž™αž“αžΆαŸ†αž–αž½αž€αžœαžΆαž‘αŸ…αž‡αžΆαžšαžŠαŸ’αž‹αžŠαžΌαž…αž‚αŸ’αž“αžΆαž”αŸαŸ‡αž”αž·αž‘αž‘αŸ…αž“αžΉαž„αžšαžŠαŸ’αž‹αžŠαŸ‚αž›αž‚αŸαžŸαŸ’αž‚αžΆαž›αŸ‹αžŠαŸ‚αž›αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž€αŸ’αž“αž»αž„αžƒαŸ’αž›αžΆαŸ†αž„ Git αŸ”

2. αž€αžΆαžšαž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜αž‡αžΆαž˜αž½αž™αž’αŸ’αž“αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹

αž’αŸ’αž“αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αŸαž“αžΉαž„αž‘αž‘αž½αž›αž”αžΆαž“αž’αžαŸ’αžαž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž•αž„αžŠαŸ‚αžšαž–αžΈαžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜αžœαžαŸ’αžαž»αžŸαž˜αŸ’αž„αžΆαžαŸ‹ OpenShift αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŸαž˜αžŸαŸ’αžšαž”αžŠαžΌαž…αž‡αžΆ Vault αžŠαžΎαž˜αŸ’αž”αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž–αž½αž€αžœαžΆαžŠαŸ„αž™αž”αŸ’αžšαžΎαž§αž”αž€αžšαžŽαŸαžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‡αžΆαž–αž·αžŸαŸαžŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαžΏαž„αž“αŸαŸ‡αŸ”

3. αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžšαžŸαžΆαžαŸ‹

αž’αŸ’αž“αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž“αžΉαž„αž–αŸαž‰αž…αž·αžαŸ’αž αž›αž»αŸ‡αžαŸ’αžšαžΆαžαŸ‚ OpenShift GitOps αžαŸ’αž›αž½αž“αžœαžΆαž€αŸ†αžŽαžαŸ‹αž’αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαžŽ αž“αž·αž„αž–αŸ’αžšαž˜αžΆαž“αž’αŸ†αž–αžΈαž—αžΆαž–αž˜αž·αž“αžŸαŸ’αžšαž”αž‚αŸ’αž“αžΆαžšαžœαžΆαž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž–αž·αž αž“αž·αž„αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αžƒαŸ’αž›αžΆαŸ†αž„ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž–αž½αž€αž‚αŸαž’αžΆαž…αž†αŸ’αž›αžΎαž™αžαž”αž™αŸ‰αžΆαž„αžšαž αŸαžŸαž…αŸ†αž–αŸ„αŸ‡αž€αžΆαžšαžšαžŸαžΆαžαŸ‹αŸ”

4. αž€αžΆαžšαž‡αžΌαž“αžŠαŸ†αžŽαžΉαž„αž’αŸ†αž–αžΈαž€αžΆαžšαžšαžŸαžΆαžαŸ‹αž“αŸƒαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’

αž–αž½αž€αžœαžΆαž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžŠαŸ‚αž›αž’αŸ’αž“αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž…αž„αŸ‹αžšαŸ€αž“αž™αŸ‰αžΆαž„αž†αžΆαž”αŸ‹αžšαž αŸαžŸαž’αŸ†αž–αžΈαž€αžšαžŽαžΈαž“αŸƒαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžšαžŸαžΆαžαŸ‹ αžŠαžΎαž˜αŸ’αž”αžΈαž…αžΆαžαŸ‹αžœαž·αž’αžΆαž“αž€αžΆαžšαžŸαž˜αžŸαŸ’αžšαž”αž™αŸ‰αžΆαž„αž†αžΆαž”αŸ‹αžšαž αŸαžŸαžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„αŸ”

5. αž€αžΆαžšαž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜αžŠαŸ„αž™αžŠαŸƒαž“αŸƒαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž“αŸ…αž–αŸαž›αžšαžŸαžΆαžαŸ‹

αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜αž…αž„αŸ’αž€αŸ„αž˜ OpenShift αž‡αžΆαž˜αž½αž™αžƒαŸ’αž›αžΆαŸ†αž„ Git αž“αŸ…αž€αŸ’αž“αž»αž„αž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαž“αŸƒαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžšαžŸαžΆαžαŸ‹ αžŠαžΎαž˜αŸ’αž”αžΈαžαŸ’αžšαž‘αž”αŸ‹αž…αž„αŸ’αž€αŸ„αž˜αž‘αŸ…αžŸαŸ’αžαžΆαž“αž—αžΆαž–αžŠαŸ‚αž›αž”αžΆαž“αžŸαŸ’αž‚αžΆαž›αŸ‹αž–αžΈαž˜αž»αž“αž™αŸ‰αžΆαž„αž†αžΆαž”αŸ‹αžšαž αŸαžŸαŸ”

6. αž€αžΆαžšαž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž“αŸƒαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž“αŸ…αž–αŸαž›αžšαžŸαžΆαžαŸ‹

αž’αŸ’αž“αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αŸαž’αžΆαž…αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ OpenShift cluster αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžƒαŸ’αž›αžΆαŸ†αž„ αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž€αžΆαžšαžšαžŸαžΆαžαŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αžƒαžΎαž‰ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž…αž„αŸ’αž€αŸ„αž˜αžαŸ‚αž„αžαŸ‚αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαž“αžΉαž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ Git αŸ”

7. αž…αž„αŸ’αž€αŸ„αž˜αž‡αžΆαž…αŸ’αžšαžΎαž“ - αžƒαŸ’αž›αžΆαŸ†αž„αž˜αž½αž™αŸ”

αž’αŸ’αž“αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž’αžΆαž…αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž“αŸƒαž€αŸ’αžšαž»αž˜ OpenShift αž•αŸ’αžŸαŸαž„αŸ—αž‚αŸ’αž“αžΆαž‡αžΆαž…αŸ’αžšαžΎαž“αž“αŸ…αž€αŸ’αž“αž»αž„αžƒαŸ’αž›αžΆαŸ†αž„ Git αž αžΎαž™αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž–αž½αž€αžœαžΆαžαžΆαž˜αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαŸ”

8. αž‹αžΆαž“αžΆαž“αž»αž€αŸ’αžšαž˜αž“αŸƒαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž…αž„αŸ’αž€αŸ„αž˜ (αž˜αžšαžαž€)

αž’αŸ’αž“αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž’αžΆαž…αž€αŸ†αžŽαžαŸ‹αž‹αžΆαž“αžΆαž“αž»αž€αŸ’αžšαž˜αž“αŸƒαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž…αž„αŸ’αž€αŸ„αž˜αž“αŸ…αž€αŸ’αž“αž»αž„αžƒαŸ’αž›αžΆαŸ†αž„ (αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž› αž•αž›αž·αžαž•αž› αž•αž›αž”αŸαžαŸ’αžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαŸ” αž˜αŸ’αž™αŸ‰αžΆαž„αžœαž·αž‰αž‘αŸ€αž αžœαžΆαž’αžΆαž…αž€αŸ†αžŽαžαŸ‹αžαžΆαžαžΎαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž‚αž½αžšαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž…αŸ†αž–αŸ„αŸ‡αž…αž„αŸ’αž€αŸ„αž˜αž˜αž½αž™ αž¬αž…αŸ’αžšαžΎαž“αŸ”

αž§αž‘αžΆαž αžšαžŽαŸ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αŸ†αžŽαžαŸ‹αž‹αžΆαž“αžΆαž“αž»αž€αŸ’αžšαž˜ β€œαž…αž„αŸ’αž€αŸ„αž˜αž•αž›αž·αžαž€αž˜αŸ’αž˜ (αž•αž›αž·αžαž•αž›) β†’ αž…αž„αŸ’αž€αŸ„αž˜αž”αŸ’αžšαž–αŸαž“αŸ’αž’ X β†’ αž…αž„αŸ’αž€αŸ„αž˜αž•αž›αž·αžαž€αž˜αŸ’αž˜αž“αŸƒαž”αŸ’αžšαž–αŸαž“αŸ’αž’ X” αž“αŸ…αž€αŸ’αž“αž»αž„αžƒαŸ’αž›αžΆαŸ†αž„ Git αž“αŸ„αŸ‡αž€αžΆαžšαžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž‚αŸ’αž“αžΆαž“αŸƒαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž…αŸ†αž–αŸ„αŸ‡αž…αž„αŸ’αž€αŸ„αž˜αž•αž›αž·αžαž€αž˜αŸ’αž˜αž“αŸƒαž”αŸ’αžšαž–αŸαž“αŸ’αž’ XαŸ–

  • αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž‘αžΌαž‘αŸ…αž…αŸ†αž–αŸ„αŸ‡αž€αŸ’αžšαž»αž˜αž•αž›αž·αžαž€αž˜αŸ’αž˜αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ”
  • αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž…αž„αŸ’αž€αŸ„αž˜ System X αŸ”
  • αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž…αž„αŸ’αž€αŸ„αž˜αž•αž›αž·αžαž€αž˜αŸ’αž˜αž”αŸ’αžšαž–αŸαž“αŸ’αž’ X αŸ”

9. αžαŸ’αžšαž½αžαž›αžΎαž‚αŸ†αžšαžΌ αž“αž·αž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’

αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸ αž’αŸ’αž“αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž’αžΆαž…αž”αžŠαž·αžŸαŸαž’αžŸαŸ†αžŽαž»αŸ†αž“αŸƒαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŠαŸ‚αž›αž”αžΆαž“αž‘αž‘αž½αž›αž˜αžšαžαž€ αž“αž·αž„αžαž˜αŸ’αž›αŸƒαžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸ αž§αž‘αžΆαž αžšαžŽαŸ αžŠαžΎαž˜αŸ’αž”αžΈαž€αŸ‚αžŸαž˜αŸ’αžšαž½αž›αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž…αž„αŸ’αž€αŸ„αž˜αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αžŠαŸ‚αž›αž–αž½αž€αž‚αŸαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαŸ”

10. αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž› αž“αž·αž„αž˜αž·αž“αžšαžΆαž”αŸ‹αž”αž‰αŸ’αž…αžΌαž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ

αž’αŸ’αž“αž€β€‹αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„β€‹αž’αžΆαž…β€‹αž€αŸ†αžŽαžαŸ‹β€‹αž›αž€αŸ’αžαžαžŽαŸ’αžŒβ€‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹β€‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž¬β€‹αž€αžΆαžšβ€‹αž˜αž·αž“β€‹αž’αž“αž»αžœαžαŸ’αžβ€‹αž“αŸƒβ€‹αž€αžΆαžšβ€‹αž€αŸ†αžŽαžαŸ‹β€‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’β€‹αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹β€‹αž…αŸ†αž–αŸ„αŸ‡β€‹αž…αž„αŸ’αž€αŸ„αž˜β€‹αžŠαŸ‚αž›β€‹αž˜αžΆαž“β€‹αž›αž€αŸ’αžαžŽαŸˆβ€‹αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αŸ”

11. αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαž‚αŸ†αžšαžΌ

αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž“αžΉαž„αž‘αž‘αž½αž›αž”αžΆαž“αž’αžαŸ’αžαž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž–αžΈαžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαžšαž”αŸ€αž”αžŠαŸ‚αž›αž’αž“αž’αžΆαž“αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹ (Helm Chart, pure Kubernetes yaml αŸ”αž›αŸ”) αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžšαžΎαž‘αž˜αŸ’αžšαž„αŸ‹αžŸαž˜αžŸαŸ’αžšαž”αž”αŸ†αž•αž»αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž“αžΈαž˜αž½αž™αŸ—αŸ”

αž§αž”αž€αžšαžŽαŸ GitOps αž“αŸ…αž›αžΎαžœαŸαž‘αž·αž€αžΆ OpenShift

ArgoCD

ArgoCD αž’αž“αž»αžœαžαŸ’αžαž‚αŸ†αžšαžΌαž€αžΆαžšαž•αŸ’αžŸαŸ‡αž•αŸ’αžŸαžΆαž’αž“αž’αžΆαž“αžαžΆαž„αž€αŸ’αžšαŸ… αž“αž·αž„αž•αŸ’αžαž›αŸ‹αž“αžΌαžœ UI αž€αžŽαŸ’αžαžΆαž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαŸ€αž”αž…αŸ†αž‘αŸ†αž“αžΆαž€αŸ‹αž‘αŸ†αž“αž„αž˜αž½αž™αž‘αž›αŸ‹αž“αžΉαž„αž…αŸ’αžšαžΎαž“αžšαžœαžΆαž„αž…αž„αŸ’αž€αŸ„αž˜ αž“αž·αž„αžƒαŸ’αž›αžΆαŸ†αž„ 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

# 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αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž™αžΎαž„αž“αžΉαž„αžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ 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

αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž™αžΎαž„αž˜αžΆαž“αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αŸ’αžœαžΎαžŠαŸ„αž™αžŠαŸƒαŸ” αž₯αž‘αžΌαžœαž“αŸαŸ‡αžœαžΆαžαŸ’αžšαžΌαžœαž€αžΆαžšαž•αŸ’αž‘αŸαžšαž“αŸ…αž€αŸ’αžšαŸ„αž˜αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„ GitOps αžŠαŸ„αž™αž˜αž·αž“αž”αžΆαžαŸ‹αž”αž„αŸ‹αž—αžΆαž–αž’αžΆαž…αžšαž€αž”αžΆαž“αŸ” αž“αž·αž™αžΆαž™αž±αŸ’αž™αžαŸ’αž›αžΈαžœαžΆαž’αŸ’αžœαžΎαžŠαžΌαž…αž“αŸαŸ‡αŸ–

  • αž”αž„αŸ’αž€αžΎαžαžƒαŸ’αž›αžΆαŸ†αž„ Git αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΌαžŠαŸ”
  • αž™αžΎαž„αž“αžΆαŸ†αž…αŸαž‰αžœαžαŸ’αžαž»αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αžšαž”αžŸαŸ‹αž™αžΎαž„ αž αžΎαž™αž”αž„αŸ’αž αŸ„αŸ‡αžœαžΆαž‘αŸ…αžƒαŸ’αž›αžΆαŸ†αž„ Git αŸ”
  • αž€αžΆαžšαž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸ αž“αž·αž„αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž§αž”αž€αžšαžŽαŸ GitOps αŸ”
  • αž™αžΎαž„αž”αž“αŸ’αžαŸ‚αž˜αžƒαŸ’αž›αžΆαŸ†αž„αžšαž”αžŸαŸ‹αž™αžΎαž„αž‘αŸ…αž”αŸ’αžšαž’αž”αŸ‹αž§αž”αž€αžšαžŽαŸαž“αŸαŸ‡αŸ”
  • αž™αžΎαž„αž€αŸ†αžŽαžαŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž’αž”αŸ‹αž§αž”αž€αžšαžŽαŸ GitOps αžšαž”αžŸαŸ‹αž™αžΎαž„αŸ”
  • αž™αžΎαž„αž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ„αž™αž”αŸ’αžšαžΎαž”αŸ’αžšαž’αž”αŸ‹αž§αž”αž€αžšαžŽαŸ GitOps αŸ”
  • αž™αžΎαž„αž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜αžœαžαŸ’αžαž»αžŠαŸ„αž™αž”αŸ’αžšαžΎαž”αŸ’αžšαž’αž”αŸ‹αž§αž”αž€αžšαžŽαŸ GitOps αŸ”
  • αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΆαžαŸ‹αž…αŸαž‰ αž“αž·αž„αž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž“αŸƒαžœαžαŸ’αžαž»αŸ”

αžŠαžΌαž…αžŠαŸ‚αž›αž”αžΆαž“αžšαŸ€αž”αžšαžΆαž”αŸ‹αž–αžΈαž˜αž»αž“ αž’αžαŸ’αžαž”αž‘αž“αŸ…αž€αŸ’αž“αž»αž„ GitOps αž˜αžΆαž“αž”αŸ’αžšαž—αž–αžαŸ‚αž˜αž½αž™ αž“αž·αž„αžαŸ‚αž˜αž½αž™αž‚αžαŸ‹αž“αŸƒαž–αŸαžαŸŒαž˜αžΆαž“αž’αŸ†αž–αžΈαžœαžαŸ’αžαž»αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž…αž„αŸ’αž€αŸ„αž˜ Kubernetes - αžƒαŸ’αž›αžΆαŸ†αž„ Git αŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ αž™αžΎαž„αž”αž“αŸ’αžαž–αžΈαž”αžšαž·αžœαŸαžŽαžŠαŸ‚αž›αžŸαŸ’αžαžΆαž”αŸαž“αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžƒαŸ’αž›αžΆαŸ†αž„ Git αžšαž½αž…αž αžΎαž™αŸ” αžœαžΆαž’αžΆαž…αž‡αžΆαžŸαžΆαž’αžΆαžšαžŽαŸˆ αž¬αž―αž€αž‡αž“ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαžαŸ’αžšαžΌαžœαžαŸ‚αž’αžΆαž…αž…αžΌαž›αž”αŸ’αžšαžΎαž”αžΆαž“αžŠαŸ„αž™αž€αŸ’αžšαž»αž˜ Kubernetes αŸ” αž“αŸαŸ‡αž’αžΆαž…αž‡αžΆαžƒαŸ’αž›αžΆαŸ†αž„αžŠαžΌαž…αž‚αŸ’αž“αžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΌαžŠαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž¬αžƒαŸ’αž›αžΆαŸ†αž„αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αž‡αžΆαž–αž·αžŸαŸαžŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžŠαžΆαž€αŸ‹αž±αŸ’αž™αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αŸ” αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αžŠαž›αŸ‹αž’αž“αž»αžŸαžΆαžŸαž“αŸαž±αŸ’αž™αž˜αžΆαž“αž€αžΆαžšαž’αž“αž»αž‰αŸ’αž‰αžΆαžαž™αŸ‰αžΆαž„αžαžΉαž„αžšαŸ‰αžΉαž„αž“αŸ…αž€αŸ’αž“αž»αž„αžƒαŸ’αž›αžΆαŸ†αž„ αž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈαž€αžΆαžšαžŸαž˜αŸ’αž„αžΆαžαŸ‹ αž•αŸ’αž›αžΌαžœ αž“αž·αž„αžšαž”αžŸαŸ‹αžŠαŸ‚αž›αž„αžΆαž™αž“αžΉαž„αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž“αŸ…αž‘αžΈαž“αŸ„αŸ‡αŸ”

αž€αŸ’αž“αž»αž„αž§αž‘αžΆαž αžšαžŽαŸαžšαž”αžŸαŸ‹αž™αžΎαž„ αž™αžΎαž„αž“αžΉαž„αž”αž„αŸ’αž€αžΎαžαžƒαŸ’αž›αžΆαŸ†αž„αžŸαžΆαž’αžΆαžšαžŽαŸˆαžαŸ’αž˜αžΈαž˜αž½αž™αž“αŸ…αž›αžΎ GitHub αŸ” αž’αŸ’αž“αž€β€‹αž’αžΆαž…β€‹αž αŸ…β€‹αžœαžΆβ€‹αžαžΆαž˜β€‹αž’αŸ’αžœαžΈβ€‹αžŠαŸ‚αž›β€‹αž’αŸ’αž“αž€β€‹αž…αžΌαž›αž…αž·αžαŸ’αž αž™αžΎαž„β€‹αž”αŸ’αžšαžΎβ€‹αžˆαŸ’αž˜αŸ„αŸ‡ blogpost αŸ”

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž―αž€αžŸαžΆαžšαžœαžαŸ’αžαž» 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

αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡αž‘αŸ€αžαž•αŸ’αž›αžΌαžœαžαŸ’αžšαžΌαžœαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαŸ” αžŠαŸ†αž”αžΌαž„β€‹αž™αžΎαž„β€‹αž“αžΉαž„β€‹αž€αŸ†αžŽαžαŸ‹β€‹αž’αžαŸαžšβ€‹αž…αŸ’αžšαžΎαž“β€‹αž‡αž½αžš αž αžΎαž™β€‹αž”αž“αŸ’αž‘αžΆαž”αŸ‹β€‹αž˜αž€β€‹αž‡αŸ†αž“αž½αžŸ 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 αž“αžΌαžœβ€‹αžƒαŸ’αž›αžΆαŸ†αž„β€‹αžŠαŸ‚αž›β€‹αž™αžΎαž„β€‹αž”αžΆαž“β€‹αž”αž„αŸ’αž€αžΎαžβ€‹αžŠαŸ„αž™β€‹αž˜αžΆαž“β€‹αž€αžΌαžŠβ€‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈβ€‹αž–αžΈβ€‹αž§αž‘αžΆαž αžšαžŽαŸβ€‹αžšαž”αžŸαŸ‹β€‹αž™αžΎαž„αŸ” αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αžαŸ’αžšαžΌαžœαž”αŸ’αžšαžΆαž€αžŠαžαžΆαž’αŸ’αž“αž€αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αžƒαŸ’αž›αžΆαŸ†αž„αž–αž·αžαž”αŸ’αžšαžΆαž€αžŠαžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž˜αž»αž“αŸ”

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 αž“αŸ„αŸ‡ αž”αŸ’αžšαž’αž”αŸ‹αž§αž”αž€αžšαžŽαŸαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžœαžαŸ’αžαž»αžŠαŸ‚αž›αž”αžΆαž“αžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αžšαž½αž…αž αžΎαž™αž”αŸ’αžšαž†αžΆαŸ†αž„αž“αžΉαž„αž“αž·αž™αž˜αž“αŸαž™αž“αŸ…αž€αŸ’αž“αž»αž„αžƒαŸ’αž›αžΆαŸ†αž„αŸ” αž€αŸ’αž“αž»αž„αž§αž‘αžΆαž αžšαžŽαŸαžšαž”αžŸαŸ‹αž™αžΎαž„ αž€αžΆαžšαž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž· αž“αž·αž„αž€αžΆαžšαžŸαž˜αŸ’αž’αžΆαžαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž·αž‘ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž’αžΆαžαž»αž˜αž·αž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž“αŸ…αž‘αžΎαž™αž‘αŸαŸ” αžŸαžΌαž˜αž…αŸ†αžŽαžΆαŸ†αžαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹ Argo CD αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž”αžŸαŸ‹αž™αžΎαž„αž“αžΉαž„αž˜αžΆαž“αžŸαŸ’αžαžΆαž“αž—αžΆαž– "Out of Sync" αž–αžΈαž–αŸ’αžšαŸ„αŸ‡αž˜αž·αž“αž˜αžΆαž“αžŸαŸ’αž›αžΆαž€αžŸαž‰αŸ’αž‰αžΆαžŠαŸ‚αž› ArgoCD αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™αž“αŸ„αŸ‡αž‘αŸαŸ”
αž“αŸαŸ‡β€‹αž‡αžΆβ€‹αž˜αžΌαž›αž αŸαžαž»β€‹αžŠαŸ‚αž›β€‹αž“αŸ…β€‹αž–αŸαž›β€‹αžŠαŸ‚αž›β€‹αž™αžΎαž„β€‹αž…αžΆαž”αŸ‹β€‹αž•αŸ’αžŠαžΎαž˜β€‹αž’αŸ’αžœαžΎβ€‹αžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜β€‹αž”αž“αŸ’αžαž·αž…β€‹αž€αŸ’αžšαŸ„αž™β€‹αž˜αž€ αžœαžαŸ’αžαž»β€‹αž“αžΉαž„β€‹αž˜αž·αž“β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αžŠαžΆαž€αŸ‹β€‹αž±αŸ’αž™β€‹αž”αŸ’αžšαžΎβ€‹αž‘αžΎαž„αžœαž·αž‰β€‹αž‘αŸαŸ”

αž₯αž‘αžΌαžœαž“αŸαŸ‡ αž…αžΌαžšαž™αžΎαž„αž’αŸ’αžœαžΎαž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžšαžΆαž€αžŠαžαžΆαž˜αž·αž“αž˜αžΆαž“αž€αŸ†αž αž»αžŸαž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžšαžšαž”αžŸαŸ‹αž™αžΎαž„αŸ”

argocd app sync simple-app --dry-run

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αž·αž“αž˜αžΆαž“αž€αŸ†αž αž»αžŸαž‘αŸαž“αŸ„αŸ‡ αž’αŸ’αž“αž€αž’αžΆαž…αž”αž“αŸ’αžαž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜αŸ”

argocd app sync simple-app

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžš argocd get command αž“αŸ…αž›αžΎαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž”αžŸαŸ‹αž™αžΎαž„ αž™αžΎαž„αž‚αž½αžšαžαŸ‚αžƒαžΎαž‰αžαžΆαžŸαŸ’αžαžΆαž“αž—αžΆαž–αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αžΆαž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‘αŸ…αž‡αžΆ Healthy ឬ 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

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹