Skip to content
Branch: master
Find file History
Type Name Latest commit message Commit time
Failed to load latest commit information.
clientcmd Add CI linter (#699) Jan 28, 2019
clusterdeployer Enable setting profile for minikube bootstrap cluster. (#845) Mar 22, 2019
providercomponents Use pkg/errors instead of fmt.Errorf (#690) Jan 19, 2019
testdata Deleted cloud providers for clusterctl help. (#829) Mar 20, 2019
validation Added bootstrap-only components to clusterctl as an option (#790) Mar 1, 2019
main.go Migrate to kubebuilder (#494) Oct 4, 2018
main_integration_test.go Use pkg/errors instead of fmt.Errorf (#690) Jan 19, 2019


clusterctl is the SIG-cluster-lifecycle sponsored tool that implements the Cluster API.

Read the experience doc here. To gain viewing permissions, please join either the kubernetes-dev or kubernetes-sig-cluster-lifecycle google group.

Getting Started

Due to the limitations described below, you must currently compile and run a clusterctl binary from your chosen provider implementation rather than using the binary from this repository.


  1. Install minikube
  2. Install a driver for minikube. For Linux, we recommend kvm2. For MacOS, we recommend VirtualBox.
  3. Build the clusterctl tool
$ git clone $GOPATH/src/
$ cd $GOPATH/src/
$ go build


clusterctl can only use a provider that is compiled in. As provider specific code has been moved out of this repository, running the clusterctl binary compiled from this repository isn't particularly useful.

There is current work ongoing to rectify this issue, which centers around removing the ProviderDeployer interface from the clusterdeployer package. The two tracking issues for removing the two functions in the interface are and

Creating a cluster

  1. Create the cluster.yaml, machines.yaml, provider-components.yaml, and addons.yaml files configured for your cluster. See the provider specific templates and generation tools for your chosen provider implementation.

  2. Create a cluster:

    ./clusterctl create cluster --provider <provider> -c cluster.yaml -m machines.yaml -p provider-components.yaml -a addons.yaml

To choose a specific minikube driver, please use the --vm-driver command line parameter. For example to use the kvm2 driver with clusterctl you would add --vm-driver kvm2

Additional advanced flags can be found via help.

./clusterctl create cluster --help

Interacting with your cluster

Once you have created a cluster, you can interact with the cluster and machine resources using kubectl:

$ kubectl --kubeconfig kubeconfig get clusters
$ kubectl --kubeconfig kubeconfig get machines
$ kubectl --kubeconfig kubeconfig get machines -o yaml

Scaling your cluster

You can scale your cluster by adding additional individual Machines, or by adding a MachineSet or MachineDeployment and changing the number of replicas.

Upgrading your cluster


Node repair


Deleting a cluster

When you are ready to remove your cluster, you can use clusterctl to delete the cluster:

./clusterctl delete cluster --kubeconfig kubeconfig

Please also check the documentation for your provider implementation to determine if any additional steps need to be taken to completely clean up your cluster.


If you are interested in adding to this project, see the contributing guide for information on how you can get involved.

You can’t perform that action at this time.