{"id":22070977,"url":"https://github.com/vshn/provider-cloudscale","last_synced_at":"2025-07-24T08:36:29.981Z","repository":{"id":43635870,"uuid":"509444610","full_name":"vshn/provider-cloudscale","owner":"vshn","description":"Crossplane provider for cloudscale.ch","archived":false,"fork":false,"pushed_at":"2024-11-21T07:36:21.000Z","size":1006,"stargazers_count":1,"open_issues_count":15,"forks_count":2,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-11-21T08:26:55.720Z","etag":null,"topics":["cloudscale","crossplane","crossplane-provider","vshn-project-appcat","vshn-project-ignore"],"latest_commit_sha":null,"homepage":"https://vshn.github.io/provider-cloudscale","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vshn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-07-01T12:21:38.000Z","updated_at":"2024-09-03T06:46:48.000Z","dependencies_parsed_at":"2023-11-16T01:40:26.824Z","dependency_job_id":"6d477830-af45-41f7-90af-9278ed09d0c7","html_url":"https://github.com/vshn/provider-cloudscale","commit_stats":{"total_commits":106,"total_committers":5,"mean_commits":21.2,"dds":"0.12264150943396224","last_synced_commit":"ba53c612c18268634c6b037d41a9130ea8ece4da"},"previous_names":["vshn/appcat-service-s3"],"tags_count":17,"template":false,"template_full_name":"vshn/go-bootstrap","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vshn%2Fprovider-cloudscale","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vshn%2Fprovider-cloudscale/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vshn%2Fprovider-cloudscale/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vshn%2Fprovider-cloudscale/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vshn","download_url":"https://codeload.github.com/vshn/provider-cloudscale/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":227423645,"owners_count":17775201,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cloudscale","crossplane","crossplane-provider","vshn-project-appcat","vshn-project-ignore"],"created_at":"2024-11-30T20:20:50.042Z","updated_at":"2024-11-30T20:20:50.711Z","avatar_url":"https://github.com/vshn.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# provider-cloudscale\n\n[![Build](https://img.shields.io/github/workflow/status/vshn/provider-cloudscale/Test)][build]\n![Go version](https://img.shields.io/github/go-mod/go-version/vshn/provider-cloudscale)\n[![Version](https://img.shields.io/github/v/release/vshn/provider-cloudscale)][releases]\n[![GitHub downloads](https://img.shields.io/github/downloads/vshn/provider-cloudscale/total)][releases]\n\n[build]: https://github.com/vshn/provider-cloudscale/actions?query=workflow%3ATest\n[releases]: https://github.com/vshn/provider-cloudscale/releases\n\nCrossplane provider for managing resources on cloudscale.ch.\n\nDocumentation: https://vshn.github.io/provider-cloudscale/\n\n## Local Development\n\nℹ️ Some architecture design notes are also available in the documentation\n\n### Requirements\n\n* `docker`\n* `go`\n* `helm`\n* `kubectl`\n* `yq`\n* `sed` (or `gsed` for Mac)\n\nSome other requirements (e.g. `kind`) will be compiled on-the-fly and put in the local cache dir `.kind` as needed.\n\n### Common make targets\n\n* `make build` to build the binary and docker image\n* `make generate` to (re)generate additional code artifacts\n* `make test` run test suite\n* `make local-install` to install the operator in local cluster\n* `make install-samples` to run the provider in local cluster and apply sample manifests\n* `make run-operator` to run the code in operator mode against your current kubecontext\n* `make test-e2e` to run e2e tests with kuttl\n\nSee all targets with `make help`\n\n### QuickStart Demonstration\n\n1. Get an API token cloudscale.ch\n1. `export CLOUDSCALE_API_TOKEN=\u003cthe-token\u003e`\n1. `make local-install install-samples`\n\n### Kubernetes Webhook Troubleshooting\n\nThe provider comes with mutating and validation admission webhook server.\n\nTo test and troubleshoot the webhooks on the cluster, simply apply your changes with `kubectl`.\n\n1.  To debug the webhook in an IDE, we need to generate certificates:\n    ```bash\n    make webhook-cert\n    ```\n2.  Start the operator in your IDE with `WEBHOOK_TLS_CERT_DIR` environment set to `.kind`.\n\n3.  Send an admission request sample of the spec:\n    ```bash\n    # send an admission request\n    curl -k -v -H \"Content-Type: application/json\" --data @samples/admission.k8s.io_admissionreview.json https://localhost:9443/validate-cloudscale-crossplane-io-v1-bucket\n    ```\n\n### Crossplane Provider Mechanics\n\nFor detailed information on how Crossplane Provider works from a development perspective check [provider mechanics documentation page](https://kb.vshn.ch/app-catalog/explanations/crossplane_provider_mechanics.html).\n\n### e2e testing with kuttl\n\nSome scenarios are tested with the Kubernetes E2E testing tool [Kuttl](https://kuttl.dev/docs).\nKuttl is basically comparing the installed manifests (usually files named `##-install*.yaml`) with observed objects and compares the desired output (files named `##-assert*.yaml`).\n\nTo execute tests, run `make test-e2e` from the root dir.\n\nIf a test fails, kuttl leaves the resources in the kind-cluster intact, so you can inspect the resources and events if necessary.\nPlease note that Kubernetes Events from cluster-scoped resources appear in the `default` namespace only, but `kubectl describe ...` should show you the events.\n\nIf tests succeed, the relevant resources are deleted to not use up costs on the cloud providers.\n\n### Cleaning up e2e tests\n\nUsually `make clean` ensures that buckets and users are deleted before deleting the kind cluster, provided the operator is running in kind cluster.\nAlternatively, `make .e2e-test-clean` also removes all `buckets` and `objectsusers`.\n\nTo cleanup manually on control.cloudscale.ch, search for resources that begin with or contain `e2e` in the name.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvshn%2Fprovider-cloudscale","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvshn%2Fprovider-cloudscale","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvshn%2Fprovider-cloudscale/lists"}