{"id":18358309,"url":"https://github.com/kerwanp/hetzner-k8s-terraform-module","last_synced_at":"2025-04-10T02:38:47.981Z","repository":{"id":253956731,"uuid":"845048186","full_name":"kerwanp/hetzner-k8s-terraform-module","owner":"kerwanp","description":"Create Kubernetes Clusters on Hetzner Cloud with ease","archived":false,"fork":false,"pushed_at":"2024-08-20T16:44:42.000Z","size":13,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-01T19:03:35.514Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kerwanp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2024-08-20T13:33:32.000Z","updated_at":"2024-08-20T16:44:45.000Z","dependencies_parsed_at":"2024-08-20T15:47:37.133Z","dependency_job_id":null,"html_url":"https://github.com/kerwanp/hetzner-k8s-terraform-module","commit_stats":null,"previous_names":["kerwanp/hetzner-k8s-terraform-module"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kerwanp%2Fhetzner-k8s-terraform-module","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kerwanp%2Fhetzner-k8s-terraform-module/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kerwanp%2Fhetzner-k8s-terraform-module/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kerwanp%2Fhetzner-k8s-terraform-module/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kerwanp","download_url":"https://codeload.github.com/kerwanp/hetzner-k8s-terraform-module/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248144721,"owners_count":21054974,"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":[],"created_at":"2024-11-05T22:17:23.302Z","updated_at":"2025-04-10T02:38:47.961Z","avatar_url":"https://github.com/kerwanp.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Hetzner Kubernetes Terraform Module\n\nThis Terraform module allows you to bootstrap self-managed clusters on Hetzner Cloud in no time. Perfect for labs.\n\n\u003e ⚠ This is not battle tested, use it are your own risks.\n\n## Features\n\n- ✅ Cheap nodes thanks to [Hetzner Cloud](https://www.hetzner.com/) pricing\n- ✅ Automatically creates and joins new nodes\n- ✅ Manages Persistent volume claims by using Hetzner [Cloud Storage Interface driver](https://github.com/hetznercloud/csi-driver)\n- ✅ Manages Load balancer by using Hetzner [Cloud Controller Manager](https://github.com/hetznercloud/hcloud-cloud-controller-manager)\n\n\u003c!-- BEGIN_TF_DOCS --\u003e\n\n## Example\n\n```hcl\nprovider \"hcloud\" {\n  token = var.hcloud_token\n}\n\nresource \"hcloud_ssh_key\" \"personal\" {\n  name       = \"Personal\"\n  public_key = file(\"~/.ssh/id_ed25519.pub\")\n}\n\nmodule \"cluster\" {\n  source = \"../\"\n\n  name    = \"my-cluster\"\n  ssh_key = hcloud_ssh_key.personal.id\n\n  hcloud_token = var.hcloud_token\n\n  cidr = \"10.0.0.0/16\"\n  zone = \"nbg1\"\n\n  master = {\n    server_type = \"cpx21\"\n  }\n\n  agents = {\n    0 = {\n      server_type = \"cpx21\"\n    }\n  }\n}\n\nresource \"local_sensitive_file\" \"kubeconfig\" {\n  content  = module.cluster.kubeconfig.content\n  filename = \"kubeconfig.yaml\"\n}\n```\n\n## Inputs\n\n| Name                                                                  | Description                                              | Type                                                     | Default | Required |\n| --------------------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | ------- | :------: |\n| \u003ca name=\"input_agents\"\u003e\u003c/a\u003e [agents](#input_agents)                   | Map of agents configurations                             | \u003cpre\u003emap(object({\u003cbr\u003e server_type = string\u003cbr\u003e }))\u003c/pre\u003e | `{}`    |    no    |\n| \u003ca name=\"input_ccm\"\u003e\u003c/a\u003e [ccm](#input_ccm)                            | Hetzner Cloud Controller Manager configuration           | `any`                                                    | `null`  |    no    |\n| \u003ca name=\"input_cidr\"\u003e\u003c/a\u003e [cidr](#input_cidr)                         | IP addresses range for the private network               | `string`                                                 | n/a     |   yes    |\n| \u003ca name=\"input_csi\"\u003e\u003c/a\u003e [csi](#input_csi)                            | Hetzner Container Storage Interface configuration        | `any`                                                    | `null`  |    no    |\n| \u003ca name=\"input_flannel\"\u003e\u003c/a\u003e [flannel](#input_flannel)                | Flannel configuration                                    | `any`                                                    | `null`  |    no    |\n| \u003ca name=\"input_hcloud_token\"\u003e\u003c/a\u003e [hcloud_token](#input_hcloud_token) | The Hetzner Cloud API token                              | `string`                                                 | n/a     |   yes    |\n| \u003ca name=\"input_master\"\u003e\u003c/a\u003e [master](#input_master)                   | Master configuration                                     | \u003cpre\u003eobject({\u003cbr\u003e server_type = string\u003cbr\u003e })\u003c/pre\u003e      | n/a     |   yes    |\n| \u003ca name=\"input_name\"\u003e\u003c/a\u003e [name](#input_name)                         | The name of the cluster used to prefix resources         | `string`                                                 | n/a     |   yes    |\n| \u003ca name=\"input_ssh_key\"\u003e\u003c/a\u003e [ssh_key](#input_ssh_key)                | SSH Key ID or name that will be added to created servers | `string`                                                 | n/a     |   yes    |\n| \u003ca name=\"input_zone\"\u003e\u003c/a\u003e [zone](#input_zone)                         | Zone where resources will be created                     | `string`                                                 | n/a     |   yes    |\n\n## Outputs\n\n| Name                                                              | Description |\n| ----------------------------------------------------------------- | ----------- |\n| \u003ca name=\"output_kubeconfig\"\u003e\u003c/a\u003e [kubeconfig](#output_kubeconfig) | n/a         |\n\n\u003c!-- END_TF_DOCS --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkerwanp%2Fhetzner-k8s-terraform-module","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkerwanp%2Fhetzner-k8s-terraform-module","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkerwanp%2Fhetzner-k8s-terraform-module/lists"}