Otterize Credentials Operator
July 15, 2024 · View on GitHub
Getting Started
You’ll need a Kubernetes cluster to run against. You can use KIND to get a local cluster for testing, or run against a remote cluster.
Note: Your controller will automatically use the current context in your kubeconfig file (i.e. whatever cluster kubectl cluster-info shows).
Running on the cluster
-
Install Instances of Custom Resources:
kubectl apply -f config/samples/ -
Build and push your image to the location specified by
IMG:make docker-build docker-push IMG=<some-registry>/credentials-operator:tag -
Deploy the controller to the cluster with the image specified by
IMG:make deploy IMG=<some-registry>/credentials-operator:tag
Uninstall CRDs
To delete the CRDs from the cluster:
make uninstall
Undeploy controller
UnDeploy the controller to the cluster:
make undeploy
How it works
This project aims to follow the Kubernetes Operator pattern
It uses Controllers which provides a reconcile function responsible for synchronizing resources untile the desired state is reached on the cluster
Test it out
-
Install a SPIRE server. You can use the SPIRE server from the helm-charts repository.
-
If you are running this locally against a SPIRE server, and did not install it using the Otterize all-in-one helm chart, then you need to create a SPIRE server entry for the operator:
kubectl exec -n spire spire-server-0 -- /opt/spire/bin/spire-server entry create \ -spiffeID spiffe://example.org/ns/default/sa/default \ -parentID spiffe://example.org/ns/spire/sa/spire-agent \ -selector k8s:ns:credentials-operator-system -admin -
Install the CRDs into the cluster:
make install -
Run your controller (this will run in the foreground, so switch to a new terminal if you want to leave it running):
make run
NOTE: You can also run this in one step by running: make install run
Modifying the API definitions
If you are editing the API definitions, generate the manifests such as CRs or CRDs using:
make manifests
NOTE: Run make --help for more information on all potential make targets
More information can be found via the Kubebuilder Documentation