ืืืืฉื ืืชืงืืคื ืืืืจืื ื
ืืืื
ืืื ืื?
ืืื ืืขืื ืฉืื ืืขื ืืืชื ื ืืคืชื CCM ืขืืืจ Yandex.Cloud ืขืืืื ืืงื ื ืืื ืขื ืืื ืฉืืืจ ืืชืืืจืื ื-
ืื ืื ืืืืืง CCM?
ืืืจื ืืื, ืื ื ืืืื ืื ืืช ืืกืืืื ืกืืืื ื ืืืฉืืื ืืืืืฅ - ืืืฉื, ืืืืฆืขืืช Terraform. ืืื ืืคืขืืื ืืฉ ืฆืืจื ืื ืื ืืช ืกืืืืช ืืขื ื ืฉืกืืืื ื ืืืฉืืื. ืืคืฉืจืืช ืื ื ืืชื ืช, ืืืื ืืืืฉืืช
ืืืืคื ืกืคืฆืืคื, Cloud Controller Manager ืืกืคืง ืืืืฉื ืกืืืื ืขืืงืจืืื ืฉื ืืื ืืจืืงืฆืื:
- ืืงืจืื - ืืืืฉืืช ืงืฉืจ ืฉื 1:1 ืืื ืืืืืืงื ืฆืืืช ื-Kubernetes (
Node
) ืืืืื ื ืืืจืืืืืืช ืืกืคืง ืืขื ื. ืืฉืืื ืื ืื ืื ื:- ืืืื ืืช ืืฉืื
spec.providerID
ืืืคืฅNode
. ืืืืืื, ืขืืืจ OpenStack CCM ืืฉืื ืื ืืฉ ืืช ืืคืืจืื ืืื:openstack:///d58a78bf-21b0-4682-9dc6-2132406d2bb0
. ืืชื ืืืื ืืจืืืช ืืช ืืฉื ืฉื ืกืคืง ืืขื ื ืืืช ื-UUID ืืืืืืื ืฉื ืืฉืจืช (ืืืื ื ืืืจืืืืืืช ื-OpenStack) ืฉื ืืืืืืืงื; - ืึทืฉืืึดืื
nodeInfo
ืืืคืฅNode
ืืืืข ืขื ืืืืื ื ืืืืจืืืืืืช. ืืืืืื, ืื ื ืืฆืืื ืื ืกืื ืืืคืข ื-AWS; - ืื ื ืืืืงืื ื ืืืืืช ืฉื ืืืื ื ืืืจืืืืืืช ืืขื ื. ืืืืืื, ืื ืืคืฅ
Node
ื ืื ืกื ืืืืื ืNotReady
, ืชืืื ืืืืืง ืื ืืืืื ื ืืืืจืืืืืืช ืงืืืืช ืืืื ืืกืคืง ืืขื ื ืขื ืืืproviderID
. ืื ืืื ืื ืงืืื, ืืืง ืืช ืืืืืืืงืNode
, ืฉืืืจืช ืืืฉืืจ ืืืฉืืื ืื ืฆื;
- ืืืื ืืช ืืฉืื
- ืืืืจืื โ ืืืืืจ ืืช ืชืืื ืืืฉื ืขืืืจ ืืืืืืืงื
Node
, ืื ืฉืืืชืืื ืืืื ืืืืืจ ืฆืืืช ืขืืืจ ืืคืื ืืคื ืืืืืจืื ืืืืืืจืื ืืกืคืง ืืขื ื; - LoadBalancer - ืืขืช ืืฆืืจืช ืืืืืืงื
Service
ืขื ืกืืLoadBalancer
ืืืฆืจ ืืขืื ืืืืื ืฉืืืืื ืชื ืืขื ืืืืืฅ ืืฆืืชื ืืืฉืืืืืช. ืืืืืื, ื- Yandex.Cloud ืืชื ืืืื ืืืฉืชืืฉNetworkLoadBalancer
ะธTargetGroup
ืืืืจืืช ืืื; - ืืกืืื โ ืืื ื ืจืฉืช ืืื ืฆืืชืื, ืื ืขื ืคื ืืจืืฉืืช Kubernetes, ืืื ืคืื ืืืื ืืืืืช ืืชืืืช IP ืืฉืื ืืืืืืช ืืกืืื ืืืืืข ืืื ืคืื ืืืจ. ืืืืจืืช ืืื, ื ืืชื ืืืฉืชืืฉ ืืจืฉืช ืฉืืืช-ืขื (VXLAN, GENEVE) ืื ืืืืืืจ ืืืืช ื ืืชืื ืืฉืืจืืช ืืจืฉืช ืืืืืจืืืืืืช ืฉื ืกืคืง ืืขื ื:
- ืชืืืื - ืืืคืฉืจ ืืืื ื ืืื ืืืช ืฉื PV ืืืืฆืขืืช PVC ื-SC. ืืชืืืื, ืคืื ืงืฆืืื ืืืืช ืื ืืืืชื ืืืง ื-CCM, ืื ืืฉื ืืืจืืืืชื ืืจืื ืืื ืืืขืืจื ืืคืจืืืงื ื ืคืจื, Container Storage Interface (CSI). ืืืืจื ื ืขื CSI ืืืชืจ ืืคืขื ืืืช
ะฟะธัะฐะปะธ ืืืคื ืฉืืืจ ืืืืืจ, ืืคืืืืึฐืฉืืึผืืจึธืจ ืื ืื ืืชืงื CSI.
ืืขืืจ, ืื ืืงืื ืืืงืืื ืืื ืืจืืงืฆืื ืขื ืืขื ื ืืื ืืืืงื ืืืืืจ Git ืืจืืฉื ืฉื ืคืจืืืงื Kubernetes ืืืชืืืช k8s.io/kubernetes/pkg/cloudprovider/providers
, ืืื ืื ืืืืืื ืื ืืืฉ ืืช ืื ืืืื ืื โโืื ืืืืช ืืขืืืื ืขื ืืกืืก ืงืื ืืืื. ืื ืืืืืขืืช ืืืฉื ืืช ืืืขืืจื ืื
ืืื ื-CSI, ืกืคืงื ืขื ื ืืืืืื ืจืืื ืืืจ ืชืื ื ื ืืช ื-CCM ืฉืืื ืืื ืืื ืฃ ืขื ื ืื ื-Kubernetes. ืื ืืกืคืง ืืื CCM, ืืื ืื ืืคืื ืงืฆืืืช ืืืจืืฉืืช ืืืื ืืช ืืจื API, ืื ืืชื ืืืื ืืืืฉื CCM ืืขืฆืื.
ืืื ืืืชืื ืืืฉืื ืืฉืื ืฉื CCM, ืืกืคืืง ืืืืฉื
ะ ะตะฐะปะธะทะฐัะธั
ืืื ืืืขืช ืืื
ืืชืืื ื ืืคืืชืื (ืื ืืืชืจ ืืืืง, ืืคืืื ืืืฉืชืืฉ) ืขื
ืขื ืืืช, ืืืืฉืื ืื ืืื ืืกืจ ืื ื:
- ืืืืืช ืืืืฆืขืืช ืืกืืืื JWT IAM;
- ืชืืืื ืืืงืจ ืฉืืจืืช.
ืืืกืืื ืขื ืืืืืจ (ืืืืกืื) ืืืืืจื, ืืืืงื ื ืืช yandex-cloud-controller-manager ืืืืกืคื ื ืืช ืืคืื ืงืฆืืืช ืืืกืจืืช.
ืชืืื ืืช ืขืืงืจืืืช
ื ืืื ืืขืืฉืื, CCM ืชืืื ืืืืฉืงืื ืืืืื:
- ืืงืจืื;
- ืืืืจืื;
- LoadBalancer.
ืืขืชืื, ืืืฉืจ Yandex.Cloud ืืชืืื ืืขืืื ืขื ืืืืืืช VPC ืืชืงืืืืช, ื ืืกืืฃ ืืืฉืง ืืกืืืืื.
LoadBalanacer ืืืชืืจ ืขืืงืจื
ืืชืืืื, ื ืืกืื ื, ืืื ืืืฉืืื CCM ืืืจืื, ืืืฆืืจ ืืื LoadBalancer
ะธ TargetGroup
ืขืืืจ ืื ืืื Service
ืขื ืกืื LoadBalancer
. ืขื ืืืช, Yandex.Cloud ืืืื ืืืืื ืืขื ืืื ืช ืืืช: ืืชื ืื ืืืื ืืืฉืชืืฉ TargetGroups
ืขื ืืฆืืืืื Targets
(ืืื SubnetID
- IpAddress
).
ืืื, ืืชืื ื-CCM ืฉื ืืฆืจ, ืืืคืขื ืืงืจ, ืฉืืืฉืจ ืืืืืืงืืื ืืฉืชื ืื Node
ืืืกืฃ ืืืืข ืขื ืื ืืืืฉืงืื ืืื ืืืื ื ืืืจืืืืืืช, ืืงืืฅ ืืืชื ืืคื ืืฉืชืืืืืชื ืืืืง ืืกืืื NetworkID
, ืืืฆืจ ืขื ืืื TargetGroup
ืขื NetworkID
, ืืื ืขืืงื ืืืจ ืืจืืืื ืืืืช. ืืืืจ ืืื, ืืขืช ืืฆืืจืช ืืืืืืงื Service
ืขื ืกืื LoadBalanacer
ืื ืื ื ืคืฉืื ืืฆืจืคืื ืคืจืื ืฉื ืืฆืจ ืืจืืฉ TargetGroup
ืืืืฉ NetworkLoadBalanacer
ืื ื.
ืืืฆื ืืืชืืื ืืืฉืชืืฉ?
CCM ืชืืื ื-Kubernetes ืืจืกื 1.15 ืืืขืื. ืืืฉืืื, ืืื ืฉืื ืืขืืื, ืื ืืืจืฉ ืืช ืืืื --cloud-provider=external
ืืืืืจ ื true
ืขืืืจ kube-apiserver, kube-controller-manager, kube-scheduler ืืื ืืงืืืืืื.
ืื ืืฉืืืื ืืืจืืฉืื ืืืชืงื ื ืขืฆืื ืืชืืืจืื ื
ืืื ืืืฉืชืืฉ ื-CCM ืชืฆืืจื ืื:
-
ืฆืืื ืืื ืืคืกื ืืืื ืืกืคืจืืื (folder-id
) Yandex.Cloud; - ืืฉืืื ืฉืืจืืช ืืืื ืืจืืงืฆืื ืขื ื-API ืฉื Yandex.Cloud. ืืื ืืคืกื
Secret
ืืืืืืืขืืืจ ืืคืชืืืช ืืืจืฉืื ืืืฉืืื ืืฉืืจืืช. ืืชืืขืืืึฐืชืึผืึธืจ , ืืืฆื ืืืฆืืจ ืืฉืืื ืฉืืจืืช ืืืงืื ืืคืชืืืช.
ื ืฉืื ืืงืื ืืช ืืืฉืื ืฉืื ื
ืชืืฆืืืช ืฉื
ืืฉืชืืฉื ื ื-CCM ืืืืืฉื ืืืืืฉื ืืฉืืืืืช Kubernetes ืืืืื ืืฉืืืขืืื ืืืืจืื ืื ืืืชืื ื ืื ืืืจืืื ืืช ืืกืคืจื ื-20 ืืืืืฉ ืืงืจืื. ืืจืืข ืืื ื ื ืืืืืฆืื ืืืฉืชืืฉ ื-CCM ืขืืืจ ืืชืงื ืืช K8s ืืืืืืช ืืงืจืืืืืช.
ืืื ืืืงืจื ืฉื CSI, ื ืฉืื ืื ืืคืชืื Yandex ืืืงืื ืขื ืขืฆืื ืืช ืืคืืชืื ืืืชืืืื ืืคืจืืืงื ืื โ ืื ื ืืืื ืื ืืืขืืืจ ืืช ืืืืืจ ืืืงืฉืชื ืขื ืื ืช ืืืชืืืื ืขื ืืฉืืืืช ืฉืจืืืื ืืืืช ืื ื ืืืชืจ.
ื .ื.
ืงืจื ืื ืืืืื ืฉืื ื:
- ยซ
ืื ืืกืืื ืฉืื ื ืืคืืชืื ืื ืื ืืชืงื CSI ื-Kubernetes ืขืืืจ Yandex.Cloud "; - ยซ
ืืื ืงื ืื ืื ืืืืื ืืฉืืื Kubernetes? ืืืจืื ืขื ืืคืขืื ืชืืกืฃ "; - ยซ
ืืจืืืช ืืืฉืืื ืฉื Kubernetes (ืกืงืืจื ืืืืืช ืืืื ืืืืื) ".
ืืงืืจ: www.habr.com