αž€αžΆαžšαž–αž„αŸ’αžšαžΈαž€ αž“αž·αž„αž”αž“αŸ’αžαŸ‚αž˜ Kubernetes (αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαž‘αžΌαž‘αŸ… αž“αž·αž„αžœαžΈαžŠαŸαž’αžΌ)

αž€αžΆαžšαž–αž„αŸ’αžšαžΈαž€ αž“αž·αž„αž”αž“αŸ’αžαŸ‚αž˜ Kubernetes (αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαž‘αžΌαž‘αŸ… αž“αž·αž„αžœαžΈαžŠαŸαž’αžΌ)

αžαŸ’αž„αŸƒαž‘αžΈ 8 αžαŸ‚αž˜αŸαžŸαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αžŸαž“αŸ’αž“αž·αžŸαžΈαž‘ Saint HighLoad++ 2019αž‡αžΆαž•αŸ’αž“αŸ‚αž€αž˜αž½αž™αž“αŸƒαž•αŸ’αž“αŸ‚αž€ "DevOps αž“αž·αž„αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš" αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸ "αž€αžΆαžšαž–αž„αŸ’αžšαžΈαž€ αž“αž·αž„αž”αŸ†αž–αŸαž‰αž”αž“αŸ’αžαŸ‚αž˜ Kubernetes" αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™ αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαžŠαŸ‚αž›αž”αž»αž‚αŸ’αž‚αž›αž·αž€αž”αžΈαž“αžΆαž€αŸ‹αž“αŸƒαž€αŸ’αžšαž»αž˜αž αŸŠαž»αž“ Flant αž”αžΆαž“αž…αžΌαž›αžšαž½αž˜αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αžœαžΆ αž™αžΎαž„αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαžŸαŸ’αžαžΆαž“αž—αžΆαž–αž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαŸ‚αž›αž™αžΎαž„αž…αž„αŸ‹αž–αž„αŸ’αžšαžΈαž€ αž“αž·αž„αž”αŸ†αž–αŸαž‰αž”αž“αŸ’αžαŸ‚αž˜αžŸαž˜αžαŸ’αžαž—αžΆαž–αžšαž”αžŸαŸ‹ Kubernetes αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž™αžΎαž„αž˜αž·αž“αž”αžΆαž“αžšαž€αžƒαžΎαž‰αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŠαŸ‚αž›αžαŸ’αžšαŸ€αž˜αžšαž½αž…αž‡αžΆαžŸαŸ’αžšαŸαž… αž“αž·αž„αžŸαžΆαž˜αž‰αŸ’αž‰αž“αŸ„αŸ‡αž‘αŸαŸ” αž™αžΎαž„αž˜αžΆαž“αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹αž“αŸƒαž‚αž˜αŸ’αžšαŸ„αž„αž”αŸ’αžšαž—αž–αž”αžΎαž€αž…αŸ†αž  αž αžΎαž™αžŸαž»αž“αŸ’αž‘αžšαž€αžαžΆαž“αŸαŸ‡αž€αŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž§αž‘αŸ’αž‘αž·αžŸαžŠαž›αŸ‹αž–αž½αž€αž‚αŸαž•αž„αžŠαŸ‚αžšαŸ”

αžαžΆαž˜αž”αŸ’αžšαž–αŸƒαžŽαžΈαž™αžΎαž„αžšαžΈαž€αžšαžΆαž™αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αž„αŸ’αž αžΆαž‰ αžœαžΈαžŠαŸαž’αžΌαž“αŸƒαžšαž”αžΆαž™αž€αžΆαžšαžŽαŸ (αŸ₯០ αž“αžΆαž‘αžΈ αž•αŸ’αžαž›αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“αž…αŸ’αžšαžΎαž“αž‡αžΆαž„αž’αžαŸ’αžαž”αž‘) αž“αž·αž„αžŸαŸαž…αž€αŸ’αžαžΈαžŸαž„αŸ’αžαŸαž”αžŸαŸ†αžαžΆαž“αŸ‹αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹αž‡αžΆαž’αžαŸ’αžαž”αž‘αŸ” αž‘αŸ…!

αžŸαŸ’αž“αžΌαž› αž“αž·αž„αž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αž“αŸ…αž€αŸ’αž“αž»αž„ K8s

Kubernetes αž€αŸ†αž–αž»αž„αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž§αžŸαŸ’αžŸαžΆαž αž€αž˜αŸ’αž˜ αž“αž·αž„αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž€αŸ’αž“αž»αž„αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αž‡αžΆαž™αžΌαžšαž˜αž€αž αžΎαž™αŸ–

  • αžŸαžΌαž˜αž’αžšαž‚αž»αžŽαžŠαž›αŸ‹αž‚αžΆαžαŸ‹ αž’αžšαžΌαž”αžΈαž™αžΎαž„αž›αŸ‚αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž‚αŸ„αž›αž‚αŸ†αž“αž·αžαžŠαžΌαž…αž‡αžΆαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ config αž¬αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš command (Chef, Ansible...) αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž”αŸ’αžšαžΎαž€αžΆαžšαžŠαžΆαž€αŸ‹αž‡αžΆαž€αŸ’αžšαž»αž˜αž“αŸƒ containers αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αŸ”αž›αŸ”
  • αž™αžΎαž„αž’αžΆαž…αžšαŸ€αž”αž…αŸ†αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ„αž™αž˜αž·αž“αž‚αž·αžαž–αžΈ nuances αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž‚αŸαž αž‘αŸ†αž–αŸαžšαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αžŠαŸ‚αž›αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαžΆαž€αŸ‹αž±αŸ’αž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ– αžŠαŸ‚αž€αž‘αž‘αŸ αž–αž–αž€αž“αŸƒαž’αŸ’αž“αž€αž•αŸ’αžαž›αŸ‹αžŸαŸαžœαžΆ αž‡αžΆαžŠαžΎαž˜αŸ”
  • αž‡αžΆαž˜αž½αž™αž“αžΉαž„ K8s αž’αŸ’αž“αž€αž˜αž·αž“αžŠαŸ‚αž›αž˜αžΆαž“αž›αž‘αŸ’αž’αž—αžΆαž–αž…αžΌαž›αž”αŸ’αžšαžΎαž…αŸ’αžšαžΎαž“αž‡αžΆαž„αž“αŸαŸ‡αž‘αŸαŸ” αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž›αŸ’αž’αž”αŸ†αž•αž»αž αž›αžΎαž€αžΆαžšαžšαŸ€αž”αž…αŸ†αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αŸ– αž”αž…αŸ’αž…αŸαž€αž‘αŸαžŸαž’αŸ’αžœαžΎαž˜αžΆαžαŸ’αžšαžŠαŸ’αž‹αžΆαž“ αž€αžΆαžšαž–αŸ’αž™αžΆαž”αžΆαž›αžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„ αž€αžΆαžšαž’αžαŸ‹αž±αž“αž…αŸ†αž–αŸ„αŸ‡αž€αŸ†αž αž»αžŸαŸ”αž›αŸ”

αž‘αŸ„αŸ‡αž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αž‚αžΊαž˜αž·αž“αžšαž›αžΌαž“αž“αŸ„αŸ‡αž‘αŸαŸ– Kubernetes αž€αŸαž”αžΆαž“αž“αžΆαŸ†αž™αž€αž”αž‰αŸ’αž αžΆαž”αŸ’αžšαžˆαž˜αžαŸ’αž˜αžΈαžšαž”αžŸαŸ‹αžαŸ’αž›αž½αž“αž•αž„αžŠαŸ‚αžšαŸ”

Kubernetes αž˜αž·αž“αž˜αžΆαž“ αž‚αžΊαž‡αžΆαž€αžΆαžšαž”αž‰αŸ’αž…αžΌαž›αž‚αŸ’αž“αžΆαžŠαŸ‚αž›αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ” αžŸαŸ’αž“αžΌαž› Kubernetes αž‘αž‘αž½αž›αžαž»αžŸαžαŸ’αžšαžΌαžœαž…αŸ†αž–αŸ„αŸ‡αžαŸ‚αžŸαŸ†αžŽαž»αŸ†αž“αŸƒαž˜αž»αžαž„αžΆαžšαž…αžΆαŸ†αž”αžΆαž…αŸ‹αž’αž”αŸ’αž”αž”αžšαž˜αžΆαžŠαŸ‚αž›αž˜αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„ αžšαžΆαž›αŸ‹ αž…αž„αŸ’αž€αŸ„αž˜αŸ–

αž€αžΆαžšαž–αž„αŸ’αžšαžΈαž€ αž“αž·αž„αž”αž“αŸ’αžαŸ‚αž˜ Kubernetes (αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαž‘αžΌαž‘αŸ… αž“αž·αž„αžœαžΈαžŠαŸαž’αžΌ)

αžŸαŸ’αž“αžΌαž› Kubernetes αž€αŸ†αžŽαžαŸ‹αžŸαŸ†αžŽαž»αŸ†αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž“αŸƒ primitives αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžŠαžΆαž€αŸ‹αž‡αžΆαž€αŸ’αžšαž»αž˜αž“αŸƒαž€αž»αž„αžαžΊαž“αŸαžš αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž…αžšαžΆαž…αžšαžŽαŸ αž“αž·αž„αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž“αŸ…αž›αžΎαŸ” αž™αžΎαž„αž”αžΆαž“αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαž–αž½αž€αž‚αŸαž“αŸ…αž€αŸ’αž“αž»αž„αž›αž˜αŸ’αž’αž·αžαž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αžαž“αŸ…αž€αŸ’αž“αž»αž„ αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸ 2 αž†αŸ’αž“αžΆαŸ†αž˜αž»αž“.

