αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ† Kubernetes CCM (Cloud Controller Manager) αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Yandex.Cloud

αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ† Kubernetes CCM (Cloud Controller Manager) αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Yandex.Cloud

αž”αž“αŸ’αžαž‘αŸ…αžαŸ’αž˜αžΈαŸ—αž“αŸαŸ‡ αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž‰αŸ’αž‡αžΆ CSI αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Yandex.Cloud αž™αžΎαž„αž€αŸ†αž–αž»αž„αž”αŸ„αŸ‡αž•αŸ’αžŸαžΆαž™αž‚αž˜αŸ’αžšαŸ„αž„αž”αŸ’αžšαž—αž–αž”αžΎαž€αž…αŸ†αž αž˜αž½αž™αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αž–αž€αž“αŸαŸ‡ - αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„ Cloud Controller. CCM αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αžΆαž˜αž‘αžΆαžšαž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ‚αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž…αž„αŸ’αž€αŸ„αž˜αž‘αžΆαŸ†αž„αž˜αžΌαž›αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž‰αŸ’αž‡αžΆ CSI αžαŸ’αž›αž½αž“αž―αž„αž•αž„αžŠαŸ‚αžšαŸ” αž–αŸαžαŸŒαž˜αžΆαž“αž›αž˜αŸ’αž’αž·αžαž’αŸ†αž–αžΈαž‚αŸ„αž›αž”αŸ†αžŽαž„αžšαž”αžŸαŸ‹αžœαžΆ αž“αž·αž„αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαž˜αž½αž™αž…αŸ†αž“αž½αž“αž“αŸƒαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž‚αžΊαžŸαŸ’αžαž·αžαž“αŸ…αž€αŸ’αžšαŸ„αž˜αž€αžΆαžšαž€αžΆαžαŸ‹αŸ”

αžŸαŸαž…αž€αŸ’αžαžΈαžŽαŸ‚αž“αžΆαŸ†

αž αŸαžαž»αž’αŸ’αžœαžΈαž”αžΆαž“αž‡αžΆαž“αŸαŸ‡?

αž€αžΆαžšαž‡αž˜αŸ’αžšαž»αž‰αžŠαŸ‚αž›αž‡αŸ†αžšαž»αž‰αž±αŸ’αž™αž™αžΎαž„αž’αž—αž·αžœαžŒαŸ’αž CCM αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Yandex.Cloud αž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„αžŸαŸ’αžšαž”αž‚αŸ’αž“αžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆαžšαž½αž…αž αžΎαž™αž“αŸ…αž€αŸ’αž“αž»αž„ αžŸαŸαž…αž€αŸ’αžαžΈαž”αŸ’αžšαž€αžΆαžŸ αž’αŸ’αž“αž€αž”αžΎαž€αž”αžš CSI αŸ” αž™αžΎαž„αžšαž€αŸ’αžŸαžΆαž”αžΆαž“αž“αžΌαžœαž…αž„αŸ’αž€αŸ„αž˜ Kubernetes αž‡αžΆαž…αŸ’αžšαžΎαž“αž–αžΈαž’αŸ’αž“αž€αž•αŸ’αžαž›αŸ‹αžŸαŸαžœαžΆαž–αž–αž€αž•αŸ’αžŸαŸαž„αŸ—αž‚αŸ’αž“αžΆ αžŠαŸ‚αž›αž™αžΎαž„αž”αŸ’αžšαžΎαž§αž”αž€αžšαžŽαŸαžαŸ‚αž˜αž½αž™αŸ” αžœαžΆαž’αž“αž»αžœαžαŸ’αžαž—αžΆαž–αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž‡αžΆαž…αŸ’αžšαžΎαž“ "αž†αŸ’αž›αž„αž€αžΆαžαŸ‹" αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŠαŸ‚αž›αž”αžΆαž“αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž•αŸ’αžαž›αŸ‹αžŸαŸαžœαžΆαž‘αžΆαŸ†αž„αž“αŸαŸ‡αŸ” αž”αžΆαž‘/αž…αžΆαžŸ αž™αžΎαž„αž˜αžΆαž“αž€αžšαžŽαžΈ αž“αž·αž„αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž˜αž½αž™ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αžΆαžšαžœαž·αžœαžŒαŸ’αžαžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž–αž½αž€αžœαžΆαž’αžΆαž…αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ”

