Crossplane provider for managing resources on cloudscale.ch.
Documentation: https://vshn.github.io/provider-cloudscale/
ℹ️ Some architecture design notes are also available in the documentation
dockergohelmkubectlyqsed(orgsedfor Mac)
Some other requirements (e.g. kind) will be compiled on-the-fly and put in the local cache dir .kind as needed.
make buildto build the binary and docker imagemake generateto (re)generate additional code artifactsmake testrun test suitemake local-installto install the operator in local clustermake install-samplesto run the provider in local cluster and apply sample manifestsmake run-operatorto run the code in operator mode against your current kubecontextmake test-e2eto run e2e tests with kuttl
See all targets with make help
- Get an API token cloudscale.ch
export CLOUDSCALE_API_TOKEN=<the-token>make local-install install-samples
The provider comes with mutating and validation admission webhook server.
To test and troubleshoot the webhooks on the cluster, simply apply your changes with kubectl.
-
To debug the webhook in an IDE, we need to generate certificates:
make webhook-cert
-
Start the operator in your IDE with
WEBHOOK_TLS_CERT_DIRenvironment set to.kind. -
Send an admission request sample of the spec:
# send an admission request curl -k -v -H "Content-Type: application/json" --data @samples/admission.k8s.io_admissionreview.json https://localhost:9443/validate-cloudscale-crossplane-io-v1-bucket
For detailed information on how Crossplane Provider works from a development perspective check provider mechanics documentation page.
Some scenarios are tested with the Kubernetes E2E testing tool Kuttl.
Kuttl is basically comparing the installed manifests (usually files named ##-install*.yaml) with observed objects and compares the desired output (files named ##-assert*.yaml).
To execute tests, run make test-e2e from the root dir.
If a test fails, kuttl leaves the resources in the kind-cluster intact, so you can inspect the resources and events if necessary.
Please note that Kubernetes Events from cluster-scoped resources appear in the default namespace only, but kubectl describe ... should show you the events.
If tests succeed, the relevant resources are deleted to not use up costs on the cloud providers.
Usually make clean ensures that buckets and users are deleted before deleting the kind cluster, provided the operator is running in kind cluster.
Alternatively, make .e2e-test-clean also removes all buckets and objectsusers.
To cleanup manually on control.cloudscale.ch, search for resources that begin with or contain e2e in the name.