Developing with Kind

Kind is a tool to quickly provision Kubernetes clusters locally using nested docker containers with no requirement for virtual machines. These clusters can be easily created and destroyed and are useful for simple testing for development.

To setup the development cluster and building cert-manager you will need the following installed:

Start Kind Cluster

To start the development cluster run the following:

export K8S_VERSION=1.19 # optional: this allows you to test different Kubernetes versions
$ ./devel/cluster/create.sh

NOTE: this script will setup the kind cluster using a specific service CIDR to make e2e tests able to use certain fixed IPs

Once complete, the cluster is able to be interacted with kubectl.

Building and deploying cert-manager

You can build a development build of cert-manager that will be loaded into your kind cluster.

$ ./devel/addon/certmanager/install.sh 

NOTE: DNS solver is set to the internal bind server for running tests, make sure to also run ./devel/addon/bind/install.sh if you need DNS01 to work.

The images are now available on the cluster with the following tags:

quay.io/jetstack/cert-manager-controller:build
quay.io/jetstack/cert-manager-cainjector:build
quay.io/jetstack/cert-manager-acmesolver:build
quay.io/jetstack/cert-manager-webhook:build

Generating CRDs

After changes have been made to the API, the Custom Resource Definitions can be re-generated with the following command:

./hack/update-crds.sh

Destroy the Cluster

To clean up the development cluster run the following kind command:

$ kind delete cluster
Last modified September 29, 2020: Apply suggestions from code review (7670d00)