αž€αžΆαžšαž–αž„αŸ’αžšαžΈαž€ αž“αž·αž„αž”αž“αŸ’αžαŸ‚αž˜ Kubernetes (αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαž‘αžΌαž‘αŸ… αž“αž·αž„αžœαžΈαžŠαŸαž’αžΌ)

αž˜αŸ‰αŸ’αž™αžΆαž„αžœαž·αž‰αž‘αŸ€αž K8s αž•αŸ’αžαž›αŸ‹αž±αž€αžΆαžŸαžŠαŸαž’αžŸαŸ’αž…αžΆαžšαŸ’αž™αžŠαžΎαž˜αŸ’αž”αžΈαž–αž„αŸ’αžšαžΈαž€αž˜αž»αžαž„αžΆαžšαžŠαŸ‚αž›αž˜αžΆαž“ αžŠαŸ‚αž›αž‡αž½αž™αž”αž·αž‘αž’αŸ’αž“αž€αžŠαž‘αŸƒ - αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹ - αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αŸ” αž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ…αž›αžΎ Kubernetes αž‚αžΊαž‡αžΆαž‘αŸ†αž“αž½αž›αžαž»αžŸαžαŸ’αžšαžΌαžœαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž…αž„αŸ’αž€αŸ„αž˜ αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαžαŸ‚αžŠαŸ†αž‘αžΎαž„ αž“αž·αž„αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αžŠαŸ‚αž›αž…αžΆαŸ†αž”αžΆαž…αŸ‹αžŠαžΎαž˜αŸ’αž”αžΈαž±αŸ’αž™αž€αŸ’αžšαž»αž˜αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸ "αž“αŸ…αž€αŸ’αž“αž»αž„αžšαžΌαž”αžšαžΆαž„αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ" [αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸ] αŸ” αžαžΎαž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αž‘αžΆαŸ†αž„αž“αŸαŸ‡αž‡αžΆαž’αŸ’αžœαžΈ? αžŸαžΌαž˜αž€αŸ’αžšαž‘αŸαž€αž˜αžΎαž›αž§αž‘αžΆαž αžšαžŽαŸαž˜αž½αž™αž…αŸ†αž“αž½αž“αŸ”

αž§αž‘αžΆαž αžšαžŽαŸαž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž“αŸ’αžαŸ‚αž˜

αžŠαŸ„αž™αž”αžΆαž“αžŠαŸ†αž‘αžΎαž„ Kubernetes αž™αžΎαž„αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž—αŸ’αž‰αžΆαž€αŸ‹αž•αŸ’αž’αžΎαž›αžŠαŸ‚αž›αž”αžŽαŸ’αžαžΆαž‰αžŠαŸ‚αž›αž…αžΆαŸ†αž”αžΆαž…αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αžšαž”αžŸαŸ‹ pods αž‘αžΆαŸ†αž„αž€αŸ’αž“αž»αž„ node αž“αž·αž„ node αž˜αž·αž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„αž‘αŸαŸ” αžαžΊαžŽαŸ‚αž› Kubernetes αž˜αž·αž“αž’αžΆαž“αžΆαž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž‘αŸ αž•αŸ’αž‘αž»αž™αž‘αŸ…αžœαž·αž‰ αžœαžΆαž€αŸ†αžŽαžαŸ‹αž”αžŽαŸ’αžαžΆαž‰ αž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹ (CNI) αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž“αŸ’αžαŸ‚αž˜αž—αžΆαž‚αžΈαž‘αžΈαž”αžΈαŸ” αž™αžΎαž„αžαŸ’αžšαžΌαžœαžŠαŸ†αž‘αžΎαž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž“αŸ’αžαŸ‚αž˜αž˜αž½αž™αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž“αŸ’αžαŸ‚αž˜αž‘αžΆαŸ†αž„αž“αŸαŸ‡ αžŠαŸ‚αž›αž“αžΉαž„αž‘αž‘αž½αž›αžαž»αžŸαžαŸ’αžšαžΌαžœαž…αŸ†αž–αŸ„αŸ‡αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž”αžŽαŸ’αžαžΆαž‰αŸ”

αž€αžΆαžšαž–αž„αŸ’αžšαžΈαž€ αž“αž·αž„αž”αž“αŸ’αžαŸ‚αž˜ Kubernetes (αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαž‘αžΌαž‘αŸ… αž“αž·αž„αžœαžΈαžŠαŸαž’αžΌ)

αž§αž‘αžΆαž αžšαžŽαŸαž‡αž·αžαžŸαŸ’αž“αž·αž‘αŸ’αž’αž‚αžΊαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž•αŸ’αž‘αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™ (αžαžΆαžŸαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“ αž§αž”αž€αžšαžŽαŸαž‘αž”αŸ‹αžŸαŸ’αž€αžΆαžαŸ‹αž”αžŽαŸ’αžαžΆαž‰ Ceph...)αŸ” αžŠαŸ†αž”αžΌαž„αž–αž½αž€αž‚αŸαžŸαŸ’αžαž·αžαž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ’αž“αžΌαž›αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž˜αž€αžŠαž›αŸ‹ CSI αžŸαŸ’αžαžΆαž“αž—αžΆαž–αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‘αŸ…αž‡αžΆαž’αŸ’αžœαžΈαžŠαŸ‚αž›αžŸαŸ’αžšαžŠαŸ€αž„αž“αžΉαž„αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆαžšαž½αž…αž αžΎαž™αŸ– αž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αž‚αžΊαž“αŸ…αž€αŸ’αž“αž»αž„ Kubernetes αž αžΎαž™αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαžšαž”αžŸαŸ‹αžœαžΆαž‚αžΊαž“αŸ…αž€αŸ’αž“αž»αž„αž˜αŸ‰αžΌαžŒαž»αž›αž—αžΆαž‚αžΈαž‘αžΈαž”αžΈαŸ”

αž§αž‘αžΆαž αžšαžŽαŸαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžšαž½αž˜αž˜αžΆαž“:

  • Ingress- αž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆ (αžŸαžΌαž˜αž˜αžΎαž›αž€αžΆαžšαž–αž·αž“αž·αžαŸ’αž™αž‘αžΎαž„αžœαž·αž‰αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαž“αŸ…αž€αŸ’αž“αž»αž„ αž’αžαŸ’αžαž”αž‘αžαŸ’αž˜αžΈαŸ—αžšαž”αžŸαŸ‹αž™αžΎαž„αŸ”).
  • αž’αŸ’αž“αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžœαž·αž‰αŸ’αž‰αžΆαž”αž“αž”αŸαžαŸ’αžš:

    αž€αžΆαžšαž–αž„αŸ’αžšαžΈαž€ αž“αž·αž„αž”αž“αŸ’αžαŸ‚αž˜ Kubernetes (αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαž‘αžΌαž‘αŸ… αž“αž·αž„αžœαžΈαžŠαŸαž’αžΌ)

  • αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš αž‚αžΊαž‡αžΆαžαŸ’αž“αžΆαž€αŸ‹αž‘αžΆαŸ†αž„αž˜αžΌαž›αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž“αŸ’αžαŸ‚αž˜ (αžŠαŸ‚αž›αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž’αŸ’αž“αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžœαž·αž‰αŸ’αž‰αžΆαž”αž“αž”αŸαžαŸ’αžšαžŠαŸ‚αž›αž”αžΆαž“αž›αžΎαž€αž‘αžΎαž„) αž–αž½αž€αž‚αŸαž€αŸ†αžŽαžαŸ‹αž”αž»αž–αŸ’αžœαž”αž‘ αž“αž·αž„αž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆαŸ” αžαž€αŸ’αž€αžœαž·αž‡αŸ’αž‡αžΆαž“αŸƒαž€αžΆαžšαž„αžΆαžšαžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžŠαŸ„αž™αž€αžΆαžšαžŸαŸ’αžšαž˜αžΎαž›αžŸαŸ’αžšαž˜αŸƒαžšαž”αžŸαŸ‹αž™αžΎαž„αžαŸ‚αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡ αž αžΎαž™αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž™αžΎαž„αž”αž„αŸ’αžœαŸ‚αžšαžŸαž˜αžΆαžŸαž’αžΆαžαž»αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŠαŸ‚αž›αžαŸ’αžšαŸ€αž˜αžšαž½αž…αž‡αžΆαžŸαŸ’αžšαŸαž… (αž§αž‘αžΆαž αžšαžŽαŸ DBMS) αž‘αŸ…αž‡αžΆαž”αž»αž–αŸ’αžœαž€αžΆαž› αžŠαŸ‚αž›αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™ (αž‡αžΆαž„αžŸαŸ†αžŽαž»αŸ†αž“αŸƒαž’αž»αž„ αž“αž·αž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž”αžŸαŸ‹αžœαžΆ)αŸ” αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαž˜αž½αž™αž…αŸ†αž“αž½αž“αž’αŸ†αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžšαžŸαŸαžš - αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž–αž½αž€αž‚αŸαž‡αžΆαž…αŸ’αžšαžΎαž“αž˜αž·αž“αž‘αžΆαž“αŸ‹αžšαž½αž…αžšαžΆαž›αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž•αž›αž·αžαž€αŸαžŠαŸ„αž™ αžœαžΆαž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž‡αžΆαž”αž‰αŸ’αž αžΆαž“αŸƒαž–αŸαž›αžœαŸαž›αžΆαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ–

    αž€αžΆαžšαž–αž„αŸ’αžšαžΈαž€ αž“αž·αž„αž”αž“αŸ’αžαŸ‚αž˜ Kubernetes (αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαž‘αžΌαž‘αŸ… αž“αž·αž„αžœαžΈαžŠαŸαž’αžΌ)

  • αž˜αŸ‰αŸ‚αžαŸ’αžš - αžšαžΌαž”αž—αžΆαž–αž˜αž½αž™αž‘αŸ€αžαž“αŸƒαžšαž”αŸ€αž”αžŠαŸ‚αž› Kubernetes αž”αžΆαž“αž”αŸ†αž”αŸ‚αž€αž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹ (Metrics API) αž–αžΈαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž (αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž“αŸ’αžαŸ‚αž˜αž—αžΆαž‚αžΈαž‘αžΈαž”αžΈαžŠαžΌαž…αž‡αžΆαž’αžΆαžŠαžΆαž”αŸ‹αž‘αŸαžš Prometheus αž—αŸ’αž“αžΆαž€αŸ‹αž„αžΆαžšαž…αž„αŸ’αž€αŸ„αž˜ Datadog ... ) αŸ”
  • αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™ αž“αž·αž„αžŸαŸ’αžαž·αžαž·αžŠαŸ‚αž›αž‡αžΆαž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ‚αž›αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ‚αžαŸ’αžšαžΌαžœαž€αžΆαžš Prometheus αž“αž·αž„ Grafanaαž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αŸαž˜αžΆαž“ kube-state-metrics, node-exporter αž‡αžΆαžŠαžΎαž˜αŸ”

