# start a kubernetes cluster
kind create clusterChange into directory for memcached-operator
mkdir memcached-operator
cd memcached-operatorInitialize and create new project
# create initial structure
$ operator-sdk init --domain ostrolabs.com --repo github.com/costrouc/memcached-operator
# create crds
$ operator-sdk create api --group cache --version v1alpha1 --kind Memcached --resource --controller
# edit api/v1alpha1/memcached_types.go
# update the generated code for resource type
$ make generate
# generate crd manifests
$ make manifests
# edit controllers/memcached_controller.go (replace all example.com with your domain)
# edit main.go
# regenerate crd manifests
$ make manifests
# edit the docker image name in Makefile use quay.io
# build docker image and push
$ make docker-build docker-pushDeploy the operator
make deployCheck that the operator successfully deployed
kubectl get pods -ANow deploy a custom memcached resource
# edit config/manager/manager.yaml
# env:
# - name: "MEMCACHED_IMAGE"
# value: "memcached:1.4.36-alpine"
# edit config/samples/cache_v1alpha1_memcached.yaml
kubectl apply -f config/samples/cache_v1alpha1_memcached.yaml
# you will see three memcached clusters start
kubectl delete kubectl delete memcached.cache.ostrolabs.com memcached-sampleNow redeployment should be reasonably simple on changes
# edit Makefile increment version/tag
$ make manifests
$ make docker-build docker-push
$ make deploy
$ kubectl apply -f config/samples/cache_v1alpha1_memcached.yaml
# you will see three memcached clusters start
$ kubectl delete kubectl delete memcached.cache.ostrolabs.com memcached-sample