Quickstart for Go-based Operators
A simple set of instructions to set up and run a Go-based operator.
This guide walks through an example of building a simple memcached-operator using tools and libraries provided by the Operator SDK.
Prerequisites
- Go through the installation guide.
- Make sure your user is authorized with
cluster-admin
permissions. - An accessible image registry for various operator images (ex. hub.docker.com,
quay.io) and be logged in to your command line environment.
example.com
is used as the registry Docker Hub namespace in these examples. Replace it with another value if using a different registry or namespace.- Authentication and certificates if the registry is private or uses a custom CA.
Steps
- Create a project directory for your project and initialize the project:
mkdir memcached-operator
cd memcached-operator
operator-sdk init --domain example.com --repo github.com/example/memcached-operator
Note If your local environment is Apple Silicon (darwin/arm64
) use the go/v4
plugin which provides support for this platform by adding to the init subCommand the flag --plugins=go/v4
- Create a simple Memcached API:
operator-sdk create api --group cache --version v1alpha1 --kind Memcached --resource --controller
- Build and push your operator’s image:
make docker-build docker-push IMG="example.com/memcached-operator:v0.0.1"
OLM deployment
- Install OLM:
operator-sdk olm install
- Bundle your operator, then build and push the bundle image (defaults to
example.com/memcached-operator-bundle:v0.0.1
):
make bundle IMG="example.com/memcached-operator:v0.0.1"
make bundle-build bundle-push BUNDLE_IMG="example.com/memcached-operator-bundle:v0.0.1"
- Run your bundle. If your bundle image is hosted in a registry that is private and/or has a custom CA, these configuration steps must be complete.
operator-sdk run bundle <some-registry>/memcached-operator-bundle:v0.0.1
- Create a sample Memcached custom resource:
$ kubectl apply -f config/samples/cache_v1alpha1_memcached.yaml
memcached.cache.example.com/memcached-sample created
- Uninstall the operator:
operator-sdk cleanup memcached-operator
Direct deployment
- Deploy your operator:
make deploy IMG="example.com/memcached-operator:v0.0.1"
- Create a sample Memcached custom resource:
$ kubectl apply -f config/samples/cache_v1alpha1_memcached.yaml
memcached.cache.example.com/memcached-sample created
- Uninstall the operator:
make undeploy
Run locally (outside the cluster)
This is recommended ONLY for development purposes
- Run the operator:
make install run
- In a new terminal tab/window, create a sample Memcached custom resource:
$ kubectl apply -f config/samples/cache_v1alpha1_memcached.yaml
memcached.cache.example.com/memcached-sample created
- Stop the operator by pressing
ctrl+c
in the terminal tab or window the operator is running in
Next Steps
Read the full tutorial for an in-depth walkthrough of building a Go operator.
Last modified May 29, 2024: Update quickstart.md (#6732) (3366586c)