αž αžΎαž™αž“αŸαŸ‡αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž”αž‰αŸ’αž‡αžΈαž–αŸαž‰αž›αŸαž‰αž“αŸƒαž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ... αž§αž‘αžΆαž αžšαžŽαŸαŸ– αž“αŸ…αž€αŸ’αžšαž»αž˜αž αŸŠαž»αž“ Flant αž™αžΎαž„αžŠαŸ†αž‘αžΎαž„αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“ 29 αž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜ (αžŠαŸ‚αž›αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž”αž„αŸ’αž€αžΎαžαžœαžαŸ’αžαž» Kubernetes αžŸαžšαž»αž”αž…αŸ†αž“αž½αž“ 249) αŸ” αž“αž·αž™αžΆαž™αž±αŸ’αž™αžŸαžΆαž˜αž‰αŸ’αž‰ αž™αžΎαž„αž˜αž·αž“αž’αžΆαž…αžƒαžΎαž‰αž‡αžΈαžœαž·αžαžšαž”αžŸαŸ‹αž…αž„αŸ’αž€αŸ„αž˜αžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αž‘αŸαŸ”

αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž€αž˜αŸ’αž˜

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

  1. αž˜αžΆαž“αž€αžΆαžšαž…αž»αŸ‡αž”αž‰αŸ’αž‡αžΈαž―αž€αž‡αž“ (ឧ. αž‘αžΆαž˜αž‘αžΆαžšαž€αžΆαžšαž…αžΌαž›) αžŠαŸ‚αž›αž˜αžΆαž“αžšαžΌαž”αž—αžΆαž–αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαŸ” αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαž“αŸ’αž˜αžαŸ‹αžαžΆαž•αžαž“αžΈαž˜αž½αž™αŸ—αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž’αžΆαžαŸŒαž€αŸ†αž”αžΆαŸ†αž„αž–αž·αžŸαŸαžŸαžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž˜αžΆαž“αž€αžΆαžšαž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αž—αžΆαž–αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž“αŸ…αž€αŸ’αž“αž»αž„αž”αž‰αŸ’αž‡αžΈαžˆαŸ’αž˜αŸ„αŸ‡αŸ” αž—αžΆαžšαž€αž·αž…αŸ’αž…αžšαž”αžŸαŸ‹αž™αžΎαž„αž‚αžΊαžŠαžΎαž˜αŸ’αž”αžΈαž’αžΆαž“αžΆαžαžΆαž’αžΆαžαŸŒαž€αŸ†αž”αžΆαŸ†αž„αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αžƒαžΎαž‰αž“αŸ…αž€αŸ’αž“αž»αž„ namespace αžŠαžΌαž…αŸ’αž“αŸαŸ‡ pods αž’αžΆαž…αž‘αžΆαž‰αž™αž€αžšαžΌαž”αž—αžΆαž–αŸ” αžœαžΆαž’αžΆαž…αž˜αžΆαž“αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αžΆαž…αŸ’αžšαžΎαž“ (αžŠαŸ‚αž›αž“αžΈαž˜αž½αž™αŸ—αžαŸ’αžšαžΌαžœαž€αžΆαžšαž’αžΆαžαŸŒαž€αŸ†αž”αžΆαŸ†αž„) αž αžΎαž™αžœαžΆαž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αž’αžΆαžαŸŒαž€αŸ†αž”αžΆαŸ†αž„αžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„αž‡αžΆαž‘αŸ€αž„αž‘αžΆαžαŸ‹ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž‡αž˜αŸ’αžšαžΎαžŸαž“αŸƒαž€αžΆαžšαžŠαžΆαž€αŸ‹αž’αžΆαžαŸŒαž€αŸ†αž”αžΆαŸ†αž„αžŠαŸ„αž™αžŠαŸƒαžαŸ’αžšαžΌαžœαž”αžΆαž“αž›αž»αž”αž…αŸ„αž›αŸ” αž“αŸαŸ‡αž‡αžΆαž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ‚αž›αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαž˜αž€αž‡αž½αž™αžŸαž„αŸ’αž‚αŸ’αžšαŸ„αŸ‡αŸ– αž™αžΎαž„αž”αž„αŸ’αž€αžΎαžαž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆαžŠαŸ‚αž›αž“αžΉαž„αžšαž„αŸ‹αž…αžΆαŸ†αž±αŸ’αž™αž…αž“αŸ’αž›αŸ„αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αž›αŸαž…αž‘αžΎαž„ αž αžΎαž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαž“αŸαŸ‡αž“αžΉαž„αž”αž“αŸ’αžαŸ‚αž˜αž’αžΆαžαŸŒαž€αŸ†αž”αžΆαŸ†αž„αž‘αŸ…αž…αž“αŸ’αž›αŸ„αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αŸ”
  2. αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž…αžΌαž›αž”αŸ’αžšαžΎαž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αž–αžΈ pods αž‘αŸ…αž’αŸŠαžΈαž“αž’αžΊαžŽαž·αžαžαŸ’αžšαžΌαžœαž”αžΆαž“αž αžΆαž˜αžƒαžΆαžαŸ‹αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž–αŸαž›αžαŸ’αž›αŸ‡αžœαžΆαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αžΆαž˜αž‘αžΆαžšαŸ– αžœαžΆαž‡αžΆαž‘αžΌαž‡αžΈαžαž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž™αž“αŸ’αžαž€αžΆαžšαž’αž“αž»αž‰αŸ’αž‰αžΆαžαž€αžΆαžšαž…αžΌαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž™αŸ‰αžΆαž„αžŸαžΆαž˜αž‰αŸ’αž‰ αžŠαŸ„αž™αž˜αž·αž“αžαž˜αŸ’αžšαžΌαžœαž±αŸ’αž™αž˜αžΆαž“αž‡αŸ†αž“αžΆαž‰αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹ αž§αž‘αžΆαž αžšαžŽαŸαžŠαŸ„αž™αžœαžαŸ’αžαž˜αžΆαž“αž“αŸƒαžŸαŸ’αž›αžΆαž€αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ namespace αŸ” αžαžΎαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαž’αžΆαž…αž‡αž½αž™αž™αžΎαž„αž“αŸ…αž‘αžΈαž“αŸαŸ‡αžŠαŸ„αž™αžšαž”αŸ€αž”αžŽαžΆ? αž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžŠαŸ‚αž›αžšαž„αŸ‹αž…αžΆαŸ†αž±αŸ’αž™αžŸαŸ’αž›αžΆαž€αž”αž„αŸ’αž αžΆαž‰αž“αŸ…αž€αŸ’αž“αž»αž„ namespace αž“αž·αž„αž”αž“αŸ’αžαŸ‚αž˜αž‚αŸ„αž›αž€αžΆαžšαžŽαŸαžŸαž˜αžšαž˜αŸ’αž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎαž’αŸŠαžΈαž“αž’αžΊαžŽαž·αžαŸ”
  3. αžŸαŸ’αžαžΆαž“αž—αžΆαž–αžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαŸ– αž§αž”αž˜αžΆαžαžΆαž™αžΎαž„αžαŸ’αžšαžΌαžœαž”αž“αŸ’αžαŸ‚αž˜αž’αŸ’αžœαžΈαž˜αž½αž™ αžŸαŸ’αž’αž»αž™αžšαž›αž½αž™αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžœαžΆαž˜αžΆαž“αžŸαŸ’αž›αžΆαž€αžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆ (αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž”αŸ’αžšαž—αŸαž‘αž˜αž½αž™αž…αŸ†αž“αž½αž“αž“αŸƒαž”αž»αž–αŸ’αžœαž”αž‘)αŸ” αžŸαž€αž˜αŸ’αž˜αž—αžΆαž–αž‡αžΆαž˜αž½αž™αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαž‚αžΊαž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„...

