scaleway-cloud-controller-manager is the Kubernetes cloud controller manager implementation
(or out-of-tree cloud-provider) for Scaleway.
External cloud providers were introduced as an Alpha feature in Kubernetes 1.6. They are Kubernetes (master) controllers that implement the cloud-provider specific control loops required for Kubernetes to function. Read more about kubernetes cloud controller managers in the kubernetes documentation.
This is the cloud controller manager that is deployed by default on Scaleway Kapsule (Scaleway Managed Kubernetes) clusters, but it can also be deployed on self-managed Kubernetes clusters running on Scaleway Instances or Elastic Metal servers.
scaleway-cloud-controller-manager implements:
- Instances/InstancesV2 interface - updates nodes with cloud provider specific labels and addresses, also deletes kubernetes nodes when deleted from the cloud-provider. Supports both Scaleway Instances and Elastic Metal (baremetal) servers.
- LoadBalancer interface - responsible for creating load balancers when a service
of
type: LoadBalanceris created in Kubernetes. See the available annotations and examples. - Zone interface - makes Kubernetes aware of the failure domain of each node.
It also synchronizes Scaleway tags to Kubernetes labels and taints on nodes.
There are two types of branches:
masterwhich is the main branchrelease-x.ywhich are the release branches. Each branch is built against Kubernetes 1.y
Most of the PRs on master will be backported to the supported release-x.y branches.
Each release will be cut from the release-x.y branch, and will be in the form of x.y.z where z will be the Scaleway Cloud Controller patch version.
Learn more about running scaleway-cloud-controller-manager here!
WARNING: This cloud controller manager is installed by default on Scaleway Kapsule (Scaleway Managed Kubernetes), you don't have to do it yourself or it might cause conflicts.
The CCM is configured entirely through environment variables (Scaleway credentials, region/zone, and behavior tuning). See the configuration reference for the full list.
- Getting started
- Configuration (environment variables)
- LoadBalancer annotations
- LoadBalancer examples
- Tag, label and taint synchronization
- Development setup
You can build the CCM executable using the following commands:
make compileYou can build a local docker image for your current architecture using the following command.
Set REGISTRY to your own registry/namespace to avoid building into the scaleway namespace:
REGISTRY=[registry] make docker-buildThe unit tests do not require a Kubernetes cluster or Scaleway credentials:
make testIf you are looking for a way to contribute please read CONTRIBUTING.
Participation in the Kubernetes community is governed by the CNCF Code of Conduct.
We love feedback. Feel free to reach us on Scaleway Slack community, we are waiting for you on #k8s.
You can also join the official Kubernetes slack on #scaleway-k8s channel
You can also raise an issue if you think you've found a bug.