This is part of the Hobby Kube project. Functionality of the modules is described in the guide.
Deploy a secure Kubernetes cluster on Hetzner Cloud, Scaleway or DigitalOcean using Terraform.
The following packages are required to be installed locally:
brew install terraform kubectl jq wireguard-tools
Modules are using ssh-agent for remote operations. Add your SSH key with ssh-add -K
if Terraform repeatedly fails to connect to remote hosts.
Export the following environment variables depending on the modules you're using.
export TF_VAR_hcloud_token=<token>
export TF_VAR_hcloud_ssh_keys=<keys> # e.g. '["12548","17593"]'
export TF_VAR_scaleway_organization=<access_key>
export TF_VAR_scaleway_token=<token>
export TF_VAR_digitalocean_token=<token>
export TF_VAR_digitalocean_ssh_keys=<keys> # e.g. '["121671", "1714133"]'
export TF_VAR_domain=<domain> # e.g. example.org
export TF_VAR_cloudflare_email=<email>
export TF_VAR_cloudflare_token=<token>
export TF_VAR_domain=<domain> # e.g. example.org shall be already added to hosted zones.
export TF_VAR_aws_access_key=<ACCESS_KEY>
export TF_VAR_aws_secret_key=<SECRET_KEY>
export TF_VAR_aws_region=<region> # e.g. eu-west-1
Each provider takes an optional variable to install further packages during provisioning:
module "provider" {
# ...
apt_packages = ["ceph-common", "nfs-common"]
}
# fetch the required modules
$ terraform init
# see what `terraform apply` will do
$ terraform plan
# execute it
$ terraform apply
Modules in this repository can be used independently:
module "kubernetes" {
source = "github.com/hobby-kube/provisioning/service/kubernetes"
}
After adding this to your plan, run terraform get
to fetch the module.