αž“αŸ…αž€αŸ’αž“αž»αž„αž…αž„αŸ’αž€αŸ„αž˜αžŽαžΆαž˜αž½αž™ αž€αž·αž…αŸ’αž…αž€αžΆαžšαž‘αž˜αŸ’αž›αžΆαž”αŸ‹αžαŸ’αžšαžΌαžœαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™ αž“αž·αž„ αžŸαž·αž‘αŸ’αž’αž· αž“αŸαŸ‡αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαžŠαŸ„αž™αž”αŸ’αžšαžΎαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαŸ”

αžŸαžšαž»αž”αž˜αž€αžšαžΏαž„αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž›αž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆ αž™αžΎαž„αž”αžΆαž“αžŸαž“αŸ’αž“αž·αžŠαŸ’αž‹αžΆαž“αžαžΆ αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž„αžΆαžšαž”αŸ’αžšαž€αž”αžŠαŸ„αž™αž•αžΆαžŸαž»αž€αž—αžΆαž–αž“αŸ…αž€αŸ’αž“αž»αž„ Kubernetes αžŠαŸ‚αž›αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž€αžΆαžš: αž€) αžŠαŸ†αž‘αžΎαž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž“αŸ’αžαŸ‚αž˜, ខ) αž’αž—αž·αžœαžŒαŸ’αžαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš (αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž€αž·αž…αŸ’αž…αž€αžΆαžšαžšαžŠαŸ’αž‹αž”αžΆαž›αž”αŸ’αžšαž…αžΆαŸ†αžαŸ’αž„αŸƒ)αŸ”

αžαžΎαž’αŸ’αžœαžΎαžŠαžΌαž…αž˜αŸ’αžαŸαž…αžŠαžΎαž˜αŸ’αž”αžΈαžŸαžšαžŸαŸαžšαžŸαŸαž…αž€αŸ’αžαžΈαžαŸ’αž›αŸ‚αž„αž€αžΆαžšαžŽαŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Kubernetes?

αž‡αžΆαž‘αžΌαž‘αŸ…αž‚αŸ’αžšαŸ„αž„αž€αžΆαžšαžŽαŸαž‚αžΊαžŸαžΆαž˜αž‰αŸ’αž‰:

αž€αžΆαžšαž–αž„αŸ’αžšαžΈαž€ αž“αž·αž„αž”αž“αŸ’αžαŸ‚αž˜ Kubernetes (αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαž‘αžΌαž‘αŸ… αž“αž·αž„αžœαžΈαžŠαŸαž’αžΌ)

... αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αžœαžΆαž”αŸ’αžšαŸ‚αžαžΆ:

  • Kubernetes API αž‚αžΊαž‡αžΆαžšαžΏαž„αž˜αž·αž“αžŸαŸ†αžαžΆαž“αŸ‹αžŠαŸ‚αž›αž…αŸ†αžŽαžΆαž™αž–αŸαž›αž…αŸ’αžšαžΎαž“αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž‡αžΆαž˜αŸ’αž…αžΆαžŸαŸ‹αŸ”
  • αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αŸαž˜αž·αž“αž˜αŸ‚αž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž˜αž“αž»αžŸαŸ’αžŸαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αž“αžΆαžŠαŸ‚αžš (αž—αžΆαžŸαžΆ Go αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž‡αžΆαž—αžΆαžŸαžΆαžŠαŸ‚αž›αž–αŸαž‰αž…αž·αžαŸ’αž αž–αžΈαž–αŸ’αžšαŸ„αŸ‡αžœαžΆαž˜αžΆαž“αž€αŸ’αžšαž”αžαŸαžŽαŸ’αžŒαž–αž·αžŸαŸαžŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαžΆ - αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš SDK);
  • αžŸαŸ’αžαžΆαž“αž—αžΆαž–αž‚αžΊαžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αŸ’αžšαž”αžαŸαžŽαŸ’αžŒαžαŸ’αž›αž½αž“αž―αž„αŸ”

αž”αž“αŸ’αž‘αžΆαžαŸ‹αžαžΆαž„αž€αŸ’αžšαŸ„αž˜: αžŠαžΎαž˜αŸ’αž”αžΈαžŸαžšαžŸαŸαžšαž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆ (αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš) αžαŸ’αžšαžΌαžœαžαŸ‚ αž…αŸ†αžŽαžΆαž™αž’αž“αž’αžΆαž“αžŸαŸ†αžαžΆαž“αŸ‹αŸ— αžŠαžΎαž˜αŸ’αž”αžΈαžŸαž·αž€αŸ’αžŸαžΆαžŸαž˜αŸ’αž—αžΆαžšαŸˆαŸ” αž“αŸαŸ‡αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαžΆαž”αŸ‹αž‡αžΆαžŸαž»αž…αžšαž·αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš "αž’αŸ†" - αž“αž·αž™αžΆαž™αžαžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ MySQL DBMS αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž™αžΎαž„αž…αž„αž…αžΆαŸ†αž§αž‘αžΆαž αžšαžŽαŸαžŠαŸ‚αž›αž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆαžαžΆαž„αž›αžΎ (αž›αžΆαžαžαŸ’αžšαžŠαžΆαž„αž’αžΆαžαŸŒαž€αŸ†αž”αžΆαŸ†αž„ αž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎαž”αžŽαŸ’αžαžΆαž‰αž’αŸŠαžΈαž“αž’αžΊαžŽαŸαž...) αžŠαŸ‚αž›αž™αžΎαž„αž€αŸαž…αž„αŸ‹αž’αŸ’αžœαžΎαž”αžΆαž“αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ αž“αŸ„αŸ‡αž™αžΎαž„αž“αžΉαž„αž™αž›αŸ‹αžαžΆ αž€αž·αž…αŸ’αž…αžαž·αžαžαŸ†αž”αŸ’αžšαžΉαž„αž”αŸ’αžšαŸ‚αž„αžŠαŸ‚αž›αž”αžΆαž“αž…αŸ†αžŽαžΆαž™αž“αžΉαž„αž›αžΎαžŸαž–αžΈαž›αž‘αŸ’αž’αž•αž›αžŠαŸ‚αž›αž™αžΎαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαž₯αž‘αžΌαžœαž“αŸαŸ‡αŸ–

αž€αžΆαžšαž–αž„αŸ’αžšαžΈαž€ αž“αž·αž„αž”αž“αŸ’αžαŸ‚αž˜ Kubernetes (αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαž‘αžΌαž‘αŸ… αž“αž·αž„αžœαžΈαžŠαŸαž’αžΌ)

αž‡αžΆαž‘αžΌαž‘αŸ… αžœαž·αž”αžαŸ’αžαž·αž€αžΎαžαž‘αžΎαž„αŸ– αž…αŸ†αžŽαžΆαž™αž’αž“αž’αžΆαž“αž…αŸ’αžšαžΎαž“ αž αžΎαž™αžŸαŸ’αžœαŸ‚αž„αžšαž€αž§αž”αž€αžšαžŽαŸαžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžŸαžšαžŸαŸαžšαžŸαŸαž…αž€αŸ’αžαžΈαžαŸ’αž›αŸ‚αž„αž€αžΆαžšαžŽαŸ αž¬αž’αŸ’αžœαžΎαžœαžΆαžαžΆαž˜αžšαž”αŸ€αž”αž…αžΆαžŸαŸ‹ (αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž›αžΏαž“)αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžœαžΆ - αžŠαžΎαž˜αŸ’αž”αžΈαžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αžΆαžšαžŸαž˜αŸ’αžšαž”αžŸαž˜αŸ’αžšαž½αž›αžšαžœαžΆαž„αž—αžΆαž–αžαŸ’αž›αžΆαŸ†αž„αž‘αžΆαŸ†αž„αž“αŸαŸ‡ - αž™αžΎαž„αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‚αž˜αŸ’αžšαŸ„αž„αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αž™αžΎαž„αŸ– αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαžŸαŸ‚αž› (αžŸαžΌαž˜αž˜αžΎαž›αžšαž”αžŸαŸ‹αž‚αžΆαžαŸ‹αž•αž„αžŠαŸ‚αžšαŸ” αžŸαŸαž…αž€αŸ’αžαžΈαž”αŸ’αžšαž€αžΆαžŸαžαŸ’αž˜αžΈαŸ—αž“αŸαŸ‡ αž“αŸ…αž›αžΎαž˜αž‡αŸ’αžˆαž˜αžŽαŸ’αžŒαž›).

αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαžŸαŸ‚αž›

αžαžΎαž‚αžΆαžαŸ‹αž’αŸ’αžœαžΎαž€αžΆαžšαž™αŸ‰αžΆαž„αžŠαžΌαž…αž˜αŸ’αžαŸαž…? αž…αž„αŸ’αž€αŸ„αž˜αž˜αžΆαž“αž•αžαžŠαŸ‚αž›αž˜αžΆαž“ Go binary αž‡αžΆαž˜αž½αž™ shell-operator αŸ” αž“αŸ…αž‡αžΆαž”αŸ‹αžœαžΆαž‚αžΊαž‡αžΆαžŸαŸ†αžŽαž»αŸ† αž‘αŸ†αž–αž€αŸ‹ (αž–αŸαžαŸŒαž˜αžΆαž“αž›αž˜αŸ’αž’αž·αžαž”αž“αŸ’αžαŸ‚αž˜αž’αŸ†αž–αžΈαž–αž½αž€αž‚αŸ - αžŸαžΌαž˜αž˜αžΎαž›αžαžΆαž„αž€αŸ’αžšαŸ„αž˜). αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαžŸαŸ‚αž›αžαŸ’αž›αž½αž“αž―αž„αž‡αžΆαžœαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹ αž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸ αž“αŸ…αž€αŸ’αž“αž»αž„ Kubernetes API αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αžœαžΆαž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αŸ†αž–αž€αŸ‹αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαŸ”

