Bobcares

Integrating Vultr Cloud Controller Manager (CCM) with Kubernetes

by | Jan 30, 2025

Learn how to integrate Vultr CCM with Kubernetes. Our Vultr Support team is here to help you with your questions and concerns.

Integrating Vultr Cloud Controller Manager (CCM) with Kubernetes

The Vultr CCM is a powerful tool that easily integrates Vultr’s cloud features into our Kubernetes cluster.

Integrating Vultr Cloud Controller Manager (CCM) with KubernetesToday, we will look at the key functionalities, development setup, and deployment process of the Vultr CCM.

Key Features of Vultr CCM

  1. The Vultr CCM assigns Vultr instance hostnames, regions, PlanIDs, and public/private IPs to node resources. It also ensures that nodes are properly managed when shut down or removed, allowing Kubernetes to reschedule pods efficiently.
  2. When a LoadBalancer service is deployed, Vultr Load Balancers are automatically provisioned. Our experts recommend avoiding manual modifications to Vultr Load Balancers. If changes are made directly to the Load Balancer, the CCM will revert them during its state validation process. Instead, all modifications should be made through the Kubernetes service object.

Development Setup

The prerequisites include:

  • Go Version: Minimum `1.19.0` is required.
  • Dependencies: The Vultr CCM uses Go modules for dependency management.

Building the Binary

Since the Vultr CCM is designed to run inside a Kubernetes cluster, the binary must be built for Linux. We can achieve this using the following commands:

GOOS=linux GOARCH=amd64 go build -o dist/vultr-cloud-controller-manager 

Alternatively, we can use the provided Makefile:

make build-linux

This command builds the binary and outputs it to a `dist` folder. If we want to build the binary for our current OS, we can run:

make build

Building the Docker Image

Use the’ docker-build’ entry in the Makefile to build a Docker image of the Vultr Cloud Controller Manager. This requires the following two variables:

  • `VERSION`
  • `REGISTRY` (the Docker Hub registry name)

For example:

VERSION=v0.1.0 REGISTRY=vultr make docker-build

Alternatively, we can manually build the Docker image:

docker build . -t vultr-cloud-controller-manager

Running the Docker Image

Once the image is built, we can run it using:

docker run -ti vultr/vultr-cloud-controller-manager

Deploying to a Kubernetes Cluster

First, ensure the Kubernetes cluster is configured to interact with an external cloud provider.

To deploy the Vultr CCM, we need to apply two YAML files to our cluster:

  • Secret.yml:

    This file includes the region ID where we are deploying the cluster and the Vultr API key.

  • v0.X.X.yml:

    A preconfigured set of Kubernetes resources that facilitate the installation of the CCM.

Installing the Vultr CCM Helm Chart

  1. Add the Helm Chart Repository:

    helm repo add vultr https://vultr.github.io/helm-charts/

  2. Then, install the Chart:

    helm install my-vultr-ccm vultr/vultr-ccm --version 1.3.0

Deploying on AWS EKS

While the Vultr CCM is designed for Vultr’s infrastructure, we can deploy Helm charts on AWS EKS using Pulumi. Here’s a high-level overview:

  1. Use Pulumi’s EKS module to create a VPC, EKS cluster, and node groups.
  2. Then, set up `kubectl` to interact with the EKS cluster.
  3. Next, deploy the desired Helm chart using the `k8s.helm.v3.Chart` resource.

For example:

const eksCluster = new aws.eks.Cluster("my-cluster", { /* config */ });
const helmChart = new k8s.helm.v3.Chart("my-chart", {
chart: "nginx-ingress",
version: "1.0.0",
namespace: "default",
}, { provider: eksCluster.provider });

Replace `”nginx-ingress”` with the Helm chart we wish to deploy, such as `vultr-ccm` or its AWS equivalent.

[Need assistance with a different issue? Our team is available 24/7.]

Conclusion

With the above guide, we can integrate Vultr Cloud Controller Manager into your Kubernetes cluster and leverage its features for seamless cloud resource management.

In brief, our Support Experts demonstrated how to integrate Vultr CCM with Kubernetes.

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *

Never again lose customers to poor
server speed! Let us help you.