តើ CCM αž‡αžΆαž’αŸ’αžœαžΈ?

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

αž‡αžΆαž–αž·αžŸαŸαžŸ Cloud Controller Manager αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αžŸαŸ†αžαžΆαž“αŸ‹αŸ—αž…αŸ†αž“αž½αž“αž”αŸ’αžšαžΆαŸ†αž”αŸ’αžšαž—αŸαž‘αŸ–

  1. αžœαžαŸ’αžαž» - αž’αž“αž»αžœαžαŸ’αžαž‘αŸ†αž“αžΆαž€αŸ‹αž‘αŸ†αž“αž„ 1: 1 αžšαžœαžΆαž„αžœαžαŸ’αžαž»αžαŸ’αž“αžΆαŸ†αž„αž“αŸ…αž€αŸ’αž“αž»αž„ Kubernetes (Node) αž“αž·αž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž˜αŸ’αž˜αž·αžαž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ’αžšαž»αž˜αž αŸŠαž»αž“αž•αŸ’αžαž›αŸ‹αžŸαŸαžœαžΆαž–αž–αž€αŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž“αŸαŸ‡αž™αžΎαž„:
    • αž”αŸ†αž–αŸαž‰αž€αŸ’αž“αž»αž„αžœαžΆαž› spec.providerID αž“αŸ…αž€αŸ’αž“αž»αž„αžœαžαŸ’αžαž» Node. αž§αž‘αžΆαž αžšαžŽαŸ αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ OpenStack CCM αžœαžΆαž›αž“αŸαŸ‡αž˜αžΆαž“αž‘αž˜αŸ’αžšαž„αŸ‹αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ– openstack:///d58a78bf-21b0-4682-9dc6-2132406d2bb0. αž’αŸ’αž“αž€αž’αžΆαž…αž˜αžΎαž›αžƒαžΎαž‰αžˆαŸ’αž˜αŸ„αŸ‡αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž•αŸ’αžαž›αŸ‹αžŸαŸαžœαžΆαž–αž–αž€ αž“αž·αž„ UUID αžαŸ‚αž˜αž½αž™αž‚αžαŸ‹αž“αŸƒαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ (αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž˜αŸ’αž˜αž·αžαž“αŸ…αž€αŸ’αž“αž»αž„ OpenStack) αž“αŸƒαžœαžαŸ’αžαž»αŸ”
    • αž”αŸ†αž–αŸαž‰αž”αž“αŸ’αžαŸ‚αž˜ nodeInfo αž“αŸ…αž€αŸ’αž“αž»αž„αžœαžαŸ’αžαž» Node αž–αŸαžαŸŒαž˜αžΆαž“αž’αŸ†αž–αžΈαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž˜αŸ’αž˜αž·αžαŸ” αž§αž‘αžΆαž αžšαžŽαŸ αž™αžΎαž„αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž”αŸ’αžšαž—αŸαž‘ instance αž€αŸ’αž“αž»αž„ AWS;
    • αž™αžΎαž„αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžœαžαŸ’αžαž˜αžΆαž“αžšαž”αžŸαŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž˜αŸ’αž˜αž·αžαž“αŸ…αž€αŸ’αž“αž»αž„αž–αž–αž€αŸ” αž§αž‘αžΆαž αžšαžŽαŸαž”αŸ’αžšαžŸαž·αž“αž”αžΎαžœαžαŸ’αžαž»αž˜αž½αž™αŸ” Node αž”αžΆαž“αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αžšαžŠαŸ’αž‹αž˜αž½αž™αŸ” NotReadyαž’αŸ’αž“αž€αž’αžΆαž…αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžαžΆαžαžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž˜αŸ’αž˜αž·αžαž˜αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ’αžšαž»αž˜αž αŸŠαž»αž“αž•αŸ’αžαž›αŸ‹αžŸαŸαžœαžΆαž–αž–αž€αžŠαŸ‚αžšαž¬αž‘αŸ providerID. αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžœαžΆαž˜αž·αž“αž“αŸ…αž‘αžΈαž“αŸ„αŸ‡αž‘αŸ αž›αž»αž”αžœαžαŸ’αžαž» NodeαžŠαŸ‚αž›αž“αžΉαž„αž“αŸ…αžαŸ‚αžŸαŸ’αžαž·αžαž€αŸ’αž“αž»αž„αž…αž„αŸ’αž€αŸ„αž˜αž‡αžΆαžšαŸ€αž„αžšαž αžΌαžαŸ”
  2. αžαŸ†αž”αž“αŸ‹ - αž€αŸ†αžŽαžαŸ‹αžŠαŸ‚αž“αž”αžšαžΆαž‡αŸαž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαžαŸ’αžαž» NodeαžŠαžΎαž˜αŸ’αž”αžΈαž±αŸ’αž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αŸ†αžŽαžαŸ‹αž–αŸαž›αž’αžΆαž…αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαžαŸ’αž“αžΆαŸ†αž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Pod αž™αŸ„αž„αž‘αŸ…αžαžΆαž˜αžαŸ†αž”αž“αŸ‹ αž“αž·αž„αžαŸ†αž”αž“αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ’αžšαž»αž˜αž αŸŠαž»αž“αž•αŸ’αžαž›αŸ‹αžŸαŸαžœαžΆαž–αž–αž€αŸ”
  3. LoadBalancer - αž“αŸ…αž–αŸαž›αž”αž„αŸ’αž€αžΎαžαžœαžαŸ’αžαž» Service αž‡αžΆαž˜αž½αž™αž”αŸ’αžšαž—αŸαž‘ LoadBalancer αž”αž„αŸ’αž€αžΎαžαž”αŸ’αžšαž—αŸαž‘αž“αŸƒαžαž»αž›αŸ’αž™αž—αžΆαž–αžŠαŸ‚αž›αž“αžΉαž„αžŠαžΉαž€αž“αžΆαŸ†αž…αžšαžΆαž…αžšαž–αžΈαžαžΆαž„αž€αŸ’αžšαŸ…αž‘αŸ…αž€αžΆαž“αŸ‹αžαŸ’αž“αžΆαŸ†αž„αž…αž„αŸ’αž€αŸ„αž˜αŸ” αž§αž‘αžΆαž αžšαžŽαŸαž“αŸ…αž€αŸ’αž“αž»αž„ Yandex.Cloud αž’αŸ’αž“αž€αž’αžΆαž…αž”αŸ’αžšαžΎ NetworkLoadBalancer ΠΈ TargetGroup αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αŸ„αž›αž”αŸ†αžŽαž„αž‘αžΆαŸ†αž„αž“αŸαŸ‡;
  4. αž•αŸ’αž›αžΌαžœ - αž”αž„αŸ’αž€αžΎαžαž”αžŽαŸ’αžαžΆαž‰αžšαžœαžΆαž„αžαŸ’αž“αžΆαŸ†αž„ αž–αžΈαž–αŸ’αžšαŸ„αŸ‡ αž™αŸ„αž„αžαžΆαž˜αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžš Kubernetes αž•αžαž“αžΈαž˜αž½αž™αŸ—αžαŸ’αžšαžΌαžœαžαŸ‚αž˜αžΆαž“αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ IP αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“ αž αžΎαž™αž’αžΆαž…αž‘αŸ…αžŠαž›αŸ‹αž•αžαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž”αžΆαž“αŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αŸ„αž›αž”αŸ†αžŽαž„αž‘αžΆαŸ†αž„αž“αŸαŸ‡ αž’αŸ’αž“αž€αž’αžΆαž…αž”αŸ’αžšαžΎαž”αžŽαŸ’αžαžΆαž‰αžαŸ’αžšαž½αžαž›αžΎαž‚αŸ’αž“αžΆ (VXLAN, GENEVE) αž¬αž€αŸ†αžŽαžαŸ‹αžαžΆαžšαžΆαž„αž“αžΆαŸ†αž•αŸ’αž›αžΌαžœαžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž”αžŽαŸ’αžαžΆαž‰αž“αž·αž˜αŸ’αž˜αž·αžαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž•αŸ’αžαž›αŸ‹αžŸαŸαžœαžΆαž–αž–αž€αŸ–

    αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ† Kubernetes CCM (Cloud Controller Manager) αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Yandex.Cloud

  5. αž”αžšαž·αž˜αžΆαžŽ - αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž˜αžΆαž“αž€αžΆαžšαž”αž‰αŸ’αž‡αžΆαž‘αž·αž‰ PV αžαžΆαž˜αžœαž“αŸ’αžαžŠαŸ„αž™αž”αŸ’αžšαžΎ PVC αž“αž·αž„ SC αŸ” αžŠαŸ†αž”αžΌαž„ αž˜αž»αžαž„αžΆαžšαž“αŸαŸ‡αž‚αžΊαž‡αžΆαž•αŸ’αž“αŸ‚αž€αž˜αž½αž™αž“αŸƒ CCM αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž—αžΆαž–αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αžŠαŸαž’αžŸαŸ’αž…αžΆαžšαŸ’αž™αžšαž”αžŸαŸ‹αžœαžΆ αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‘αŸ…αž‚αž˜αŸ’αžšαŸ„αž„αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αž˜αž½αž™αž‚αžΊ Container Storage Interface (CSI)αŸ” αž™αžΎαž„αž”αžΆαž“αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈ CSI αž…αŸ’αžšαžΎαž“αž‡αžΆαž„αž˜αŸ’αžαž„ αž”αžΆαž“αžŸαžšαžŸαŸαžš αž αžΎαž™αžŠαžΌαž…αžŠαŸ‚αž›αž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αžšαž½αž…αž˜αž€αž αžΎαž™ αžŸαžΌαž˜αŸ’αž”αžΈαžαŸ‚ αž”αžΆαž“αž…αŸαž‰αž•αŸ’αžŸαžΆαž™ αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž‰αŸ’αž‡αžΆ CSI αŸ”