αžαžΎβ€‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšβ€‹αžŸαŸ‚αž›αž αŸ’αžœαžΈβ€‹αžŠαžΉαž„β€‹αžŠαŸ„αž™β€‹αžšαž”αŸ€αž”β€‹αžŽαžΆβ€‹αžŠαŸ‚αž›β€‹αž‘αŸ†αž–αž€αŸ‹β€‹αžαŸ’αžšαžΌαžœβ€‹αž αŸ…β€‹αž‘αŸ…β€‹αž›αžΎβ€‹αž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸβ€‹αž˜αž½αž™β€‹αžŽαžΆ? αž–αŸαžαŸŒαž˜αžΆαž“αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž‡αžΌαž“αž‘αŸ…αžŸαŸ‚αž›-αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαžŠαŸ„αž™αž‘αŸ†αž–αž€αŸ‹αžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„ αž αžΎαž™αž–αž½αž€αž‚αŸαž’αŸ’αžœαžΎαžœαžΆαž™αŸ‰αžΆαž„αžŸαžΆαž˜αž‰αŸ’αž‰αž”αŸ†αž•αž»αžαŸ”

αž‘αŸ†αž–αž€αŸ‹αž‚αžΊαž‡αžΆαžŸαŸ’αž‚αŸ’αžšαžΈαž” Bash αž¬αž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž’αžΆαž…αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž”αžΆαž“αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŠαŸ‚αž›αž‘αž‘αž½αž›αž™αž€αž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹αžαŸ‚αž˜αž½αž™ --config αž“αž·αž„αž†αŸ’αž›αžΎαž™αžαž”αž‡αžΆαž˜αž½αž™ JSON αŸ” αž€αŸ’αžšαŸ„αž™αž˜αž€αž‘αŸ€αžαž€αŸ†αžŽαžαŸ‹αžαžΆαžαžΎαžœαžαŸ’αžαž»αžŽαžΆαžŠαŸ‚αž›αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž…αŸ†αž–αŸ„αŸ‡αžœαžΆ αž αžΎαž™αž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαžŽαžΆαž˜αž½αž™ (αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαžαŸ’αžαž»αž‘αžΆαŸ†αž„αž“αŸαŸ‡) αž‚αž½αžšαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž†αŸ’αž›αžΎαž™αžαž”αž‘αŸ…αŸ–

αž€αžΆαžšαž–αž„αŸ’αžšαžΈαž€ αž“αž·αž„αž”αž“αŸ’αžαŸ‚αž˜ Kubernetes (αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαž‘αžΌαž‘αŸ… αž“αž·αž„αžœαžΈαžŠαŸαž’αžΌ)

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

αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαŸ– 1. αžŸαžšαžŸαŸαžšαž‘αŸ†αž–αž€αŸ‹

αžŠαŸ†αž”αžΌαž„αž”αž„αŸ’αž’αžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž‘αŸ†αž–αž€αŸ‹αž™αžΎαž„αž“αžΉαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš --configαžŠαŸ„αž™αž”αž„αŸ’αž αžΆαž‰αžαžΆαž™αžΎαž„αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž›αžΎ namespaces αž αžΎαž™αž‡αžΆαž–αž·αžŸαŸαžŸαž‚αžΊαž–αŸαž›αž“αŸƒαž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαŸ–

[[ $1 == "--config" ]] ; then
  cat << EOF
{
  "onKubernetesEvent": [
    {
      "kind": "namespace",
      "event": ["add"]
    }
  ]
}
EOF
…

αžαžΎαžαž€αŸ’αž€αžœαž·αž‡αŸ’αž‡αžΆαž“αžΉαž„αž˜αžΎαž›αž‘αŸ…αžŠαžΌαž…αž’αŸ’αžœαžΈ? αž€αŸαžŸαžΆαž˜αž‰αŸ’αž‰αžŽαžΆαžŸαŸ‹αŸ–

…
else
  createdNamespace=$(jq -r '.[0].resourceName' $BINDING_CONTEXT_PATH)
  kubectl create -n ${createdNamespace} -f - << EOF
Kind: Secret
...
EOF
fi

αž‡αŸ†αž αžΆαž“β€‹αžŠαŸ†αž”αžΌαž„β€‹αž‚αžΊβ€‹αžαŸ’αžšαžΌαžœβ€‹αžšαž€β€‹αž±αŸ’αž™β€‹αžƒαžΎαž‰β€‹αžαžΆ namespace αž˜αž½αž™β€‹αžŽαžΆβ€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž”αž„αŸ’αž€αžΎαžβ€‹αž‘αžΎαž„ αž αžΎαž™β€‹αž‘αžΈαž–αžΈαžšβ€‹αž‚αžΊβ€‹αžαŸ’αžšαžΌαžœβ€‹αž”αž„αŸ’αž€αžΎαžβ€‹αžœαžΆβ€‹αžŠαŸ„αž™β€‹αž”αŸ’αžšαžΎ kubectl αž’αžΆαžαŸŒαž€αŸ†αž”αžΆαŸ†αž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž›αŸ†αž αžˆαŸ’αž˜αŸ„αŸ‡αž“αŸαŸ‡αŸ”

αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαŸ– 2. αž€αžΆαžšαž”αŸ’αžšαž˜αžΌαž›αž•αŸ’αžαž»αŸ†αžšαžΌαž”αž—αžΆαž–

αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž“αŸ…αžŸαž›αŸ‹αž‚αžΊαžαŸ’αžšαžΌαžœαž”αž‰αŸ’αž‡αžΌαž“αž‘αŸ†αž–αž€αŸ‹αžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αŸ…αžŸαŸ‚αž› - αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš - αžšαž”αŸ€αž”αž’αŸ’αžœαžΎαžœαžΆ? Shell-operator αžαŸ’αž›αž½αž“αžœαžΆαž˜αž€αž‡αžΆαžšαžΌαž”αž—αžΆαž– Docker αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž—αžΆαžšαž€αž·αž…αŸ’αž…αžšαž”αžŸαŸ‹αž™αžΎαž„αž‚αžΊαžαŸ’αžšαžΌαžœαž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ†αž–αž€αŸ‹αž‘αŸ…αžαžαž–αž·αžŸαŸαžŸαž“αŸ…αž€αŸ’αž“αž»αž„αžšαžΌαž”αž—αžΆαž–αž“αŸαŸ‡αŸ–

FROM flant/shell-operator:v1.0.0-beta.1
ADD my-handler.sh /hooks

αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž“αŸ…αžŸαž›αŸ‹αž‚αžΊαžαŸ’αžšαžΌαžœαž”αŸ’αžšαž˜αžΌαž›αž•αŸ’αžαž»αŸ†αžœαžΆαž αžΎαž™αžšαž»αž‰αžœαžΆαŸ–

$ docker build -t registry.example.com/my-operator:v1 .
$ docker push registry.example.com/my-operator:v1

αž€αžΆαžšαž”αŸ‰αŸ‡αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž‚αžΊαžαŸ’αžšαžΌαžœαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αžšαžΌαž”αž—αžΆαž–αž‘αŸ…αž€αžΆαž“αŸ‹αž…αž„αŸ’αž€αŸ„αž˜αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαžŠαžΌαž…αž“αŸαŸ‡αžŸαžΌαž˜αžŸαžšαžŸαŸαžš αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: my-operator
spec:
  template:
    spec:
      containers:
      - name: my-operator
        image: registry.example.com/my-operator:v1 # 1
      serviceAccountName: my-operator              # 2

αž˜αžΆαž“αž…αŸ†αžŽαž»αž…αž–αžΈαžšαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž™αž€αž…αž·αžαŸ’αžαž‘αž»αž€αžŠαžΆαž€αŸ‹αŸ–

  1. αž€αžΆαžšαž…αž„αŸ’αž’αž»αž›αž”αž„αŸ’αž αžΆαž‰αž“αŸƒαžšαžΌαž”αž—αžΆαž–αžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαžαŸ’αž˜αžΈ;
  2. αž“αŸαŸ‡αž‚αžΊαž‡αžΆαžŸαž˜αžΆαžŸαž’αžΆαžαž»αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžŠαŸ‚αž› (αž™αŸ‰αžΆαž„αžαž·αž…) αžαŸ’αžšαžΌαžœαž€αžΆαžšαžŸαž·αž‘αŸ’αž’αž·αž€αŸ’αž“αž»αž„αž€αžΆαžšαž‡αžΆαžœαž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαž“αŸ…αž€αŸ’αž“αž»αž„ Kubernetes αž“αž·αž„αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ‚αž„αž…αŸ‚αž€αž€αžΆαžšαžŸαž˜αŸ’αž„αžΆαžαŸ‹αž‘αŸ…αž€αžΆαž“αŸ‹ namespaces αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž™αžΎαž„αž”αž„αŸ’αž€αžΎαž ServiceAccount (αž“αž·αž„αžŸαŸ†αžŽαž»αŸ†αž“αŸƒαž…αŸ’αž”αžΆαž”αŸ‹) αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‘αŸ†αž–αž€αŸ‹αŸ”

