cloudstack-kubernetes-provider icon indicating copy to clipboard operation
cloudstack-kubernetes-provider copied to clipboard

Fix providerID handling + label sanitizing

Open hrak opened this issue 1 year ago • 1 comments

This PR changes the way the CloudStack Cloud Controller Manager handles kubelet providerID into a more standardized way that is more common around several other CCM's like the Openstack or vSphere one. The changes were needed to make node labels work again.

The providerID is configured by either setting the kubelet command line flag --provider-id (deprecated) or using the providerID setting in kubelet config yaml. The format of the value is <providername>://region/instance-id so in case of CloudStack for a platform without region f.e. : cloudstack:///4e7689bc-99ea-43d8-8c37-5ff511c01665. With the region being parsed from the providerID, this PR also addresses #39

It also implements the two interface methods InstanceShutdownByProviderID and InstanceShutdown.

And it fixes the way node labels are sanitized. The old regex approach would in some cases strip off allowed characters, for example zone name Development-Internal would turn into DevelopmentInternal, although the - is allowed in label values. The new approach converts all chars that are not allowed in a label value to underscores:

Development-Internal -> Development-Internal Small Instance (4 GB / 2 CPU) -> Small_Instance__4_GB___2_CPU

hrak avatar May 05 '23 06:05 hrak

I realize that these changes should probably be reflected in the README. Will address that shortly.

hrak avatar May 05 '23 06:05 hrak