αž–αžΈαž˜αž»αž“ αž€αžΌαžŠαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž›αž’αŸ’αžœαžΎαž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž‡αžΆαž˜αž½αž™αž–αž–αž€αž˜αžΆαž“αž‘αžΈαžαžΆαŸ†αž„αž“αŸ…αž€αŸ’αž“αž»αž„αžƒαŸ’αž›αžΆαŸ†αž„ Git αžŸαŸ†αžαžΆαž“αŸ‹αž“αŸƒαž‚αž˜αŸ’αžšαŸ„αž„ Kubernetes αž“αŸ… k8s.io/kubernetes/pkg/cloudprovider/providersαž”αŸ‰αž»αž“αŸ’αžαŸ‚αž–αž½αž€αž‚αŸαž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαž”αŸ„αŸ‡αž”αž„αŸ‹αžœαžΆαž…αŸ„αž›αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž—αžΆαž–αžšαž’αžΆαž€αŸ‹αžšαž’αž½αž›αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž€αžΌαžŠαžŠαŸαž’αŸ†αž˜αž½αž™αŸ” αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž…αžΆαžŸαŸ‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‘αŸ… αžƒαŸ’αž›αžΆαŸ†αž„αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€. αžŠαžΎαž˜αŸ’αž”αžΈαž—αžΆαž–αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž“αŸƒαž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžš αž“αž·αž„αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αž αžŸαž˜αžΆαžŸαž’αžΆαžαž»αžšαž½αž˜αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž€αŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‘αŸ… αžƒαŸ’αž›αžΆαŸ†αž„αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€.