αž›αž‘αŸ’αž’αž•αž› - αž™αžΎαž„αž”αžΆαž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆαžšαž”αžŸαŸ‹αž™αžΎαž„αŸ” αžŸαžΆαž…αŸ‹αž‰αžΆαžαž· αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Kubernetes αžαžΆαž˜αžšαž”αŸ€αž”αžŠαŸ‚αž›αž”αž„αŸ’αž€αžΎαžαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αŸ†αž”αŸ‚αž€αž’αžΆαžαŸŒαž€αŸ†αž”αžΆαŸ†αž„αŸ”

αž˜αž»αžαž„αžΆαžšαžŸαŸ‚αž›-αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ”

αžŠαžΎαž˜αŸ’αž”αžΈαž€αŸ†αžŽαžαŸ‹αžœαžαŸ’αžαž»αž“αŸƒαž”αŸ’αžšαž—αŸαž‘αžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αžΆαž“αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαžŠαŸ‚αž›αž‘αŸ†αž–αž€αŸ‹αž“αžΉαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‡αžΆαž˜αž½αž™, αž–αž½αž€αž‚αŸαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αžαŸ’αžšαž„αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαžŠαŸ„αž™αž™αŸ„αž„αž‘αŸ…αžαžΆαž˜αžŸαŸ’αž›αžΆαž€αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹ (αž¬αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ matchExpressions):

"onKubernetesEvent": [
  {
    "selector": {
      "matchLabels": {
        "foo": "bar",
       },
       "matchExpressions": [
         {
           "key": "allow",
           "operation": "In",
           "values": ["wan", "warehouse"],
         },
       ],
     }
     …
  }
]

αž”αžΆαž“αž•αŸ’αžαž›αŸ‹ αž™αž“αŸ’αžαž€αžΆαžšαž•αŸ’αžαžΆαž…αŸ‹αž˜αž»αžαžŠαŸ‚αž› - αžŠαŸ„αž™αž”αŸ’αžšαžΎαžαž˜αŸ’αžšαž„ jq - αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž”αŸ†αž›αŸ‚αž„αžœαžαŸ’αžαž» JSON αž’αŸ†αž‘αŸ…αž‡αžΆαžœαžαŸ’αžαž»αžαžΌαž…αŸ—αžŠαŸ‚αž›αž˜αžΆαž“αžαŸ‚αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž‘αžΆαŸ†αž„αž“αŸ„αŸ‡αžŠαŸ‚αž›αž“αŸ…αžŸαž›αŸ‹αžŠαŸ‚αž›αž™αžΎαž„αž…αž„αŸ‹αžαžΆαž˜αžŠαžΆαž“αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαŸ”

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

αž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαžŠαŸ‚αž›αž€αŸαŸ‡αž‘αŸ†αž–αž€αŸ‹αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž…αŸ†αž–αŸ„αŸ‡αž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸ Kubernetes αž‘αŸαŸ– αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαžŸαŸ‚αž›αž•αŸ’αžαž›αŸ‹αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ αž αŸ…αž‘αŸ†αž–αž€αŸ‹αžαžΆαž˜αž–αŸαž›αžœαŸαž›αžΆ (αžŸαŸ’αžšαžŠαŸ€αž„αž‘αŸ…αž“αžΉαž„ crontab αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αŸ†αžŽαžαŸ‹αž–αŸαž›αž”αŸ’αžšαž–αŸƒαžŽαžΈ) αž€αŸαžŠαžΌαž…αž‡αžΆαž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαž–αž·αžŸαŸαžŸαž˜αž½αž™αŸ” αž–αŸαž›αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜. αž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸαŸ‡αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž…αžΌαž›αž‚αŸ’αž“αžΆ αž“αž·αž„αž€αŸ†αžŽαžαŸ‹αž‘αŸ…αž‘αŸ†αž–αž€αŸ‹αžŠαžΌαž…αž‚αŸ’αž“αžΆαŸ”

αž“αž·αž„αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαž–αžΈαžšαž‘αŸ€αžαžšαž”αžŸαŸ‹αžŸαŸ‚αž›-αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαŸ–

  1. αžœαžΆβ€‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž’αžŸαž˜αž€αžΆαž›. αž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈαž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸ Kubernetes (αžŠαžΌαž…αž‡αžΆαžœαžαŸ’αžαž»αžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαž) αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αž‘αž½αž› αž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαž•αŸ’αžŸαŸαž„αž‘αŸ€αž (αžŠαžΌαž…αž‡αžΆαžœαžαŸ’αžαž»αžŠαžΌαž…αž‚αŸ’αž“αžΆαžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž›αž»αž”) αž’αžΆαž…αž€αžΎαžαž‘αžΎαž„αž“αŸ…αž€αŸ’αž“αž»αž„αž…αž„αŸ’αž€αŸ„αž˜ αž αžΎαž™αž‘αŸ†αž–αž€αŸ‹αžαŸ’αžšαžΌαžœαž‘αž‘αž½αž›αžαž»αžŸαžαŸ’αžšαžΌαžœαž…αŸ†αž–αŸ„αŸ‡αž”αž‰αŸ’αž αžΆαž“αŸαŸ‡αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž‘αŸ†αž–αž€αŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αžŠαŸ„αž™αž˜αžΆαž“αž€αŸ†αž αž»αžŸ αž“αŸ„αŸ‡αžαžΆαž˜αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αžœαžΆαž“αžΉαž„αž˜αžΆαž“ αž αŸ…αž˜αŸ’αžαž„αž‘αŸ€αž αžšαž αžΌαžαžŠαž›αŸ‹αž€αžΆαžšαž”αž‰αŸ’αž…αž”αŸ‹αžŠαŸ„αž™αž‡αŸ„αž‚αž‡αŸαž™ (αž₯αžšαž·αž™αžΆαž”αžαž“αŸαŸ‡αž’αžΆαž…αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž”αžΆαž“)αŸ”
  2. αžœαžΆαž“αžΆαŸ†αž…αŸαž‰ αž˜αŸ‰αŸ‚αžαŸ’αžš αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Prometheus αžŠαŸ‚αž›αž’αŸ’αž“αž€αž’αžΆαž…αž™αž›αŸ‹αžαžΆαžαžΎ shell-operator αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž¬αž’αžαŸ‹ αžŸαŸ’αžœαŸ‚αž„αž™αž›αŸ‹αž–αžΈαž…αŸ†αž“αž½αž“αž€αŸ†αž αž»αžŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‘αŸ†αž–αž€αŸ‹αž“αžΈαž˜αž½αž™αŸ— αž“αž·αž„αž‘αŸ†αž αŸ†αž‡αž½αžšαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αŸ”

αžŠαžΎαž˜αŸ’αž”αžΈαžŸαž„αŸ’αžαŸαž”αž•αŸ’αž“αŸ‚αž€αž“αŸƒαžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαž“αŸαŸ‡αŸ–

αž€αžΆαžšαž–αž„αŸ’αžšαžΈαž€ αž“αž·αž„αž”αž“αŸ’αžαŸ‚αž˜ Kubernetes (αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαž‘αžΌαž‘αŸ… αž“αž·αž„αžœαžΈαžŠαŸαž’αžΌ)

αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž“αŸ’αžαŸ‚αž˜

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

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

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

αž€αžΆαžšαž–αž„αŸ’αžšαžΈαž€ αž“αž·αž„αž”αž“αŸ’αžαŸ‚αž˜ Kubernetes (αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαž‘αžΌαž‘αŸ… αž“αž·αž„αžœαžΈαžŠαŸαž’αžΌ)

αžŠαžΎαž˜αŸ’αž”αžΈβ€‹αžŠαžΆαž€αŸ‹β€‹αž’αŸ’αžœαžΈβ€‹αž‚αŸ’αžšαž”αŸ‹β€‹αž™αŸ‰αžΆαž„β€‹αžαžΆαž˜β€‹αž›αŸ†αžŠαžΆαž”αŸ‹ αž™αžΎαž„β€‹αž…αžΆαž”αŸ‹β€‹αž•αŸ’αžŠαžΎαž˜β€‹αžŠαŸ„αž™β€‹αžŸαŸ’αž‚αŸ’αžšαžΈαž” (install-ingress.sh) αžŠαŸ‚αž›αž”αžΆαž“αž™αž€αž‡αžΆαž’αŸ†αžŽαŸ‡αž’αŸ†αžŽαžΆαž„αž“αŸƒαž”αŸ’αžšαž—αŸαž‘αž“αŸƒαž…αž„αŸ’αž€αŸ„αž˜αžŠαŸ‚αž›αž™αžΎαž„αž“αžΉαž„αžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™ αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ YAML αž…αžΆαŸ†αž”αžΆαž…αŸ‹ αž αžΎαž™αž”αžΆαž“αž”αž‰αŸ’αž‡αžΌαž“αžœαžΆαž‘αŸ… Kubernetes αŸ”

αžŸαžšαž»αž”αž˜αž€ αž˜αžΆαž‚αŸŒαžΆαž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αžαžšαž”αžŸαŸ‹αž™αžΎαž„ αž“αž·αž„αž αŸαžαž»αž•αž›αžŠαŸ‚αž›αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αžœαžΆαž˜αžΆαž“αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

  • αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ YAML αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž‚αŸ†αžšαžΌαž‚αžΊαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αžΆαž˜αž‘αžΆαžš (αž“αŸ…αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αžŠαŸ†αž”αžΌαž„αž“αŸαŸ‡αž‚αžΊαžŸαžΆαž˜αž‰αŸ’αž‰ sed);
  • αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž€αžΎαž“αž‘αžΎαž„αž“αŸƒαž…αŸ†αž“αž½αž“αž…αž„αŸ’αž€αŸ„αž˜ αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž”αžΆαž“αž˜αž€ (αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŠαŸ†αž”αžΌαž„αž”αŸ†αž•αž»αžαž‚αžΊαžαŸ’αžšαžΌαžœαžŠαžΆαž€αŸ‹αžŸαŸ’αž‚αŸ’αžšαžΈαž”αž“αŸ…αž€αŸ’αž“αž»αž„ Git αž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αžœαžΆαžŠαŸ„αž™αž”αŸ’αžšαžΎ cron αž αžΎαž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžœαžΆ);
  • αžŸαŸ’αž‚αŸ’αžšαžΈαž”αžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αžΆαž˜αž‘αžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Prometheus (install-prometheus.sh) αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αžœαžΆαž‚αž½αžšαž±αŸ’αž™αž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž–αž·αžαžŠαŸ‚αž›αžαžΆαžœαžΆαžαŸ’αžšαžΌαžœαž€αžΆαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™αž”αž‰αŸ’αž…αžΌαž›αž…αŸ’αžšαžΎαž“ αž€αŸαžŠαžΌαž…αž‡αžΆαž€αžΆαžšαž•αŸ’αž‘αž»αž€αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸ (αžαžΆαž˜αžšαž”αŸ€αž”αžŠαŸαž›αŸ’αž’ - αž€αžŽαŸ’αžαžΆαž› αž“αž·αž„αž“αŸ…αž€αŸ’αž“αž»αž„αž…αž„αŸ’αž€αŸ„αž˜) αž αžΎαž™αž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αž½αž™αž…αŸ†αž“αž½αž“ (αž–αžΆαž€αŸ’αž™αžŸαž˜αŸ’αž„αžΆαžαŸ‹) αž’αžΆαž…αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·:

    αž€αžΆαžšαž–αž„αŸ’αžšαžΈαž€ αž“αž·αž„αž”αž“αŸ’αžαŸ‚αž˜ Kubernetes (αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαž‘αžΌαž‘αŸ… αž“αž·αž„αžœαžΈαžŠαŸαž’αžΌ)

  • αž αžΆαž“αž·αž—αŸαž™αž“αŸƒαž€αžΆαžšαžŠαžΆαž€αŸ‹αž…αŸαž‰αž“αžΌαžœαž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαž»αžŸαž…αŸ†αž–αŸ„αŸ‡αž€αžΆαžšαž€αžΎαž“αž‘αžΎαž„αž“αŸƒαž…αŸ†αž“αž½αž“αž…αž„αŸ’αž€αŸ„αž˜αž€αŸ†αž–αž»αž„αž€αžΎαž“αž‘αžΎαž„αž₯αžαžˆαž”αŸ‹αžˆαžš αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž™αžΎαž„αžŠαžΉαž„αžαžΆαž’αŸ’αž“αž€αžŠαŸ†αž‘αžΎαž„ (ឧ. αžŸαŸ’αž‚αŸ’αžšαžΈαž”αž–αžΈαžšαŸ– αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Ingress αž“αž·αž„ Prometheus) αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αž‚αžΊαžαŸ’αžšαžΌαžœαž€αžΆαžšαž‡αžΆαž…αžΆαŸ†αž”αžΆαž…αŸ‹ (αžŸαžΆαžαžΆαž‡αžΆαž…αŸ’αžšαžΎαž“αž“αŸ…αž€αŸ’αž“αž»αž„ Git, crons αž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αž–αž½αž€αžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆ: αž…αž„αŸ’αž€αŸ„αž˜αžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸ’αžαŸαžšαž—αžΆαž– αž¬αžŸαžΆαž€αž›αŸ’αž”αž„);
  • с kubectl apply αžœαžΆαž”αžΆαž“αž€αŸ’αž›αžΆαž™αž‘αŸ…αž‡αžΆαž€αžΆαžšαž›αŸ†αž”αžΆαž€αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž–αŸ’αžšαŸ„αŸ‡αžœαžΆαž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž€αžΆαžšαž”αŸ’αžšαž€αžΆαžŸ αž“αž·αž„αž’αžΆαž…αž”αž„αŸ’αž€αžΎαžαž”αžΆαž“αžαŸ‚αžœαžαŸ’αžαž»αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αž·αž“αž’αŸ’αžœαžΎαž€αžΆαžšαžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαž›αžΎαžŸαŸ’αžαžΆαž“αž—αžΆαž–/αž›αž»αž”αž–αž½αž€αžœαžΆαŸ”
  • αž™αžΎαž„αž”αžΆαžαŸ‹αž˜αž»αžαž„αžΆαžšαž˜αž½αž™αž…αŸ†αž“αž½αž“αžŠαŸ‚αž›αž™αžΎαž„αž˜αž·αž“αž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž“αŸ…αž–αŸαž›αž“αŸ„αŸ‡αŸ–
    • αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž–αŸαž‰αž›αŸαž‰αž›αžΎαž›αž‘αŸ’αž’αž•αž›αž“αŸƒαž€αžΆαžšαž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αž…αž„αŸ’αž€αŸ„αž˜,
    • αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž“αŸƒαž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž˜αž½αž™αž…αŸ†αž“αž½αž“ (αž”αž‰αŸ’αž…αžΌαž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαŸ’αž‚αŸ’αžšαžΈαž”αžŠαŸ†αž‘αžΎαž„) αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αž’αžΆαž…αž‘αž‘αž½αž›αž”αžΆαž“αž–αžΈαž…αž„αŸ’αž€αŸ„αž˜ (αž€αžΆαžšαžšαž€αžƒαžΎαž‰)
    • αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž‘αžΌαž‡αžΈαžαž›αžšαž”αžŸαŸ‹αžœαžΆαž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹αž“αŸƒαž€αžΆαžšαžšαž€αžƒαžΎαž‰αž‡αžΆαž”αž“αŸ’αžαž”αž“αŸ’αž‘αžΆαž”αŸ‹αŸ”

αž™αžΎαž„αž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαžŠαŸ‚αž›αž”αŸ’αžšαž˜αžΌαž›αž”αžΆαž“αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸαŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ’αžšαž”αžαŸαžŽαŸ’αžŒαž“αŸƒαž‚αž˜αŸ’αžšαŸ„αž„αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžšαž”αžŸαŸ‹αž™αžΎαž„ - addon-operator.

Addon-αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš

αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž’αŸ‚αž€αž›αžΎ shell-operator αžŠαŸ‚αž›αž”αžΆαž“αžšαŸ€αž”αžšαžΆαž”αŸ‹αžšαž½αž…αž αžΎαž™αŸ” αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‘αžΆαŸ†αž„αž˜αžΌαž›αž˜αžΎαž›αž‘αŸ…αžŠαžΌαž…αž“αŸαŸ‡αŸ–

αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ…αž‘αŸ†αž–αž€αŸ‹αžŸαŸ‚αž›-αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαŸ–

  • αž€αžΆαžšαž•αŸ’αž‘αž»αž€αžαž˜αŸ’αž›αŸƒ,
  • αž‚αŸ†αž“αžΌαžŸαžαžΆαž„αž˜αž½αž€αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–,
  • αžŸαž˜αžΆαžŸαž—αžΆαž‚αž“αŸ„αŸ‡αŸ” αžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž αžΆαž„αžαž˜αŸ’αž›αŸƒ αž αžΎαž™ - αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž˜αžΆαž“αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžŽαžΆαž˜αž½αž™ - αžŸαž»αŸ†αž±αŸ’αž™ Helm αžšαž˜αŸ€αž›αžαžΆαžšαžΆαž„αž‘αžΎαž„αžœαž·αž‰αŸ”

αž€αžΆαžšαž–αž„αŸ’αžšαžΈαž€ αž“αž·αž„αž”αž“αŸ’αžαŸ‚αž˜ Kubernetes (αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαž‘αžΌαž‘αŸ… αž“αž·αž„αžœαžΈαžŠαŸαž’αžΌ)

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

αž€αžΆαžšαž–αž„αŸ’αžšαžΈαž€ αž“αž·αž„αž”αž“αŸ’αžαŸ‚αž˜ Kubernetes (αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαž‘αžΌαž‘αŸ… αž“αž·αž„αžœαžΈαžŠαŸαž’αžΌ)

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

αž₯αž‘αžΌαžœαž“αŸαŸ‡ αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž˜αžΆαž“αž’αŸ’αžœαžΈαž˜αž½αž™αž€αžΎαžαž‘αžΎαž„αž“αŸ…αž€αŸ’αž“αž»αž„ Kubernetes αž™αžΎαž„αž’αžΆαž…αž”αŸ’αžšαžαž·αž€αž˜αŸ’αž˜αž…αŸ†αž–αŸ„αŸ‡αžœαžΆαžŠαŸ„αž™αž”αŸ’αžšαžΎαž‘αŸ†αž–αž€αŸ‹αžŸαž€αž› αž αžΎαž™αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž’αŸ’αžœαžΈαž˜αž½αž™αž“αŸ…αž€αŸ’αž“αž»αž„αž αžΆαž„αžŸαž€αž›αŸ” αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž“αŸαŸ‡αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹ αž αžΎαž™αž“αžΉαž„αž’αŸ’αžœαžΎαž±αŸ’αž™αž˜αŸ‰αžΌαžŒαž»αž›αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž…αž„αŸ’αž€αŸ„αž˜αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαžΆαž€αŸ‹αž±αŸ’αž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ–

