Quickstart for Helm-based Operators
This guide walks through an example of building a simple nginx-operator powered by Helm using tools and libraries provided by the Operator SDK.
operator-sdkand its prequisites.
- Access to a Kubernetes v1.16.0+ cluster.
Create a project
Create and change into a directory for your project. Then call
with the Helm plugin to initialize the base project layout:
mkdir nginx-operator cd nginx-operator operator-sdk init --plugins=helm
Create an API
Create a simple nginx API using Helm’s built-in chart boilerplate (from
operator-sdk create api --group demo --version v1 --kind Nginx
Build and push the operator image
Use the built-in Makefile targets to build and push your operator. Make
sure to define
IMG when you call
make docker-build docker-push IMG=<some-registry>/<project-name>:<tag>
NOTE: To allow the cluster pull the image the repository needs to be set as public or you must configure an image pull secret.
Run the operator
Install the CRD and deploy the project to the cluster. Set
make deploy to use the image you just pushed:
make install make deploy IMG=<some-registry>/<project-name>:<tag>
Create a sample custom resource
Create a sample CR:
kubectl apply -f config/samples/demo_v1_nginx.yaml
Watch for the CR to trigger the operator to deploy the nginx deployment and service:
kubectl get all -l "app.kubernetes.io/instance=nginx-sample"
Delete the CR to uninstall the release:
kubectl delete -f config/samples/demo_v1_nginx.yaml
make undeploy to uninstall the operator and its CRDs:
Read the tutorial for an in-depth walkthough of building a Helm operator.