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