αž€αžΆαžšαž–αž„αŸ’αžšαžΈαž€ αž“αž·αž„αž”αž“αŸ’αžαŸ‚αž˜ Kubernetes (αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαž‘αžΌαž‘αŸ… αž“αž·αž„αžœαžΈαžŠαŸαž’αžΌ)

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

  • Helm αž˜αžΆαž“αž‘αŸ†αž“αž½αž›αžαž»αžŸαžαŸ’αžšαžΌαžœαž…αŸ†αž–αŸ„αŸ‡αž‚αŸ†αžšαžΌ αž“αž·αž„αž€αžΆαžšαž”αŸ’αžšαž€αžΆαžŸαŸ”
  • αž”αž‰αŸ’αž αžΆαž“αŸƒαž€αžΆαžšαž’αžΆαž”αŸ‹αžŠαŸαžαžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŠαŸ„αž™αž”αŸ’αžšαžΎαž‘αŸ†αž–αž€αŸ‹αžŸαžΆαž€αž› αžŠαŸ‚αž›αž…αžΌαž›αž‘αŸ…αž”αž‰αŸ’αž‡αžΈαžˆαŸ’αž˜αŸ„αŸ‡αžαžΆαž˜αž€αžΆαž›αžœαž·αž—αžΆαž‚ αž αžΎαž™αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžœαžΆαžƒαžΎαž‰αžšαžΌαž”αž—αžΆαž–αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžαŸ’αž˜αžΈαž“αŸ…αž‘αžΈαž“αŸ„αŸ‡ αžšαž˜αŸ€αž›αžœαžΆαž…αŸαž‰ (ឧ. "αžαŸ’αž›αž½αž“αžœαžΆ")αŸ”
  • αž€αžΆαžšαžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž…αž„αŸ’αž€αŸ„αž˜αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαžŠαŸ„αž™αž”αŸ’αžšαžΎ ConfigMapαžŠαŸ‚αž›αž˜αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž…αž˜αŸ’αž”αž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž•αŸ’αž‘αž»αž€ (αž“αŸ…αž–αŸαž›αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž–αž½αž€αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž‘αž»αž€αž‘αŸ…αž€αŸ’αž“αž»αž„αž€αž“αŸ’αž›αŸ‚αž„αž•αŸ’αž‘αž»αž€)αŸ”
  • αž”αž‰αŸ’αž αžΆαž‡αžΆαž˜αž½αž™αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž–αžΆαž€αŸ’αž™αžŸαž˜αŸ’αž„αžΆαžαŸ‹ αž€αžΆαžšαžšαž€αžƒαžΎαž‰ αž“αž·αž„αž€αžΆαžšαžšαž€αžƒαžΎαž‰αž‡αžΆαž”αž“αŸ’αžαž”αž“αŸ’αž‘αžΆαž”αŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŠαŸ„αž™αž”αŸ’αžšαžΎαž‘αŸ†αž–αž€αŸ‹αŸ”
  • αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αžŠαŸ„αž™αž’αžšαž‚αž»αžŽαž…αŸ†αž–αŸ„αŸ‡αžŸαŸ’αž›αžΆαž€αžŠαŸ‚αž› Docker αž‚αžΆαŸ†αž‘αŸ’αžšαž…αŸαž‰αž–αžΈαž”αŸ’αžšαž’αž”αŸ‹αŸ”
  • αž›αž‘αŸ’αž’αž•αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αžŠαŸ„αž™αž”αŸ’αžšαžΎαž˜αŸ‰αŸ‚αžαŸ’αžšαžŠαŸ‚αž›αž™αžΎαž„αž’αžΆαž…αž™αž›αŸ‹αž–αžΈαžŸαŸ’αžαžΆαž“αž—αžΆαž–αŸ”

αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‘αžΆαŸ†αž„αž˜αžΌαž›αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž‡αžΆαž‘αž˜αŸ’αžšαž„αŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‚αŸ„αž›αž–αžΈαžšαžαŸ‚αž˜αž½αž™αž“αŸ…αž€αŸ’αž“αž»αž„ Go αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž αŸ…αžαžΆ addon-operator αŸ” αž“αŸαŸ‡αž’αŸ’αžœαžΎαž±αŸ’αž™αžŠαŸ’αž™αžΆαž€αŸ’αžšαžΆαž˜αž˜αžΎαž›αž‘αŸ…αžŸαžΆαž˜αž‰αŸ’αž‰αž‡αžΆαž„αž˜αž»αž“αŸ–

αž€αžΆαžšαž–αž„αŸ’αžšαžΈαž€ αž“αž·αž„αž”αž“αŸ’αžαŸ‚αž˜ Kubernetes (αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαž‘αžΌαž‘αŸ… αž“αž·αž„αžœαžΈαžŠαŸαž’αžΌ)

αžŸαž˜αžΆαžŸαž—αžΆαž‚αžŸαŸ†αžαžΆαž“αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αžŠαŸ’αž™αžΆαž€αŸ’αžšαžΆαž˜αž“αŸαŸ‡αž‚αžΊαž‡αžΆαžŸαŸ†αžŽαž»αŸ†αž“αŸƒαž˜αŸ‰αžΌαžŒαž»αž› (αž”αž“αŸ’αž›αž·αž…αž‡αžΆαž–αžŽαŸŒαž”αŸ’αžšαž•αŸαŸ‡αžαžΆαž„αž€αŸ’αžšαŸ„αž˜). αž₯αž‘αžΌαžœαž“αŸαŸ‡αž™αžΎαž„αž’αžΆαž…αžŸαžšαžŸαŸαžšαž˜αŸ‰αžΌαžŒαž»αž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž“αŸ’αžαŸ‚αž˜αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž€αžΆαžšαžŠαŸ„αž™αž˜αžΆαž“αž€αžΆαžšαžαž·αžαžαŸ†αž”αŸ’αžšαžΉαž„αž”αŸ’αžšαŸ‚αž„αžαž·αž…αžαž½αž… αž αžΎαž™αžαŸ’αžšαžΌαžœαž”αŸ’αžšαžΆαž€αžŠαžαžΆαžœαžΆαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ†αž‘αžΎαž„αž“αŸ…αž€αŸ’αž“αž»αž„αž…αž„αŸ’αž€αŸ„αž˜αž“αžΈαž˜αž½αž™αŸ— αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αžΆαž”αŸ‹αžŠαŸαž αž“αž·αž„αž†αŸ’αž›αžΎαž™αžαž”αž‘αŸ…αž“αžΉαž„αž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαžŠαŸ‚αž›αžœαžΆαžαŸ’αžšαžΌαžœαž€αžΆαžšαž“αŸ…αž€αŸ’αž“αž»αž„αž…αž„αŸ’αž€αŸ„αž˜αŸ”

"Flant" αž”αŸ’αžšαžΎ addon-operator αž“αŸ…αž›αžΎ 70+ αž…αž„αŸ’αž€αŸ„αž˜ Kubernetes αŸ” αžŸαŸ’αžαžΆαž“αž—αžΆαž–β€‹αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“ - αž€αŸ†αžŽαŸ‚αž’αžΆαž›αŸ‹αž αŸ’αžœαžΆ. αž₯αž‘αžΌαžœαž“αŸαŸ‡αž™αžΎαž„αž€αŸ†αž–αž»αž„αžšαŸ€αž”αž…αŸ†αž―αž€αžŸαžΆαžšαžŠαžΎαž˜αŸ’αž”αžΈαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž”αŸαžαžΆ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αŸαž›αž“αŸαŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„αžƒαŸ’αž›αžΆαŸ†αž„ αž§αž‘αžΆαž αžšαžŽαŸαžŠαŸ‚αž›αž˜αžΆαž“αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αžŠαŸ‚αž›αž’αŸ’αž“αž€αž’αžΆαž…αž”αž„αŸ’αž€αžΎαž addon αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ”

αžαžΎαžαŸ’αž‰αž»αŸ†αž’αžΆαž…αž‘αž‘αž½αž›αž”αžΆαž“αž˜αŸ‰αžΌαžŒαž»αž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ addon-operator αž“αŸ…αž―αžŽαžΆ? αž€αžΆαžšαž”αŸ„αŸ‡αž•αŸ’αžŸαžΆαž™αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžšαž”αžŸαŸ‹αž™αžΎαž„αž‚αžΊαž‡αžΆαžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αž”αž“αŸ’αž‘αžΆαž”αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž™αžΎαž„ αž™αžΎαž„αž˜αžΆαž“αž‚αž˜αŸ’αžšαŸ„αž„αž’αŸ’αžœαžΎαžœαžΆαž“αŸ…αžšαžŠαžΌαžœαž€αŸ’αžαŸ…αŸ”

វីដេធូ αž“αž·αž„αžŸαŸ’αž›αžΆαž™

αžœαžΈαžŠαŸαž’αžΌαž–αžΈαž€αžΆαžšαžŸαž˜αŸ’αžαŸ‚αž„ (~ៀ៧ αž“αžΆαž‘αžΈ)αŸ–

αž”αž‘αž”αž„αŸ’αž αžΆαž‰αž“αŸƒαžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαŸ–

PS

αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž“αŸ…αž›αžΎαž”αŸ’αž›αž€αŸ‹αžšαž”αžŸαŸ‹αž™αžΎαž„αŸ–

αž’αŸ’αž“αž€αž€αŸαž’αžΆαž…αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž›αžΎαž€αžΆαžšαž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

αž”αŸ’αžšαž—αž–: www.habr.com

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