{"id":13688614,"url":"https://github.com/syself/cluster-api-provider-hetzner","last_synced_at":"2025-10-23T02:36:19.547Z","repository":{"id":37100308,"uuid":"399794767","full_name":"syself/cluster-api-provider-hetzner","owner":"syself","description":"Cluster API Provider Hetzner :rocket: The best way to manage Kubernetes clusters on Hetzner, fully declarative, Kubernetes-native and with self-healing capabilities","archived":false,"fork":false,"pushed_at":"2025-04-25T11:03:25.000Z","size":36926,"stargazers_count":823,"open_issues_count":70,"forks_count":73,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-04-25T12:20:09.102Z","etag":null,"topics":["bare-metal","cloud-native","cluster-api","cluster-api-provider-hetzner","devops","go","hcloud","hetzner","high-availability","k8s","k8s-provider-hetzner","k8s-sig-cluster-api","k8s-sig-cluster-lifecycle","kubernetes","linux","operator"],"latest_commit_sha":null,"homepage":"https://caph.syself.com","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/syself.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"code-of-conduct.md","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,"zenodo":null}},"created_at":"2021-08-25T11:32:07.000Z","updated_at":"2025-04-25T11:32:06.000Z","dependencies_parsed_at":"2024-02-05T07:40:28.226Z","dependency_job_id":"5091ddb2-0bfd-42cb-baa9-8ae87d5985b4","html_url":"https://github.com/syself/cluster-api-provider-hetzner","commit_stats":{"total_commits":992,"total_committers":32,"mean_commits":31.0,"dds":0.6219758064516129,"last_synced_commit":"8e77e1e558b7579b5f48ac76d0c19e4354be1ebb"},"previous_names":[],"tags_count":69,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syself%2Fcluster-api-provider-hetzner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syself%2Fcluster-api-provider-hetzner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syself%2Fcluster-api-provider-hetzner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syself%2Fcluster-api-provider-hetzner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/syself","download_url":"https://codeload.github.com/syself/cluster-api-provider-hetzner/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251932689,"owners_count":21667194,"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":["bare-metal","cloud-native","cluster-api","cluster-api-provider-hetzner","devops","go","hcloud","hetzner","high-availability","k8s","k8s-provider-hetzner","k8s-sig-cluster-api","k8s-sig-cluster-lifecycle","kubernetes","linux","operator"],"created_at":"2024-08-02T15:01:17.668Z","updated_at":"2025-10-23T02:36:19.532Z","avatar_url":"https://github.com/syself.png","language":"Go","funding_links":[],"categories":["Go","go","Tools"],"sub_categories":["Rust"],"readme":"[![Kubernetes Cluster API Provider Hetzner](https://cdn.syself.com/caph.png)](https://syself.com)\n\n\u003cbr\u003e\n\n\u003cdiv align=\"center\"\u003e\n\u003ca href=\"https://syself.com/docs/caph/getting-started/quickstart/prerequisites\"\u003eQuickstart\u003c/a\u003e |\n\u003ca href=\"https://syself.com/docs/caph/getting-started/introduction\"\u003eDocs\u003c/a\u003e |\n\u003ca href=\"https://cluster-api.sigs.k8s.io/\"\u003eCluster API Book\u003c/a\u003e\u003cbr\u003e\u003cbr\u003e\n\u003cp\u003e⭐ Consider leaving a star — it motivates us a lot! ⭐\u003c/p\u003e\n\u003c/div\u003e\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\u003ca href=\"https://github.com/syself/cluster-api-provider-hetzner/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/release/syself/cluster-api-provider-hetzner/all.svg?style=flat-square\" alt=\"GitHub release\"\u003e\u003c/a\u003e\n\u003ca href=\"https://pkg.go.dev/github.com/syself/cluster-api-provider-hetzner?tab=overview\"\u003e\u003cimg src=\"https://godoc.org/github.com/syself/cluster-api-provider-hetzner?status.svg\" alt=\"GoDoc\"\u003e\u003c/a\u003e\n\u003ca href=\"https://goreportcard.com/report/github.com/syself/cluster-api-provider-hetzner\"\u003e\u003cimg src=\"https://goreportcard.com/badge/github.com/syself/cluster-api-provider-hetzner\" alt=\"Go Report Card\"\u003e\u003c/a\u003e\n\u003ca href=\"https://bestpractices.coreinfrastructure.org/projects/5682\"\u003e\u003cimg src=\"https://bestpractices.coreinfrastructure.org/projects/5682/badge\" alt=\"CII Best Practices\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opensource.org/license/apache-2-0/\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-Apache_2.0-blue.svg\" alt=\"License\"\u003e\u003c/a\u003e\n\u003ca href=\"https://quay.io/repository/syself/cluster-api-provider-hetzner?tab=tags\"\u003e\u003cimg src=\"https://img.shields.io/github/v/tag/syself/cluster-api-provider-hetzner?include_prereleases\u0026label=quay.io\" alt=\"Latest quay.io image tags\"\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n\u003cbr\u003e\n\n## Table of Contents\n\n- [What is CAPH](#-what-is-the-cluster-api-provider-hetzner)\n- [Documentation](#-documentation)\n- [Getting Started](#-getting-started)\n- [Version Compatibility](#%EF%B8%8F-compatibility-with-cluster-api-and-kubernetes-versions)\n- [Node Images](#-operating-system-images)\n- [Contributing](#-getting-involved-and-contributing)\n- [Contact](#-contact)\n\n## 📰 What is the Cluster API Provider Hetzner?\n\n\u003e [!NOTE]\n\u003e The Cluster API Provider Hetzner is independently maintained by [Syself](https://syself.com) and the community. It is not an official Hetzner project.\n\u003e\n\u003e If you have any questions about this project, please start a conversation in the [Discussions](https://github.com/syself/cluster-api-provider-hetzner/discussions) tab or contact us at [contact@syself.com](mailto:contact@syself.com?subject=cluster-api-provider-hetzner).\n\nThe Cluster API Provider Hetzner (CAPH) provides a way to declaratively create and manage infrastructure on Hetzner, in a Kubernetes-native way. It extends the Kubernetes API with Custom Resource Definitions (CRDs) allowing you to interact with clusters in the same fashion you interact with workload.\n\nKey benefits include:\n\n- **Self-healing**: CAPH and CAPI controllers react to every change in your infrastructure, identifying and resolving issues without human intervention\n- **Declarative**: Specify the desired state of your infrastructure and let the operators do the rest, ensuring repeatability and idempotency\n- **Kubernetes native**: Everything is a Kubernetes resource, meaning you can use tools you're already familiar with while working with CAPH\n\nCAPH enables you to have DIY Kubernetes on Hetzner at any scale, with full control over your infrastructure and clusters configuration.\n\nIf you want a batteries-included solution instead, you can try [Syself](https://syself.com) free for 14 days.\n\n## 📖 Documentation\n\nDocumentation can be found at [caph.syself.com](https://caph.syself.com). You can contribute to it by modifying the contents of the `/docs` directory.\n\n## 🚀 Getting Started\n\nThe best way to get started with CAPH is to spin up a cluster. For that you can follow our [**Managing Kubernetes on Hetzner with Cluster API**](https://community.hetzner.com/tutorials/kubernetes-on-hetzner-with-cluster-api) article featured in the Hetzner Community Tutorials.\n\nAdditional resources from the documentation:\n\n- [**Cluster API Provider Hetzner 15 Minute Tutorial**](https://syself.com/docs/caph/getting-started/quickstart/prerequisites): Set up a bootstrap cluster using Kind and deploy a Kubernetes cluster on Hetzner.\n- [**Develop and test Kubernetes clusters with Tilt**](https://syself.com/docs/caph/developers/development-guide): Start using Tilt for rapid testing of various cluster flavors, like with/without a private network or bare metal.\n- [**Develop and test your own node-images**](https://syself.com/docs/caph/topics/node-image): Learn how to use your own machine images for production systems.\n\nIn addition to the pure creation and operation of Kubernetes clusters, this provider can also validate and approve certificate signing requests. This increases security as the kubelets of the nodes can be operated with signed certificates, and enables the metrics-server to run securely. [Click here](https://syself.com/docs/caph/topics/advanced/csr-controller) to read more about the CSR controller.\n\n## 🖇️ Compatibility with Cluster API and Kubernetes Versions\n\nThis provider's versions are compatible with the following versions of Cluster API:\n\n|                                      | CAPI `v1beta1` (`v1.8.x`) | CAPI `v1beta1` (`v1.9.x`) | CAPI `v1beta1` (`v1.10.x`) | \n| ------------------------------------ | ------------------------- | ------------------------- | -------------------------- | \n| Hetzner Provider `v1.0.x`            | ✅                        | ✅                        | ✅                         |\n\n\nThis provider's versions can install and manage the following versions of Kubernetes:\n\n|                   | Hetzner Provider `v1.0.x` |\n| ----------------- | ------------------------- |\n| Kubernetes 1.31.x | ✅                        |\n| Kubernetes 1.32.x | ✅                        |\n| Kubernetes 1.33.x | ✅                        |\n| Kubernetes 1.34.x | ❔                        |\n\nTest status:\n\n- ✅ tested\n- ❔ should work, but we weren't able to test it\n\nEach version of Cluster API for Hetzner will attempt to support at least two Kubernetes versions.\n\n**NOTE:** As the versioning for this project is tied to the versioning of Cluster API, future modifications to this policy may be made to more closely align with other providers in the Cluster API ecosystem.\n\n## 💿 Operating System Images\n\nCluster API Provider Hetzner relies on a few prerequisites that must be already installed in the operating system images, such as a container runtime, kubelet, and kubeadm.\n\nReference images are available in kubernetes-sigs/image-builder and [templates/node-image](/templates/node-image).\n\nIf it's not possible to pre-install these prerequisites, [custom scripts can be deployed](/docs/caph/02-topics/02-node-image) through the kubeadm config.\n\nIn case you want a solution with managed node images, [Syself](https://syself.com) might be interesting for you.\n\n## 🤝 Getting Involved and Contributing\n\nWe, the maintainers and the community, welcome any contributions to Cluster API Provider Hetzner. Feel free to contact the maintainers for suggestions, contributions and help.\n\nTo set up your environment, refer to the [development guide](https://syself.com/docs/caph/developers/development-guide).\n\nFor new contributors, check out issues tagged as [`good first issue`][good_first_issue]. These are typically smaller in scope and great for getting familiar with the codebase.\n\nWe encourage **all** active community members to act as if they were maintainers, even without \"official\" write permissions. This is a collaborative effort serving the Kubernetes community.\n\nIf you have an active interest and you want to get involved, you have real power! Don't assume that the only people who can get things done around here are the \"maintainers\".\n\nWe would also love to add more \"official\" maintainers, so show us what you can do!\n\n### ⚖️ Code of Conduct\n\nParticipation in the Kubernetes community is governed by the [Kubernetes Code of Conduct](/code-of-conduct.md).\n\n### :shipit: GitHub Issues\n\n#### 🐛 Bugs\n\nIf you think you have found a bug, please follow these steps:\n\n- Take some time to give due diligence to the issue tracker. Your issue might be a duplicate.\n- Get the logs from the cluster controllers and paste them in your issue.\n- Open a [bug report][bug_report].\n- Give it a meaningful title to help others who might be searching for your issue in the future.\n- For questions, reach out to the Cluster API community on the [Kubernetes Slack channel][slack_info].\n\n#### 🌟 Tracking New Features\n\nWe also use the issue tracker to track features. If you have an idea for a feature or think that you can help Cluster API Provider Hetzner become even more awesome, then follow these steps:\n\n- Open a [feature request][feature_request].\n- Give it a meaningful title to help others who might be searching for your issue in the future.\n- Clearly define the use case with concrete examples, e.g. \"I type `this` and Cluster API Provider Hetzner does `that`\".\n- Some of our larger features will require some design. If you would like to include a technical design for your feature, please include it in the issue.\n- Once the new feature is well understood and the design is agreed upon, we can start coding. We would love for you to take part in this process, so we encourage you to take the lead and start coding it yourself. Please open a **WIP** _(work in progress)_ pull request. Happy coding!\n\n## 💬 Contact\n\nFor more information about Syself, our platform, or any generall information about the Cluster API Provider Hetzner, feel free to reach out to us. Below are some ways to contact our team:\n\n- **Email**: Send us questions at \u003ccontact@syself.com\u003e\n- **Website**: Visit [our website](https://syself.com) for more information about Syself\n- **LinkedIn**: Follow us on [LinkedIn](https://www.linkedin.com/company/syself/) for announcements\n- **Newsletter**: Consider subscribing to [our LinkedIn newsletter](https://www.linkedin.com/newsletters/the-syselfer-7223788357485543424/) for regular news about CAPH\n\n[![Kubernetes Cluster API Provider Hetzner](https://cdn.syself.com/caph-alt.png)](https://syself.com/demo)\n\n\u003c!-- References --\u003e\n\n[good_first_issue]: https://github.com/syself/cluster-api-provider-hetzner/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3A%22good+first+issue%22\n[bug_report]: https://github.com/syself/cluster-api-provider-hetzner/issues/new?template=bug_report.md\n[feature_request]: https://github.com/syself/cluster-api-provider-hetzner/issues/new?template=feature_request.md\n[slack_info]: https://github.com/kubernetes/community/tree/master/communication#slack\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsyself%2Fcluster-api-provider-hetzner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsyself%2Fcluster-api-provider-hetzner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsyself%2Fcluster-api-provider-hetzner/lists"}