The Hetzner Cloud cloud-controller-manager integrates your Kubernetes cluster with the Hetzner Cloud & Robot APIs.
- 🚀 See the quick start guide to get you started.
- 📖 See the configuration reference for the available configuration.
For more information, see the documentation.
To set up a development environment, make sure you installed the following tools:
- Configure a
HCLOUD_TOKEN
in your shell session.
Warning
The development environment runs on Hetzner Cloud servers which will induce costs.
- Deploy the development cluster:
make -C dev up
- Load the generated configuration to access the development cluster:
source dev/files/env.sh
- Check that the development cluster is healthy:
kubectl get nodes -o wide
- Start developing hcloud-cloud-controller-manager in the development cluster:
skaffold dev
On code change, skaffold will rebuild the image, redeploy it and print all logs.
make -C dev down
To run the unit tests, make sure you installed the following tools:
- Run the following command to run the unit tests:
go test ./...
Before running the e2e tests, make sure you followed the Setup a development environment steps.
- Run the kubernetes e2e tests using the following command:
source dev/files/env.sh
go test ./tests/e2e -tags e2e -v
If you want to work on the Robot support, you need to make some changes to the above setup.
This requires that you have a Robot Server in the same account you use for the development. The server needs to be setup with the Ansible Playbook dev/robot/install.yml
and configured in dev/robot/install.yml
.
- Set these environment variables:
export ROBOT_ENABLED=true
export ROBOT_USER=<Your Robot User>
export ROBOT_PASSWORD=<Your Robot Password>
-
Continue with the environment setup until you reach the
skaffold
step. Runskaffold dev --profile=robot
instead. -
We have another suite of tests for Robot. You can run these with:
go test ./tests/e2e -tags e2e,robot -v
The Load Balancer annotation reference is autogenerated via a custom written tool. This tool can be found at tools/doc_generation.go
.
The docstring format contains a description, starting with the constant name. The next lines can contain additional information about the annotation. Supported fields are:
Type
: Specifies the type of the annotation. If the annotation is an enum, all possible values need to be separated via a pipe symbol|
.Default
: Specifies the default value of the annotation. When no default value is set,-
is displayed.Read-only
: Specifies whether the annotation is read-only or not. If the annotation is read-only, it will be set by the HCCM and cannot be set by the user.Internal
: Specifies whether the annotation is for internal use only. If the annotation is internal, it will not be displayed in the reference documentation.
// LBAlgorithmType specifies the algorithm type of the Load Balancer.
//
// Type: round_robin | least_connections
// Default: round_robin
LBAlgorithmType Name = "load-balancer.hetzner.cloud/algorithm-type"
Apache License, Version 2.0