Kubernetes Cloud Controller Manager for Linode
What does it do?
The Linode Cloud Controller Manager (CCM) creates a fully supported Kubernetes experience on Linode.
- Load balancers, Linode NodeBalancers, are automatically deployed when a Kubernetes Service of type "LoadBalancer" is deployed. This is the most reliable way to allow services running in your cluster to be reachable from the Internet.
- Linode hostnames and network addresses (private/public IPs) are automatically associated with their corresponding Kubernetes resources, forming the basis for a variety of Kubernetes features.
- Nodes resources are put into the correct state when Linodes are shut down, allowing pods to be appropriately rescheduled.
- Nodes are annotated with the Linode region, which is the basis for scheduling based on failure domains.
Kubernetes Supported Versions
Upstream Documentation Including Deployment Instructions
Generating a Manifest for Deployment
Use the script located at
./hack/deploy/generate-manifest.sh to generate a self-contained deployment manifest for the Linode CCM. Two arguments are required.
The first argument must be a Linode APIv4 Personal Access Token with all permissions. (https://cloud.linode.com/profile/tokens)
The second argument must be a Linode region. (https://api.linode.com/v4/regions)
$ ./generate-manifest.sh $LINODE_API_TOKEN us-east
This will create a file
ccm-linode.yaml which you can use to deploy the CCM.
Upstream Developer Documentation
Building the Linode Cloud Controller Manager
Some of the Linode Cloud Controller Manager development helper scripts rely on a fairly up-to-date GNU tools environment, so most recent Linux distros should work just fine out-of-the-box.
The Linode Cloud Controller Manager is written in Google's Go programming language. Currently, the Linode Cloud Controller Manager is developed and tested on Go 1.8.3. If you haven't set up a Go development environment, please follow these instructions to install Go.
On macOS, Homebrew has a nice package
brew install golang
$ go get github.com/linode/linode-cloud-controller-manager $ cd $(go env GOPATH)/src/github.com/linode/linode-cloud-controller-manager
Install Dev tools
To install various dev tools for Pharm Controller Manager, run the following command:
Use the following Make targets to build and run a local binary
$ make build $ make run # You can also run the binary directly to pass additional args $ dist/linode-cloud-controller-manager run
Linode Cloud Controller Manager uses Dep to
manage dependencies. Dependencies are already checked in the
If you want to update/add dependencies, run:
$ dep ensure
Building Docker images
To build and push a Docker image, use the following make targets.
# Set the repo/image:tag with the TAG environment variable # Then run the docker-build make target $ IMG=linode/linode-cloud-controller-manager:canary make docker-build # Push Image $ IMG=linode/linode-cloud-controller-manager:canary make docker-push
Then, to run the image
$ docker run -ti linode/linode-cloud-controller-manager:canary
Want to improve the linode-cloud-controller-manager? Please start here.