$ mkdir memcached-operator
To demonstrate the basics of setting up and running a Go-based Operator using tools and libraries provided by the Operator SDK, Operator developers can build an example Go-based Operator for Memcached, a distributed key-value store, and deploy it to a cluster.
Logged into an OKD 4.7 cluster with oc
with an account that has cluster-admin
permissions
To allow the cluster pull the image, the repository where you push your image must be set as public, or you must configure an image pull secret.
You can build and deploy a simple Go-based Operator for Memcached by using the Operator SDK.
Create a project.
Create your project directory:
$ mkdir memcached-operator
Change into the project directory:
$ cd memcached-operator
Run the operator-sdk init
command
to initialize the project:
$ operator-sdk init \
--domain=example.com \
--repo=github.com/example-inc/memcached-operator
The command uses the Go plug-in by default.
To enable your Go-based Operator to run on OKD, edit the config/manager/manager.yaml
file and replace the following line:
runAsUser: 65532
with:
runAsNonRoot: true
This step is a temporary workaround required for Go-based Operators only. For more information, see BZ#1914406. |
Create an API.
Create a simple Memcached API:
$ operator-sdk create api \
--resource=true \
--controller=true \
--group cache \
--version v1 \
--kind Memcached
Build and push the Operator image.
Use the default Makefile
targets to build and push your Operator. Set IMG
with a pull spec for your image that uses a registry you can push to:
$ make docker-build docker-push IMG=<registry>/<user>/<image_name>:<tag>
Run the Operator.
Install the CRD:
$ make install
Deploy the project to the cluster. Set IMG
to the image that you pushed:
$ make deploy IMG=<registry>/<user>/<image_name>:<tag>
Create a sample custom resource (CR).
Create a sample CR:
$ oc apply -f config/samples/cache_v1_memcached.yaml \
-n memcached-operator-system
Watch for the CR to reconcile the Operator:
$ oc logs deployment.apps/memcached-operator-controller-manager \
-c manager \
-n memcached-operator-system
Clean up.
Run the following command to clean up the resources that have been created as part of this procedure:
$ make undeploy
See Operator SDK tutorial for Go-based Operators for a more in-depth walkthrough on building a Go-based Operator.