αžŠαžΌαž…αž‘αŸ…αž“αžΉαž„ CSI αž’αŸ’αž“αž€αž•αŸ’αžαž›αŸ‹αžŸαŸαžœαžΆαž–αž–αž€αž’αŸ†αž‡αžΆαž…αŸ’αžšαžΎαž“αž”αžΆαž“αžšαž…αž“αžΆ CCMs αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαžšαž½αž…αž αžΎαž™ αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž–αž–αž€αž“αŸ…αž›αžΎ Kubernetes αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž•αŸ’αž‚αžαŸ‹αž•αŸ’αž‚αž„αŸ‹αž˜αž·αž“αž˜αžΆαž“ CCM αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αž»αžαž„αžΆαžšαž…αžΆαŸ†αž”αžΆαž…αŸ‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž’αžΆαž…αžšαž€αž”αžΆαž“αžαžΆαž˜αžšαž™αŸˆ API αž“αŸ„αŸ‡αž’αŸ’αž“αž€αž’αžΆαž…αž’αž“αž»αžœαžαŸ’αž CCM αžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„αž”αžΆαž“αŸ”

αžŠαžΎαž˜αŸ’αž”αžΈαžŸαžšαžŸαŸαžšαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž•αŸ’αž‘αžΆαž›αŸ‹αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž“αŸƒ CCM αžœαžΆαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž αžαŸ’αžšαžΌαžœαž€αžΆαžšαž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹ Go.

