provider-cloudscale
Crossplane provider for managing resources on cloudscale.ch.
Documentation: https://vshn.github.io/provider-cloudscale/
Local Development
ℹ️ Some architecture design notes are also available in the documentation
Requirements
docker
go
helm
kubectl
yq
sed
(or gsed
for Mac)
Some other requirements (e.g. kind
) will be compiled on-the-fly and put in the local cache dir .kind
as needed.
Common make targets
make build
to build the binary and docker image
make generate
to (re)generate additional code artifacts
make test
run test suite
make local-install
to install the operator in local cluster
make install-samples
to run the provider in local cluster and apply sample manifests
make run-operator
to run the code in operator mode against your current kubecontext
make test-e2e
to run e2e tests with kuttl
See all targets with make help
QuickStart Demonstration
- Get an API token cloudscale.ch
export CLOUDSCALE_API_TOKEN=<the-token>
make local-install install-samples
Kubernetes Webhook Troubleshooting
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_DIR
environment 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
Crossplane Provider Mechanics
For detailed information on how Crossplane Provider works from a development perspective check provider mechanics documentation page.
Cleaning up e2e tests
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.