Kubernetes Cluster API infrastructure provider for cloudscale.ch.
Status: early development
- CloudscaleCluster: Network, Subnet, Load Balancer management
- CloudscaleMachine: Server provisioning with cloud-init
- CloudscaleMachineTemplate: Immutable machine templates for KubeadmControlPlane/MachineDeployment
- Go 1.25+
- Docker
- kubectl
- Access to a Kubernetes cluster (kind for development)
- cloudscale.ch API token
This is a kubebuilder-scaffolded project. For new APIs, Webhooks, etc. kubebuilder commands should be used.
# Run tests
make test
# Generate manifests
make manifests
# Generate code
make generate
# Run E2E tests (requires CLOUDSCALE_API_TOKEN)
make test-e2eThe easiest way to work on this provider is by using the Tilt setup of Cluster-API.
Refer to the linked documentation on how to set up your local tilt. This requires cloning Cluster-API core to your host. The necessary commands need to be executed in the Cluster-API core repository (not in this repository).
An example tilt-settings.yaml, which should also be placed in the Cluster-API core repository, is provided here:
default_registry: "" # change if you use a remote image registry
provider_repos:
# This refers to your provider directory and loads settings
# from `tilt-provider.yaml`
- path/to/local/clone/cluster-api-provider-cloudscale
enable_providers:
- cloudscale
- kubeadm-bootstrap
- kubeadm-control-plane
deploy_cert_manager: true
kustomize_substitutions:
CLOUDSCALE_API_TOKEN: "INSERT_TOKEN_HERE"
CLOUDSCALE_SSH_PUBLIC_KEY: "INSERT_SSH_PUBLIC_KEY_HERE"
CLOUDSCALE_REGION: "lpg"
CLOUDSCALE_CONTROL_PLANE_MACHINE_FLAVOR: "flex-4-2"
CLOUDSCALE_WORKER_MACHINE_FLAVOR: "flex-4-2"
CLOUDSCALE_MACHINE_IMAGE: "IMAGE_NAME"
CLOUDSCALE_ROOT_VOLUME_SIZE: "50"
extra_args:
cloudscale:
- "--zap-log-level=5"
template_dirs:
docker:
- ./test/infrastructure/docker/templates
cloudscale:
- path/to/local/clone/cluster-api-provider-cloudscale/templatesApache License 2.0