И αž“αŸαŸ‡αž‡αžΆαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž™αžΎαž„αž‘αž‘αž½αž›αž”αžΆαž“.

РСализация

αžαžΎαž’αŸ’αž“αž€αž˜αž€αž“αŸαŸ‡αžŠαŸ„αž™αžšαž”αŸ€αž”αžŽαžΆ

αž™αžΎαž„αž”αžΆαž“αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸ (αž¬αž•αŸ’αž‘αž»αž™αž‘αŸ…αžœαž·αž‰αžŸαžΌαž˜αŸ’αž”αžΈαžαŸ‚αž”αŸ’αžšαžΎ) αž‡αžΆαž˜αž½αž™ αžšαž½αž…αžšαžΆαž›αŸ‹ (!) CCM αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Yandex.Cloud αž˜αž½αž™αž†αŸ’αž“αžΆαŸ†αž˜αž»αž“αŸ”

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

  • αž€αžΆαžšαž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αž—αžΆαž–αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαžαžΆαž˜αžšαž™αŸˆαž“αž·αž˜αž·αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆ JWT IAM;
  • αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αŸ”

αž™αž›αŸ‹αžŸαŸ’αžšαž”αž‡αžΆαž˜αž½αž™αž’αŸ’αž“αž€αž“αž·αž–αž“αŸ’αž’ (αžŒαžΈαž›αžΈαžŸαŸŠαžΈαž“) αž“αŸ…αž€αŸ’αž“αž»αž„ Telegram αž™αžΎαž„αž”αžΆαž“αž”αŸ†αž”αŸ‚αž€ yandex-cloud-controller-manager αž αžΎαž™αž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž˜αž»αžαž„αžΆαžšαžŠαŸ‚αž›αž”αžΆαžαŸ‹αŸ”

αž›αž€αŸ’αžαžŽαŸˆβ€‹αž–αž·αžŸαŸαžŸ

αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“ CCM αž‚αžΆαŸ†αž‘αŸ’αžšαž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

  • αžœαžαŸ’αžαž»;
  • αžαŸ†αž”αž“αŸ‹;
  • LoadBalancer.

αž“αŸ…αž–αŸαž›αž’αž“αžΆαž‚αž αž“αŸ…αž–αŸαž›αžŠαŸ‚αž› Yandex.Cloud αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αžŸαž˜αžαŸ’αžαž—αžΆαž– VPC αž€αž˜αŸ’αžšαž·αžαžαŸ’αž–αžŸαŸ‹ αž™αžΎαž„αž“αžΉαž„αž”αž“αŸ’αžαŸ‚αž˜αž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αž˜αž½αž™αŸ” αž•αŸ’αž›αžΌαžœ.

LoadBalancer αž‡αžΆαž”αž‰αŸ’αž αžΆαž”αŸ’αžšαžˆαž˜αž…αž˜αŸ’αž”αž„

αž‡αžΆαžŠαŸ†αž”αžΌαž„ αž™αžΎαž„αž”αžΆαž“αž–αŸ’αž™αžΆαž™αžΆαž˜ αžŠαžΌαž…αž‡αžΆαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž CCM αž•αŸ’αžŸαŸαž„αž‘αŸ€αž αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαž‚αžΌ LoadBalancer ΠΈ TargetGroup αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αŸ’αž“αžΆαŸ” Service αž‡αžΆαž˜αž½αž™αž”αŸ’αžšαž—αŸαž‘ LoadBalancer. αž‘αŸ„αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ Yandex.Cloud αž”αžΆαž“αžšαž€αžƒαžΎαž‰αžŠαŸ‚αž“αž€αŸ†αžŽαžαŸ‹αž‚αž½αžšαž±αŸ’αž™αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž˜αž½αž™: αž’αŸ’αž“αž€αž˜αž·αž“αž’αžΆαž…αž”αŸ’αžšαžΎαž”αžΆαž“αž‘αŸαŸ” TargetGroups αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž”αŸ’αžšαžŸαž–αŸ’αžœ Targets (αž‚αžΌ SubnetID - IpAddress).

αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ† Kubernetes CCM (Cloud Controller Manager) αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Yandex.Cloud

αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„ CCM αžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž€αžΎαž αž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆαž˜αž½αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αžŠαŸ‚αž›αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αžœαžαŸ’αžαž»αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš Node αž”αŸ’αžšαž˜αžΌαž›αž–αŸαžαŸŒαž˜αžΆαž“αž’αŸ†αž–αžΈαž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž˜αŸ’αž˜αž·αžαž“αžΈαž˜αž½αž™αŸ— αžŠαžΆαž€αŸ‹αž‡αžΆαž€αŸ’αžšαž»αž˜αž‘αŸ…αžαžΆαž˜αž€αž˜αŸ’αž˜αžŸαž·αž‘αŸ’αž’αž·αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹ NetworkID, αž”αž„αŸ’αž€αžΎαžβ€‹αžŠαŸ„αž™β€‹ TargetGroup αž“αŸ…αž›αžΎ NetworkIDαž“αž·αž„αžαžΆαž˜αžŠαžΆαž“αž—αžΆαž–αž–αžΆαž€αŸ‹αž–αŸαž“αŸ’αž’αž•αž„αžŠαŸ‚αžšαŸ” αž€αŸ’αžšαŸ„αž™αž˜αž€αž‘αŸ€αžαž“αŸ…αž–αŸαž›αž”αž„αŸ’αž€αžΎαžαžœαžαŸ’αžαž»αž˜αž½αž™αŸ” Service αž‡αžΆαž˜αž½αž™αž”αŸ’αžšαž—αŸαž‘ LoadBalanacer αž™αžΎαž„αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž—αŸ’αž‡αžΆαž”αŸ‹αž“αžΌαžœαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‡αžΆαž˜αž»αž“ TargetGroup αž‘αŸ…αžαŸ’αž˜αžΈ NetworkLoadBalanacerαžαŸ’αž‰αž»αŸ†αŸ”

