Skip to content

Instantly share code, notes, and snippets.

@jmrodri
Last active October 7, 2020 16:32
Show Gist options
  • Save jmrodri/26ba180c209b2ebbe847241a76cf908d to your computer and use it in GitHub Desktop.
Save jmrodri/26ba180c209b2ebbe847241a76cf908d to your computer and use it in GitHub Desktop.
deploy bundle with run bundle

operator-sdk run bundle demo

create a simple operator

mkdir demo-zeus-operator
cd demo-zeus-operator
operator-sdk version
operator-sdk init --domain=zeusville.com --repo=github.com/YOURGITHUBREPO/demo-zeus-operator
operator-sdk create api --group test --version v1 --kind Test --controller --resource

edit makefile

Configure the envtest to allow building the operator image. Alternatively, remove the test target from the docker-build target.

# Run tests
ENVTEST_ASSETS_DIR=$(shell pwd)/testbin
test: generate fmt vet manifests
	mkdir -p ${ENVTEST_ASSETS_DIR}
	test -f ${ENVTEST_ASSETS_DIR}/setup-envtest.sh || curl -sSLo ${ENVTEST_ASSETS_DIR}/setup-envtest.sh https://raw.githubusercontent.com/kubernetes-sigs/controller-runtime/master/hack/setup-envtest.sh
	source ${ENVTEST_ASSETS_DIR}/setup-envtest.sh; fetch_envtest_tools $(ENVTEST_ASSETS_DIR); setup_envtest_env $(ENVTEST_ASSETS_DIR); go test ./... -coverprofile cover.out

generate and build the bundle

First generate the bundle and fill out the information.

make bundle DEFAULT_CHANNEL=alpha IMG=docker.io/YOURDOCKERREPO/demo-zeus-operator:0.0.1

Display name: Demo Zeus Operator
description: Awesome demo operator.
provider name: example.com
relevant URL: nothing
keywords: awesome,demo,zeus
maintainers: zeus:[email protected]

Now build the bundle image

make bundle-build BUNDLE_IMG=docker.io/YOURDOCKERREPO/demo-zeus-operator-bundle:0.0.1
docker push docker.io/YOURDOCKERREPO/demo-zeus-operator-bundle:0.0.1

build and push the operator image

make docker-build IMG=docker.io/YOURDOCKERREPO/demo-zeus-operator:0.0.1
make docker-push IMG=docker.io/YOURDOCKERREPO/demo-zeus-operator:0.0.1

deploy olm in kind cluster

kind delete cluster
kind create cluster
operator-sdk olm install

run your bundle

operator-sdk run bundle docker.io/YOURDOCKERREPO/demo-zeus-operator-bundle:0.0.1
INFO[0008] Successfully created registry pod: docker-io-jmrodri-demo-zeus-operator-bundle-0-0-1                                                               
INFO[0008] Created CatalogSource: demo-zeus-operator-catalog 
INFO[0008] OperatorGroup "operator-sdk-og" created                                                                                                            
INFO[0008] Created Subscription: demo-zeus-operator-v0-0-1-sub                 
INFO[0019] Approved InstallPlan install-krv7q for the Subscription: demo-zeus-operator-v0-0-1-sub 
INFO[0019] Waiting for ClusterServiceVersion "default/demo-zeus-operator.v0.0.1" to reach 'Succeeded' phase                                                   
INFO[0019]   Waiting for ClusterServiceVersion "default/demo-zeus-operator.v0.0.1" to appear                                                                  
INFO[0031]   Found ClusterServiceVersion "default/demo-zeus-operator.v0.0.1" phase: Pending 
INFO[0032]   Found ClusterServiceVersion "default/demo-zeus-operator.v0.0.1" phase: Installing 
INFO[0040]   Found ClusterServiceVersion "default/demo-zeus-operator.v0.0.1" phase: Succeeded 
INFO[0040] OLM has successfully installed "demo-zeus-operator.v0.0.1"

cleanup your bundle

Please note that this cleanup will remove the CRD and thus remove all CRs.

operator-sdk cleanup demo-zeus-operator   
INFO[0000] subscription "demo-zeus-operator-v0-0-1-sub" deleted 
INFO[0000] customresourcedefinition "tests.test.zeusville.com" deleted 
INFO[0000] clusterserviceversion "demo-zeus-operator.v0.0.1" deleted 
INFO[0000] clusterrole "demo-zeus-operator-metrics-reader" deleted 
INFO[0000] role "demo-zeus-operator.v0.0.1-default-bbd496994" deleted 
INFO[0000] rolebinding "demo-zeus-operator.v0.0.1-default-bbd496994" deleted 
INFO[0000] catalogsource "demo-zeus-operator-catalog" deleted 
INFO[0000] operatorgroup "operator-sdk-og" deleted      
INFO[0000] Operator "demo-zeus-operator" uninstalled    
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment