A kubernetes operator for checklyhq.com.
The operator can create checklyhq.com checks, groups and alert channels based of kubernetes CRDs and Ingress object annotations.
Please see our docs for more details on how to install and use the operator.
We're using direnv to manage environment variables for this project (or export them manually and you can skip this step). Make sure you generate a checkly API key and you get the account ID as well.
touch .envrc
echo "export CHECKLY_API_KEY=foorbarbaz" > .envrc
echo "export CHECKLY_ACCOUNT_ID=randomnumbers" >> .envrc
direnv allow .
Make sure your current kubectl context is set to the appropriate kubernetes cluster where you want to test the operator, then run
kubectl apply -f config/crd/bases/k8s.checklyhq.com_apichecks.yaml
kubectl apply -f config/crd/bases/k8s.checklyhq.com_groups.yaml
kubectl apply -f config/crd/bases/k8s.checklyhq.com_alertchannels.yaml
make run
If you update any of the types for the CRD, run
make manifests
and re-apply the CRD.
- Make sure your kubectl context is set to your local k8s cluster
- Run
USE_EXISTING_CLUSTER=true make test
- To see coverage run
go tool cover -html=cover.out
See docs for details.
Sources used for kick starting this project:
- https://sdk.operatorframework.io/docs/building-operators/golang/tutorial/
- https://kubernetes.io/blog/2021/06/21/writing-a-controller-for-pod-labels/
- https://github.com/checkly/checkly-go-sdk
- https://docs.okd.io/latest/operators/operator_sdk/golang/osdk-golang-tutorial.html
- https://sdk.operatorframework.io/docs/building-operators/golang/advanced-topics/#external-resources
- https://book.kubebuilder.io/cronjob-tutorial/writing-tests.html
We're using the following versions of packages:
- operator-sdk 1.31.0
- golang 1.21