áááŒá¬áá±ážáá®áá០áááºáááŒá±á¬áááºá
áááá«ááºáž
áá«á áá¬ááŒá±á¬áá·áºáá²á
Yandex.Cloud á¡ááœáẠCCM ááᯠáá®ááœááºááẠáá»áœááºá¯ááºááá¯á·á¡á¬áž ááŸá¯á¶á·áá±á¬áºáá±ážááá·áº áááºááœááºáá»ááºáá»á¬ážááẠáá±á¬áºááŒáá¬ážááŒá®ážáá±á¬ á¡áá¬áá»á¬ážááŸáá·áº áá¯á¶ážá ááá¯ááºááá¯ááºáá«áááºá
á¡ááá¡áá» CCM ááá¯áá¬áá¬áá²á
áá¯á¶ááŸááºá¡á¬ážááŒáá·áºá áá»áœááºá¯ááºááá¯á·ááẠá¡á
á¯á¡ááœá²á·á¡ááœáẠáá»áœááºá¯ááºááá¯á·ááááºáááºážáá»ááºááᯠááŒááºáááºááŒáááºá ááŒááºáá០á¥ááá¬- Terraform ááá¯á¡áá¯á¶ážááŒá¯ááŒááºážá ááá¯á·áá±á¬áº áá
áºáá«áá
áºáᶠáá»áœááºá¯ááºááá¯á·áááºáááºážáá»ááºááŸá cloud áááºáááºážáá»ááºááᯠá
á®áá¶ááá·áºááœá²ááẠááá¯á¡ááºáá«áááºá á¡á
á¯á¡ááœá²á·ááŸ. á€ááŒá
áºááá¯ááºáá»á±ááᯠáá±ážáá±á¬ááºáá¬ážááŒá®áž áááºážááẠá¡áá±á¬ááºá¡áááºáá±á¬áºááŒááºážáá¬ááŒá
áºáááºá
á¡áá°ážáááŒáá·áºá Cloud Controller Manager ááẠá¡ááŒááºá¡ááŸááºáá¯á¶á·ááŒááºááŸá¯ á¡áá»áá¯ážá¡á á¬ážáá«ážáá¯ááᯠáá¶á·ááá¯ážáá±ážáááº-
- áá
áºá
ááºáá»á¬áž - Kubernetes ááŸá node object áá
áºáá¯ááŒá¬áž 1:1 áááºáá¶áá±ážááᯠá¡áá±á¬ááºá¡áááºáá±á«áºááẠ(
Node
) ááŸáá·áº cloud áá¶á·ááá¯ážáá±ážáá°ááŸá virtual machine áá áºáá¯á á€á¡ááœáẠáá»áœááºá¯ááºááá¯á·:- ááœááºáááºááá¯ááŒáá·áºáá«á
spec.providerID
á¡áá¬ááá¹áá¯áNode
. á¥ááá¬á¡á¬ážááŒáá·áºá OpenStack CCM á¡ááœáẠá€á¡ááœááºááœáẠá¡á±á¬ááºáá«áá±á¬áºáááºááŸááááºáopenstack:///d58a78bf-21b0-4682-9dc6-2132406d2bb0
. cloud áááºáá±á¬ááºááŸá¯áá±ážáá°áá¡áááºááŸáá·áº á¡áá¬ááá¹áá¯ááá¬áᬠ(OpenStack ááœáẠvirtual machine) ááá°ážááŒá¬ážáá±á¬ UUID ááᯠáááºááœá±á·ááŒááºááá¯ááºáá«áááºá - á¡ááŒáá·áº
nodeInfo
á¡áá¬ááá¹áá¯áNode
virtual machine ááŸáá·áºáááºáááºáá±á¬á¡áá»ááºá¡áááºáá»á¬ážá á¥ááá¬á¡á¬ážááŒáá·áºá áá»áœááºá¯ááºááá¯á·ááẠAWS ááœáẠinstance á¡áá»áá¯ážá¡á á¬ážááᯠáááºááŸááºáá±ážáá«áááºá - áá»áœááºá¯ááºááá¯á·ááẠcloud ááœáẠvirtual machine áá
áºáá¯ááŸáááŒááºážááᯠá
á
áºáá±ážáá«áááºá á¥ááá¬- á¡áá¬ááá¹áá¯áá
áºáá¯ááá¯áá»áŸááº
Node
ááŒááºáááºáá áºáá¯ááá¯á·ááœá¬ážáá²á·áááºáNotReady
virtual machine ááẠcloud áááºáá±á¬ááºááŸá¯áá±ážáá°ááœáẠá¡á¬ážáá¯á¶ážááŸááááŸá á á áºáá±ážááá¯ááºáá«áááºáproviderID
. ááá¯áá±áá¬ááœááºáááŸááá«áá á¡áá¬ááá¹áá¯ááá¯áá»ááºáá«áNode
ááá¯ááºááẠá¡á á¯á¡áá±ážááŸá¬ áá¬ááááŸááá±ááá·áºá
- ááœááºáááºááá¯ááŒáá·áºáá«á
- áá¯áẠ- á¡áá¬ááá¹áá¯á¡ááœáẠáá»áá¯á·ááœááºážáá»ááºááá¯ááááºážááᯠáááºááŸááºáá±ážáááºá
Node
Cloud áááºáá±á¬ááºááŸá¯áá±ážáá°ááŸá áá±ááá»á¬ážááŸáá·áº áá¯ááºáá»á¬ážá¡ááá¯áẠPod á¡ááœáẠnode áá áºáá¯ááᯠááœá±ážáá»ááºááá¯ááºá á±áááºá - LoadBalancer - á¡áá¬ááá¹áá¯áá
áºáá¯áááºáá®ážáá±á¬á¡áá«
Service
á¡áá»áá¯ážá¡á á¬ážááŸáá·áºá¡áá°LoadBalancer
ááŒááºáá០á¡ááœá¬ážá¡áá¬áá»á¬ážááᯠá¡á á¯á¡áá±ážáá»á¬ážáá®ááá¯á· ááœáŸááºááŒá¬ážáá±ážááá·áº balancer á¡áá»áá¯ážá¡á á¬ážááᯠáááºáá®ážáááºá á¥ááá¬á¡á¬ážááŒáá·áºá Yandex.Cloud ááœáẠáááºáá¯á¶ážááá¯ááºáááºáNetworkLoadBalancer
ОTargetGroup
á€áááºááœááºáá»ááºáá»á¬ážá¡ááœááº; - ááá®ážá áẠ- á¡áááºááŒá±á¬áá·áºááá¯áá±á¬áº node áá»á¬ážá¡ááŒá¬ážááœááºáááºááá¯áááºáá±á¬ááºáááºá Kubernetes áááºááŸááºáá»ááºáá»á¬ážá¡áá pod áá áºáá¯á á®ááœáẠáááºážáááá¯ááºááá¯áẠIP ááááºá á¬ááŸáááááºááŒá áºááŒá®áž á¡ááŒá¬áž pod áá áºáá¯áá¯ááá¯á· áá±á¬ááºááŸáááá¯ááºáááºááŒá áºáááºá á€áááºááœááºáá»ááºáá»á¬ážá¡ááœáẠáááºááẠáááºááá·áºááœááºáááºáá áºáᯠ(VXLANá GENEVE) ááá¯áá¯á¶ážááá¯ááºááẠááá¯á·ááá¯áẠcloud áááºáá±á¬ááºááŸá¯áá±ážáá°á virtual network ááœáẠááá¯ááºááá¯ááºáááºážááŒá±á¬ááºážáááºááŸááºááŒááºážááá¬ážááᯠáááºááŸááºááá¯ááºáááº-
- Volume ááᯠ- PVC ááŸáá·áº SC ááᯠá¡áá¯á¶ážááŒá¯á PV á ááœááºáááºá
áœá¬ ááŸá¬áá°ááŸá¯ááᯠááœáá·áºááŒá¯áááºá á¡á
ááá¯ááºážááœááºá á€áá¯ááºáá±á¬ááºáá»ááºááẠCCM á á¡á
áááºá¡ááá¯ááºážááŒá
áºáá±á¬áºáááºáž áááºážá ááŒá®ážáá¬ážááŸá¯ááºááœá±ážááŸá¯ááŒá±á¬áá·áº áááºážááᯠáá®ážááŒá¬ážááá±á¬áá»ááºáá
áºáá¯ááŒá
áºááá·áº Container Storage Interface (CSI) ááá¯á· ááŒá±á¬ááºážááœáŸá±á·áá²á·áááºá CSI á¡ááŒá±á¬ááºáž áá
áºááŒáááºáááºáá ááŒá±á¬áá°ážáá«áááºá
áá±ážáá¬ážáá²á·ááẠááŒá®ážáá±á¬á· ááŒá±á¬áá²á·áááá¯áá²áááŒáá·áºáá»ááá²á·ááẠCSI áá¬ááºáá±á¬ááºážá
ááááºáá cloud ááŸáá·áºá¡ááŒááºá¡ááŸááºáá¯á¶á·ááŒááºáá±á¬áá¯ááºá¡á¬ážáá¯á¶ážááẠKubernetes ááá±á¬áá»ááºáá¡ááá Git ááá¯ááŸá±á¬ááºááŸá¯ááœááºáááºááŸáááẠk8s.io/kubernetes/pkg/cloudprovider/providers
áá«áá±ááá·áº ááŒá®ážáá¬ážáá²á· code base áá²á· á¡áá¯ááºáá¯ááºááᬠá¡áááºáááŒá±áá¬ááŒá±á¬áá·áº áá«ááᯠá
áœáá·áºááœáŸááºááá¯á· áá¯á¶ážááŒááºáá²á·áá«áááºá á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ á¡áá±á¬ááºážá¡á¬ážáá¯á¶ážááᯠáá±áá¬ááœáŸá±á·ááŒá®ážáá«ááŒá®á
CSI áá²á·ááá¯á·áááºá ááŒá®ážáá¬ážáá±á¬ cloud áááºáá±á¬ááºááŸá¯áá±ážáá°áá»á¬ážááẠKubernetes ááœáẠcloud áá»á¬ážááᯠááœáŸááºážááá¯ážááẠáááºážááá¯á·á CCM áá»á¬ážááᯠáá®ááá¯ááºážáá¯ááºáá¬ážááŒá®ážááŒá áºáááºá áá±ážááœááºážáá°ááœáẠCCM áááŸááá±á¬áºáááºáž API ááŸáá áºááá·áº ááá¯á¡ááºáá±á¬ áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠáááŸááá«áá CCM ááᯠáááºááá¯ááºááá¯áẠá¡áá±á¬ááºá¡áááºáá±á¬áºááá¯ááºáá«áááºá
áááºáááá¯ááºááá¯áẠCCM áá¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááá¯áá±ážáááºá á¡áá±á¬ááºá¡áááºáá±á¬áºáááºáá¯á¶áá±á¬ááºáááºá
Ð
á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯
áááºáž áá®ááᯠáááºááá¯áá±á¬ááºáá¬áá¬áá²á
áá»áœááºá¯ááºááá¯á·ááẠááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ (ááá¯á·ááá¯ááºá á¡áá¯á¶ážááŒá¯áááºáááº) ááŒáá·áº á
áááºáá²á·áááºá
ááá¯á·áá±á¬áº á€á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááœáẠáá»áœááºá¯ááºááá¯á· ááœá²ááŸá¬ážáá±áá«áááºá
- JWT IAM ááá¯áááºááŸáááá·áº á á áºááŸááºááŒá±á¬ááºážá¡áá±á¬ááºá¡áá¬ážááŒááŒááºážá
- áááºáá±á¬ááºááŸá¯ááááºážáá»á¯ááºáááááá¬áá¶á·ááá¯ážááŸá¯á
á á¬áá±ážááá¬áá²á· ááá±á¬áá°áááºá (ááá áºáááº) Telegram ááœááºá áá»áœááºá¯ááºááá¯á·ááẠyandex-cloud-controller-manager ááá¯áááºážááœá²ááŒá®áž áá»á±á¬ááºáá¯á¶ážáá±áá±á¬áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠáááºááá·áºáá«áááºá
á¡áááá¡ááºá¹áá«áááºáá»á¬áž
áááºááŸáááœááºá CCM ááẠá¡á±á¬ááºáá«á¡ááºáá¬áá±á·á áºáá»á¬ážááᯠáá¶á·ááá¯ážáá±ážáááº-
- áá áºá ááºáá»á¬áž;
- áá¯ááº;
- LoadBalancer.
á¡áá¬áááºááœááºá Yandex.Cloud ááẠá¡ááá·áºááŒáá·áº VPC á áœááºážáááºáá»á¬ážááŒáá·áº á áááºáá¯ááºáá±á¬ááºáá±á¬á¡áá«á áá»áœááºá¯ááºááá¯á·ááẠá¡ááºáá¬áá±á·á áºááᯠáá±á«ááºážááá·áºáá«áááºá áááºážááŒá±á¬ááºážáá»á¬áž.
á¡áááá áááºáá±á«áºááŸá¯á¡ááŒá ẠLoadBalancer
á¡á
ááá¯ááºážááœááºá áá»áœááºá¯ááºááá¯á·ááẠá¡ááŒá¬áž CCM á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯áá»á¬ážáá²á·ááá¯á· áá
áºá
á¯á¶áá
áºáá¯ááᯠáááºáá®ážááẠááŒáá¯ážá
á¬ážáá²á·áááºá LoadBalancer
О TargetGroup
áá°ááá¯ááºážá¡ááœáẠService
á¡áá»áá¯ážá¡á
á¬ážááŸáá·áºá¡áá° LoadBalancer
. ááá¯á·áá±á¬áºá Yandex.Cloud ááẠá
áááºáááºá
á¬ážá
áá¬áá±á¬ááºážááá·áº ááá·áºáááºáá»ááºááᯠááŸá¬ááœá±ááœá±á·ááŸááá²á·áááº- áááºá¡áá¯á¶ážáááŒá¯ááá¯ááºáá«á TargetGroups
áááºážáá¯á¶ááŸáá·áº Targets
(á¡ááœá² SubnetID
- IpAddress
).
ááá¯á·ááŒá±á¬áá·áºá áááºáá®ážáá¬ážáá±á¬ CCM á¡ááœááºážááœáẠá¡áá¬ááá¹áá¯áá»á¬áž ááŒá±á¬ááºážáá²ááœá¬ážáá±á¬á¡áá«ááœáẠááááºážáá»á¯ááºáááááá¬áá
áºáᯠá
áááºáááºá Node
virtual machine áá
áºáá¯á
á®ááŸá á¡ááºáá¬áá±á·á
áºá¡á¬ážáá¯á¶ážá á¡áá»ááºá¡áááºáá»á¬ážááᯠá
á¯áá±á¬ááºážááŒá®áž á¡áá»áá¯á·áá±á¬ áááºážááá¯á·áááá¯ááºááá¯ááºáá¬á¡ááá¯áẠáááºážááá¯á·ááᯠá¡á¯ááºá
á¯ááœá²á·áá«á NetworkID
á áááºáá®ážáááºá TargetGroup
á¡áá±á«áº NetworkID
ááŸáá·áº áááºá
ááºááŸá¯ááá¯áááºáž á
á±á¬áá·áºááŒáá·áºáááºá áá±á¬ááºááá¯ááºážááœáẠá¡áá¬ááá¹áá¯áá
áºáá¯ááᯠáááºáá®ážáá±á¬á¡áá« Service
á¡áá»áá¯ážá¡á
á¬ážááŸáá·áºá¡áá° LoadBalanacer
ááá¯ážááŸááºážá
áœá¬ááŒáá¯áááºáááºáá®ážáá¬ážáááºá TargetGroup
á¡áá
áºááá¯á· NetworkLoadBalanacer
'áá¶áááºá
áááºááá¯á áá¯á¶ážáááá²á
CCM ááẠKubernetes áá¬ážááŸááºáž 1.15 ááŸáá·áºá¡áááºááᯠáá¶á·ááá¯ážáá±ážáááºá á¡á
á¯á¡ááœá²á·áá
áºáá¯ááœááºá áááºážááá¯áá¯ááºáá±á¬ááºáááºá¡ááœááºá áááºážááẠá¡áá¶ááá¯á¡ááºáááºá --cloud-provider=external
áááºááŸááºáá¬ážáááºá true
kube-apiserverá kube-controller-managerá kube-scheduler ááŸáá·áº kubelets á¡á¬ážáá¯á¶ážá¡ááœááºá
áááºáááºááŸá¯á¡ááœáẠááá¯á¡ááºáá±á¬ á¡ááá·áºáá»á¬ážá¡á¬ážáá¯á¶ážááᯠáá¯á¶ááœáẠáá±á¬áºááŒáá¬ážáá«áááºá
CCM ááá¯á¡áá¯á¶ážááŒá¯áááºáááºáááºáááºážááá¯á¡ááºáááá·áºáááº-
-
áááºááŸáẠmanifest ááœáẠdirectory identifier (folder-id
) Yandex.Cloud; - Yandex.Cloud API ááŸáá·áº á¡ááŒááºá¡ááŸááºá¡áá»áá¯ážáááºáá±á¬ááºááŸá¯á¡ááœáẠáááºáá±á¬ááºááŸá¯á¡áá±á¬áá·áºá ááŒá±ááŒá¬áá»ááºáá²ááŸá¬
Secret
áááœáá·áºááŒá¯áá¬ážáá±á¬áá±á¬á·áá»á¬ážááᯠááœáŸá²ááŒá±á¬ááºážáá«á áááºáá±á¬ááºááŸá¯á¡áá±á¬áá·áºá០á á¬ááœááºá á¬áááºážáá»á¬ážááœááºáá±á¬áºááŒáá²á·áááºá áááºáá±á¬ááºááŸá¯á¡áá±á¬áá·áºáá áºáá¯áááºáá®ážáááºážááŸáá·áº áá±á¬á·áá»á¬ážááá°áááºážá
áááºážáá²á· á¡ááŒá¶ááŒá¯áá»ááºááœá±ááᯠáááºáá¶áááŸááá²á·á¡ááœáẠáááºážááŒá±á¬ááºááááŸá¬áá«á
ááááºáá»á¬ážááá¯
áá»áœááºá¯ááºááá¯á·ááẠááŒá®ážáá²á·áá±á¬ ááŸá áºáááºá¡ááœááºáž Kubernetes á¡á á¯á¡áá±ážáá«ážáá¯ááœáẠá¡áá±á¬ááºá¡áááºáá±á¬áºáá²á·ááá·áº CCM ááᯠá¡áá¯á¶ážááŒá¯áá²á·ááŒá®áž áá¬ááá·áºáááœáẠáááºážááá¯á·á áá¶áá«áẠ20 ááá¯á· ááá¯ážáá»á²á·ááœá¬ážááẠá á®á ááºáá¬ážáá«áááºá ááŒá®ážáá¬ážááŒá®áž á¡áá±ážááŒá®ážáá±á¬ K8s áááºáááºááŸá¯áá»á¬ážá¡ááœáẠCCM ááᯠáá±á¬áá±á¬ááẠáá»áœááºá¯ááºááá¯á· á¡ááŒá¶ááŒá¯áá¬ážááŒááºážáááŸááá«á
CSI ááá á¹á áá²á·ááá¯á·áááºá Yandex developer áá»á¬ážááẠá€ááá±á¬áá»ááºá ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááŸáá·áº áá¶á·ááá¯ážááŸá¯áá»á¬ážááᯠááá°áá«á áá»áœááºá¯ááºááá¯á· áááºážááŒá±á¬ááºáááá«ááẠ- áá»áœááºá¯ááºááá¯á·ááŸáá·áº ááá¯ááá¯áááºááá¯ááºááá·áº á¡áá¯ááºáá»á¬ážááᯠááá¯ááºááœááºááŒá±ááŸááºážáááºá¡ááœáẠáááºážááá¯á·á áá±á¬ááºážááá¯áá»ááºá¡á ááá¯ááŸá±á¬ááºáááºážááᯠááœáŸá²ááŒá±á¬ááºážááẠá¡ááá·áºááŸááá«áááºá
PS
áá»áœááºá¯ááºááá¯á·áááá±á¬á·ááºááœááºáááºážáááºáá«
- «
Yandex.Cloud á¡ááœáẠKubernetes ááœáẠCSI driver ááᯠáá®ááœááºáá¬ááœáẠáá»áœááºá¯ááºááá¯á·áá¡ááœá±á·á¡ááŒá¯á¶ "; - «
Kubernetes á¡á á¯á¡áá±ážááᯠááŒááºáááºááẠááœááºáá°ááŒá®áž á¡áááºááŒá±áá«ááá¬ážá addon-operator ááá¯ááŒá±ááŒá¬ááŒááºážá "; - «
Kubernetes ááᯠááá¯ážáá»á²á·ááŒááºážááŸáá·áº ááŒáá·áºá áœááºááŒááºáž (ááŒááºáááºáá¯á¶ážáááºááŒááºážááŸáá·áº áá®áá®ááᯠá¡á á®áááºáá¶á á¬) "á
source: www.habr.com