Terraform Module to deploy a Kubernetes Cluster using RKE Provider in Hetzner Cloud.
See test/main.tf for example usage of the module.
You might want to include the CSI driver for automatic provisioning of volumes by adding https://raw.githubusercontent.com/hetznercloud/csi-driver/v1.2.3/deploy/kubernetes/hcloud-csi.yml to addons_include variable. (Note: A configmap containing the api key needs to be added as well.)
| Name | Version |
|---|---|
| terraform | ~> 1.0 |
| hcloud | ~> 1.31 |
| local | ~> 2.1 |
| null | ~> 3.1 |
| rke | ~> 1.2 |
| template | ~> 2.2 |
| Name | Version |
|---|---|
| hcloud | 1.31.1 |
| rke | 1.2.4 |
No modules.
| Name | Type |
|---|---|
| hcloud_server.this | resource |
| hcloud_ssh_key.this | resource |
| rke_cluster.this | resource |
| Name | Description | Type | Default | Required |
|---|---|---|---|---|
| addons_include | List of URLs to yaml resources to include eg. install Kubernetes Dashboard | list(string) |
[ |
no |
| docker_version | Docker version to install on the nodes | string |
"19.03.13" |
no |
| image | Image | string |
"ubuntu-20.04" |
no |
| nodes | Map of node objects including their name, role and server_type | map(object({ |
{ |
no |
| ssh_private_key_path | SSH private key path | string |
"~/.ssh/id_rsa" |
no |
| ssh_public_key_path | SSH public key path | string |
"~/.ssh/id_rsa.pub" |
no |
| Name | Description |
|---|---|
| api_server_url | RKE k8s cluster api server url |
| ca_cert | RKE k8s cluster CA certificate |
| client_cert | RKE k8s cluster client certificate |
| client_key | RKE k8s cluster client key |
| kube_config_yaml | RKE k8s cluster kube config yaml |
| this | List of node objects |
After deploying your Kubernetes Cluster you can login to the Kubernetes Dashboard using the following steps:
- Get Kubernetes Dashboard token
kubectl --kubeconfig kube_config_cluster.yml -n kube-system describe secret $(kubectl --kubeconfig kube_config_cluster.yml -n kube-system get secret | grep admin-user | awk '{print $1}') | grep ^token: | awk '{ print $2 }'
- Set up kubectl proxy
kubectl --kubeconfig kube_config_cluster.yml proxy"
- Login with the token copied in the step before at http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
We encourage you to contribute to this project in whatever way you like!
Report bugs/feature requests in the issues section.
When contributing to this repository, please first discuss the change you wish to make via issue with the owners of this repository before making a change.
In a nutshell:
Given a version number MAJOR.MINOR.PATCH, increment the:
- MAJOR version when you make incompatible API changes,
- MINOR version when you add functionality in a backwards-compatible manner, and
- PATCH version when you make backwards-compatible bug fixes.
Additional labels for pre-release and build metadata are available as extensions to the MAJOR.MINOR.PATCH format.