To create Kubernetes clusters, Konvoy uses Cluster API (CAPI) controllers. These controllers run on a Kubernetes cluster. To get started, you need a bootstrap cluster. By default, Konvoy creates a bootstrap cluster for you in a Docker container using the Kubernetes-in-Docker (KIND) tool.
Prerequisites
Before you begin, you must:
- Complete the steps in Prerequisites.
- Ensure the
dkp
binary can be found in your $PATH.
Bootstrap Cluster Lifecycle Services
-
If an HTTP proxy is required for the bootstrap cluster, set the local
http_proxy
,https_proxy
, andno_proxy
environment variables. They are copied into the bootstrap cluster. -
Create a bootstrap cluster:
dkp create bootstrap --kubeconfig $HOME/.kube/config
✓ Creating a bootstrap cluster ✓ Initializing new CAPI components
Konvoy creates a bootstrap cluster using KIND as a library. Konvoy then deploys the following Cluster API providers on the cluster:
- Core Provider
- Azure Infrastructure Provider
- kubeadm Bootstrap Provider
- kubeadm ControlPlane Provider
Konvoy waits until the controller-manager and webhook deployments of these providers are ready. List these deployments using this command:
kubectl get --all-namespaces deployments -l=clusterctl.cluster.x-k8s.io
NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE capa-system capa-controller-manager 1/1 1 1 69s capi-kubeadm-bootstrap-system capi-kubeadm-bootstrap-controller-manager 1/1 1 1 71s capi-kubeadm-control-plane-system capi-kubeadm-control-plane-controller-manager 1/1 1 1 70s capi-system capi-controller-manager 1/1 1 1 73s cappp-system cappp-controller-manager 1/1 1 1 66s capv-system capv-controller-manager 1/1 1 1 65s capz-system capz-controller-manager 1/1 1 1 67s cert-manager cert-manager 1/1 1 1 16m cert-manager cert-manager-cainjector 1/1 1 1 16m cert-manager cert-manager-webhook 1/1 1 1 16m
(Optional) Create identity secret for Azure
If your bootstrap cluster resides on a Virtual machine inside Azure, create an identity secret that uses the cappz-controller:
export AZURE_CLUSTER_IDENTITY_SECRET_NAME="cluster-identity-secret"
export CLUSTER_IDENTITY_NAME="cluster-identity"
export AZURE_CLUSTER_IDENTITY_SECRET_NAMESPACE="default"
kubectl create secret generic "${AZURE_CLUSTER_IDENTITY_SECRET_NAME}" --from-literal=clientSecret="${AZURE_CLIENT_SECRET}"
When complete, move on to the Create a New Cluster section.