Skip to content

clmng_ops

Ruben S. Montero edited this page Feb 11, 2025 · 6 revisions

CAPONE Quick Deployment Overview

In this section, we will focus on the rapid deployment of CAPONE, assuming that a management cluster has already been deployed and is accessible, the VNF and K8s node appliances have been downloaded, and the networking setup is correctly defined.

For a detailed, step-by-step guide on how to deploy CAPONE from scratch, please refer to the Installation and Requirements section.

Initialize the Management Cluster

To initialize the management cluster, run the following command:

$ clusterctl init --config=clusterctl-config.yaml --infrastructure=opennebula:v0.1.0

The system will proceed with the following installation process:

Fetching providers
Installing cert-manager version="v1.16.1"
Waiting for cert-manager to be available...
Installing provider="cluster-api" version="v1.9.4" targetNamespace="capi-system"
Installing provider="bootstrap-kubeadm" version="v1.9.4" targetNamespace="capi-kubeadm-bootstrap-system"
Installing provider="control-plane-kubeadm" version="v1.9.4" targetNamespace="capi-kubeadm-control-plane-system"
Installing provider="infrastructure-opennebula" version="v0.1.0" targetNamespace="capone-system"

Your management cluster has been initialized successfully!

You can now create your first workload cluster by running the following:

  clusterctl generate cluster [name] --kubernetes-version [version] | kubectl apply -f -

Once the management cluster is successfully initialized, you can move on to creating your first workload cluster.

Create a workload cluster

First, set the environment variables for OpenNebula cluster configuration:

export CCM_IMG=ghcr.io/opennebula/cloud-provider-opennebula:latest
export CLUSTER_NAME=one
export ONE_XMLRPC=http://<OpenNebula cluster endpoint>:2633/RPC2
export ONE_AUTH=oneadmin:<password>
export CONTROL_PLANE_HOST=<PUBLIC_NETWORK IP>
export CONTROL_PLANE_MACHINE_COUNT=1
export WORKER_MACHINE_COUNT=2
export MACHINE_TEMPLATE_NAME=capone131
export ROUTER_TEMPLATE_NAME=capone131-vr
export PUBLIC_NETWORK_NAME=service
export PRIVATE_NETWORK_NAME=private

Then, generate the cluster configuration and apply it using kubectl:

clusterctl generate cluster one --infrastructure=opennebula --config=clusterctl-config.yaml | kubectl apply -f -

Retrieve the kubeconfig for the cluster:

clusterctl get kubeconfig one > kubeconfig.yaml

Additionally, you may opt to add a Container Network Interface (CNI) to your workload cluster. For instance, to deploy Flannel:

kubectl --kubeconfig <(clusterctl get kubeconfig one) apply -f test/e2e/data/cni/kube-flannel.yml

Finally, verify the nodes in the cluster:

$ kubectl --kubeconfig=kubeconfig.yaml get node
NAME                   STATUS   ROLES           AGE     VERSION
one-g89nf              Ready    control-plane   5m      v1.31.4
one-md-0-cmq95-djz7d   Ready    <none>          4m27s   v1.31.4
one-md-0-cmq95-kjrrm   Ready    <none>          4m12s   v1.31.4
Clone this wiki locally