αžαžΎαž’αŸ’αžœαžΎαžŠαžΌαž…αž˜αŸ’αžαŸαž…αžŠαžΎαž˜αŸ’αž”αžΈαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž”αŸ’αžšαžΎ?

CCM αž‚αžΆαŸ†αž‘αŸ’αžš Kubernetes αž€αŸ†αžŽαŸ‚ 1.15 αž“αž·αž„αžαŸ’αž–αžŸαŸ‹αž‡αžΆαž„αž“αŸαŸ‡αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž…αž„αŸ’αž€αŸ„αž˜αž˜αž½αž™ αžŠαžΎαž˜αŸ’αž”αžΈαž±αŸ’αž™αžœαžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αžœαžΆαž‘αžΆαž˜αž‘αžΆαžšαž‘αž„αŸ‹αž‡αžΆαžαž· --cloud-provider=external αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž‘αŸ… true αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ kube-apiserver, kube-controller-manager, kube-scheduler αž“αž·αž„ kubelets αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ”

αž‡αŸ†αž αžΆαž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αžαŸ’αž›αž½αž“αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆαž“αŸ…αž€αŸ’αž“αž»αž„ README. αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž’αŸ’αž›αžΆαž€αŸ‹αž…αž»αŸ‡αžŠαž›αŸ‹αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαžœαžαŸ’αžαž»αž“αŸ…αž€αŸ’αž“αž»αž„ Kubernetes αž–αžΈ manifests αŸ”

αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžšαžΎ CCM αž’αŸ’αž“αž€αž€αŸαž“αžΉαž„αžαŸ’αžšαžΌαžœαž€αžΆαžš:

αž™αžΎαž„αž“αžΉαž„αžšαžΈαž€αžšαžΆαž™αž€αŸ’αž“αž»αž„αž€αžΆαžšαž‘αž‘αž½αž›αž”αžΆαž“αž˜αžαž·αž€αŸ‚αž›αž˜αŸ’αž’αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ αž“αž·αž„ αž”αž‰αŸ’αž αžΆαžαŸ’αž˜αžΈαŸ”αž”αžΎαž‡αž½αž”αž”αž‰αŸ’αž αžΆ!

αž›αž‘αŸ’αž’αž•αž›

αž™αžΎαž„αž”αžΆαž“αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ CCM αžŠαŸ‚αž›αž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž“αŸ…αž€αŸ’αž“αž»αž„αž…αž„αŸ’αž€αŸ„αž˜ Kubernetes αž…αŸ†αž“αž½αž“αž”αŸ’αžšαžΆαŸ†αž€αŸ’αž“αž»αž„αžšαž™αŸˆαž–αŸαž›αž–αžΈαžšαžŸαž”αŸ’αžαžΆαž αŸαž€αž“αŸ’αž›αž„αž˜αž€αž“αŸαŸ‡ αž αžΎαž™αž‚αŸ’αžšαŸ„αž„αž“αžΉαž„αž–αž„αŸ’αžšαžΈαž€αž…αŸ†αž“αž½αž“αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαžŠαž›αŸ‹ 20 αž“αŸ…αž€αŸ’αž“αž»αž„αžαŸ‚αžαžΆαž„αž˜αž»αžαž“αŸαŸ‡αŸ” αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“ αž™αžΎαž„αž˜αž·αž“αžŽαŸ‚αž“αžΆαŸ†αž±αŸ’αž™αž”αŸ’αžšαžΎ CCM αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ K8s αž’αŸ† αž“αž·αž„αžŸαŸ†αžαžΆαž“αŸ‹αž‘αŸαŸ”

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

PS

αžŸαžΌαž˜αž’αžΆαž“αž•αž„αžŠαŸ‚αžšαž“αŸ…αž›αžΎαž”αŸ’αž›αž€αŸ‹αžšαž”αžŸαŸ‹αž™αžΎαž„αŸ–

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

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