Running the memcached Operator

Once the CRD is registered, there are two ways to run the Operator:

  • As a Pod inside a Kubernetes cluster
  • As a Go program outside the cluster using Operator-SDK. This is great for local development of your Operator.

In this lesson, you will run the Operator as a Go program outside of the cluster using operator-sdk and your credentials inside kubeconfig.

Once running, the command will block the current terminal session. You can continue interacting with the cluster by opening a new terminal window.

Like earlier steps, running the Operator in this local test is driven by a make target, in this case make run.

WATCH_NAMESPACE=myproject make run

In a new terminal, inspect the Custom Resource manifest:

cd memcached-operator
cat config/samples/cache_v1alpha1_memcached.yaml

Ensure your `kind: Memcached` Custom Resource (CR) is updated with `spec.size`

apiVersion: cache.example.com/v1alpha1
kind: Memcached
metadata:
  name: memcached-sample
spec:
  size: 3

Ensure your kubectl commands in the new terminal target your myproject namespace:

kubectl config set-context --current --namespace=myproject

Deploy your PodSet Custom Resource to the cluster:

kubectl create -f config/samples/cache_v1alpha1_memcached.yaml

Verify the memcached exists with kubectl get memcached, and check that the operator has created the 3 pods you specified with kubectl get pods.

Verify that status shows the name of the pods currently owned by the Memcached:

kubectl get memcached memcached-sample -o yaml

A custom resource can be addressed and manipulated in the usual ways, like any other Kubernetes resource. For example,  you can increase the number of replicas owned by the memcached custom resource with the standard kubectl patch technique:

kubectl patch memcached memcached-sample --type='json' -p '[{"op": "replace", "path": "/spec/size", "value":5}]'

One more invocation of kubectl get pods should show 5 of them running.