PackageTrack
Sign in Get early access

github.com/hetznercloud/hcloud-cloud-controller-manager

v1.35.0 #2407 most downloaded on Go modules hetznercloud/hcloud-cloud-controller-manager

What this package is like to depend on

Last release 13 days ago

11 Aug 2026

Release timing varies

gaps range from 8 days to 2 months

Nearly every release is documented

notes for 51 of 52 stable releases

Nothing withdrawn

no release was ever pulled

8 years old

148 releases · first in 2018

35 releases in the last 12 months

see the full history below

Release timeline

148 releases · Mar 2018 to Aug 2026
2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 60 of 148
  1. v1.35.0 11 Aug 2026
    Release notes

    Zone Label

    The datacenter property was removed from the Server object (see changelog. For backwards compatibility, we statically compute the datacenter from the location to fill the topology.kubernetes.io/zone and failure-domain.beta.kubernetes.io/zone labels. In the next major release we will stop setting these values. To stop setting these values now, you can set the environment variable HCLOUD_INSTANCES_ZONE_LABEL_ENABLED=false. See here for more details.

    Features

    • helm: allow annotations on the service account (#1295) (f4bf0d3)
    • load-balancer: support http timeout-idle annotation (#1301) (926a08a)
    • load-balancer: improve error logs on invalid input (#1301) (926a08a)
    • node: make the zone label configurable (#1311) (8c2952e)
    Open source →
    Release notes

    Compare to previous version

    Zone Label

    The datacenter property was removed from the Server object (see changelog. For backwards compatibility, we statically compute the datacenter from the location to fill the topology.kubernetes.io/zone and failure-domain.beta.kubernetes.io/zone labels. In the next major release we will stop setting these values. To stop setting these values now, you can set the environment variable HCLOUD_INSTANCES_ZONE_LABEL_ENABLED=false. See here for more details.

    Features

    • helm: allow annotations on the service account (#1295) (f4bf0d3)
    • load-balancer: support http timeout-idle annotation (#1301) (926a08a)
    • load-balancer: improve error logs on invalid input (#1301) (926a08a)
    • node: make the zone label configurable (#1311) (8c2952e)
    Open source →
    Release notes

    v1.35.0 Latest

    Latest

    Compare

    Choose a tag to compare

    Open source →
  2. v1.34.1-0.20260804110647-926a08a6bec9 04 Aug 2026 pre-release

    Nothing published for this version

  3. v1.34.1-0.20260729085529-27253f52c336 29 Jul 2026 pre-release

    Nothing published for this version

  4. v1.34.1-0.20260720045012-555df141e7b2 20 Jul 2026 pre-release

    Nothing published for this version

  5. v1.34.1-0.20260717121059-f4bf0d32a33e 17 Jul 2026 pre-release

    Nothing published for this version

  6. v1.34.0 17 Jul 2026
    Release notes

    Features

    • chart: expose podSecurityContext and securityContext values (#1258) (ebd8cd4)

    Bug Fixes

    Open source →
    Release notes

    Compare to previous version

    Features

    • chart: expose podSecurityContext and securityContext values (#1258) (ebd8cd4)

    Bug Fixes

    • routes: reject IPv6 routes early (#1280) (0cba535)
    • drop warning for untagged clouds (#1281) (574262f)
    Open source →
    Release notes

    v1.34.0

    Compare

    Choose a tag to compare

    Open source →
  7. v1.33.1-0.20260716072857-4de676966d84 16 Jul 2026 pre-release

    Nothing published for this version

  8. v1.33.0 18 Jun 2026
    Release notes

    Changed

    Renamed HCLOUD_SERVER_CACHE_TTL to HCLOUD_SERVER_CACHE_MAX_AGE. The server cache lifetime is now configured via HCLOUD_SERVER_CACHE_MAX_AGE (default 10s). Individual controllers may override this default for specific lookups — for example, the routes controller uses a longer max age. Action required: if you set HCLOUD_SERVER_CACHE_TTL, switch to HCLOUD_SERVER_CACHE_MAX_AGE; the old variable is no longer recognized.

    Removed

    Removed the hcops/AllServersCache.* operation metrics. The legacy AllServersCache was replaced by the shared server cache, so the following cloud_controller_manager_operations_total series labeled op="hcops/AllServersCache.*" are no longer emitted:

    • hcops/AllServersCache.ByID
    • hcops/AllServersCache.ByName
    • hcops/AllServersCache.ByPrivateIP
    • hcops/AllServersCache.getCache
    • hcops/AllServersCache.refreshCache

    They are superseded by the new server cache metric cloud_controller_manager_server_cache_requests_total, a counter partitioned by subsystem, mode, and result:

    • subsystem: instances_v2, routes (or none when unset)
    • mode: all, one, off
    • result: hit, miss
    cloud_controller_manager_server_cache_requests_total{subsystem="instances_v2", mode="all", result="hit"}
    cloud_controller_manager_server_cache_requests_total{subsystem="routes",       mode="all", result="miss"}
    

    Update any dashboards or alerts referencing the old op series accordingly.

    Features

    • cache: replace TTL with max-age
    • cache: use server cache in routes controller

    Bug Fixes

    • cache: when api returns not found do not return an expired entry (#1271)
    Open source →
    Release notes

    Changed

    Renamed HCLOUD_SERVER_CACHE_TTL to HCLOUD_SERVER_CACHE_MAX_AGE. The server cache lifetime is now configured via HCLOUD_SERVER_CACHE_MAX_AGE (default 10s). Individual controllers may override this default for specific lookups — for example, the routes controller uses a longer max age. Action required: if you set HCLOUD_SERVER_CACHE_TTL, switch to HCLOUD_SERVER_CACHE_MAX_AGE; the old variable is no longer recognized.

    Removed

    Removed the hcops/AllServersCache.* operation metrics. The legacy AllServersCache was replaced by the shared server cache, so the following cloud_controller_manager_operations_total series labeled op="hcops/AllServersCache.*" are no longer emitted:

    • hcops/AllServersCache.ByID
    • hcops/AllServersCache.ByName
    • hcops/AllServersCache.ByPrivateIP
    • hcops/AllServersCache.getCache
    • hcops/AllServersCache.refreshCache

    They are superseded by the new server cache metric cloud_controller_manager_server_cache_requests_total, a counter partitioned by subsystem, mode, and result:

    • subsystem: instances_v2, routes (or none when unset)
    • mode: all, one, off
    • result: hit, miss
    cloud_controller_manager_server_cache_requests_total{subsystem="instances_v2", mode="all", result="hit"}
    cloud_controller_manager_server_cache_requests_total{subsystem="routes",       mode="all", result="miss"}
    

    Update any dashboards or alerts referencing the old op series accordingly.

    Features

    • cache: replace TTL with max-age
    • cache: use server cache in routes controller

    Bug Fixes

    • cache: when api returns not found do not return an expired entry (#1271)
    Open source →
    Release notes

    v1.33.0

    Compare

    Choose a tag to compare

    Open source →
  9. v1.32.1-0.20260614161804-cb9c1a126cde 14 Jun 2026 pre-release

    Nothing published for this version

  10. v1.32.0 12 Jun 2026
    Release notes

    Cache Server Lookups in Node Controllers

    This release introduces an experimental server cache to reduce Hetzner Cloud API calls. During an experimental phase, breaking changes on those features may occur within minor releases.

    The node and node lifecycle controllers look up Servers by ID or name, generating significant API traffic during cluster scaling. A new cache sits between the controllers and the API to serve these lookups, reducing the number of requests.

    It is enabled by default since we believe the implementation is safe in practice, but is experimental and may see breaking changes within minor releases. Configure it via environment variables:

    • HCLOUD_SERVER_CACHE_MODE (all | one | off, default all):

      • all — fetch all Servers once and serve lookups from the snapshot until the TTL expires.
      • one — cache each Server individually with its own expiration.
      • off — disable caching; every lookup hits the API.
    • HCLOUD_SERVER_CACHE_TTL (duration, default 10s): lifetime of cached entries (e.g. 30s, 2m); values above a minute are not recommended.

    Features

    • instances: cache server lookups to reduce API calls (#1252)
    Open source →
    Release notes

    Cache Server Lookups in Node Controllers

    This release introduces an experimental server cache to reduce Hetzner Cloud API calls. During an experimental phase, breaking changes on those features may occur within minor releases.

    The node and node lifecycle controllers look up Servers by ID or name, generating significant API traffic during cluster scaling. A new cache sits between the controllers and the API to serve these lookups, reducing the number of requests.

    It is enabled by default since we believe the implementation is safe in practice, but is experimental and may see breaking changes within minor releases. Configure it via environment variables:

    • HCLOUD_SERVER_CACHE_MODE (all | one | off, default all):

      • all — fetch all Servers once and serve lookups from the snapshot until the TTL expires.
      • one — cache each Server individually with its own expiration.
      • off — disable caching; every lookup hits the API.
    • HCLOUD_SERVER_CACHE_TTL (duration, default 10s): lifetime of cached entries (e.g. 30s, 2m); values above a minute are not recommended.

    Features

    • instances: cache server lookups to reduce API calls (#1252)
    Open source →
    Release notes

    v1.32.0

    Compare

    Choose a tag to compare

    Open source →
  11. v1.31.2-0.20260522055103-86fc68c06f0f 22 May 2026 pre-release

    Nothing published for this version

  12. v1.31.1 19 May 2026
    Release notes

    Bug Fixes

    • routes controller on node name drift (#1221)
    Open source →
    Release notes

    Bug Fixes

    • routes controller on node name drift (#1221)
    Open source →
    Release notes

    v1.31.1

    Compare

    Choose a tag to compare

    Open source →
  13. v1.31.1-0.20260508091413-f4c2735affa6 08 May 2026 pre-release

    Nothing published for this version

  14. v1.31.0 08 May 2026
    Release notes

    Features

    • robot: allow Robot support without API credentials for IP-based LB targets (#1163)
    • helm: allow customizing chart deployment strategy (#1190)
    • support Kubernetes v1.36
    • drop support for Kubernetes v1.32

    Bug Fixes

    • helm: remove permissions for persistentvolumes (#1203)
    • route: error handling on locked networks (#1215)
    Open source →
    Release notes

    Features

    • robot: allow Robot support without API credentials for IP-based LB targets (#1163)
    • helm: allow customizing chart deployment strategy (#1190)
    • support Kubernetes v1.36
    • drop support for Kubernetes v1.32

    Bug Fixes

    • helm: remove permissions for persistentvolumes (#1203)
    • route: error handling on locked networks (#1215)
    Open source →
    Release notes

    v1.31.0

    Compare

    Choose a tag to compare

    Open source →
  15. v1.30.2-0.20260302072907-ac208a507740 02 Mar 2026 pre-release

    Nothing published for this version

  16. v1.30.1 20 Feb 2026
    Release notes

    Datacenter Deprecation

    The server.datacenter field is deprecated and will be removed from the API response after July 2026: https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters

    To avoid a breaking change in HCCM, we decided to statically map from the old location names to the existing datacenter names for the topology.kubernetes.io/zone label. For new locations we will return the location name without a -dcxx suffix.

    Deployments of hcloud-cloud-controller-manager that are not updated when the field is removed from the API will panic with the following error:

    "Observed a panic" panic="runtime error: invalid memory address or nil pointer dereference" panicGoValue=""invalid memory address or nil pointer dereference""

    We have published an RFC which details how we want to continue utilizing the labels topology.kubernetes.io/zone and topology.kubernetes.io/region: #1146 (comment)

    Bug Fixes

    • statically map deprecated datacenter names (#1159)
    Open source →
    Release notes

    Datacenter Deprecation

    The server.datacenter field is deprecated and will be removed from the API response after July 2026: https://docs.hetzner.cloud/changelog#2025-12-16-phasing-out-datacenters

    To avoid a breaking change in HCCM, we decided to statically map from the old location names to the existing datacenter names for the topology.kubernetes.io/zone label. For new locations we will return the location name without a -dcxx suffix.

    Deployments of hcloud-cloud-controller-manager that are not updated when the field is removed from the API will panic with the following error:

    "Observed a panic" panic="runtime error: invalid memory address or nil pointer dereference" panicGoValue=""invalid memory address or nil pointer dereference""

    We have published an RFC which details how we want to continue utilizing the labels topology.kubernetes.io/zone and topology.kubernetes.io/region: https://github.com/hetznercloud/hcloud-cloud-controller-manager/issues/1146#issuecomment-3919929223

    Bug Fixes

    • statically map deprecated datacenter names (#1159)
    Open source →
    Release notes

    v1.30.1

    Compare

    Choose a tag to compare

    Open source →
  17. v1.30.1-0.20260213133124-4ef93316f23b 13 Feb 2026 pre-release

    Nothing published for this version

  18. v1.30.0 11 Feb 2026
    Release notes

    Features

    • support Kubernetes v1.35
    • drop support for Kubernetes v1.31

    Bug Fixes

    • load-balancer: wait for action of managed certificate (#1144)
    Open source →
    Release notes

    Features

    • support Kubernetes v1.35
    • drop support for Kubernetes v1.31

    Bug Fixes

    • load-balancer: wait for action of managed certificate (#1144)
    Open source →
    Release notes

    v1.30.0

    Compare

    Choose a tag to compare

    Open source →
  19. v1.29.3-0.20260130120045-8045e966bcab 30 Jan 2026 pre-release

    Nothing published for this version

  20. v1.29.2 22 Jan 2026
    Release notes

    Bug Fixes

    • tcp service created for service with unsupported load balancer protocol (#1129)
    Open source →
    Release notes

    Bug Fixes

    • tcp service created for service with unsupported load balancer protocol (#1129)
    Open source →
    Release notes

    v1.29.2

    Compare

    Choose a tag to compare

    Open source →
  21. v1.29.1 20 Jan 2026
    Release notes

    Bug Fixes

    • respect proxy protocol default from config for load balancer status (#1131)
    Open source →
    Release notes

    Bug Fixes

    • respect proxy protocol default from config for load balancer status (#1131)
    Open source →
    Release notes

    v1.29.1

    Compare

    Choose a tag to compare

    Open source →
  22. v1.29.1-0.20251222112831-d97c59c8a544 22 Dec 2025 pre-release

    Nothing published for this version

  23. v1.29.0 18 Dec 2025
    Release notes

    Watch-Based Route Reconciliation

    Previously, route reconciliation is performed at a fixed interval of 30s. This leads to unnecessary API requests, as a GET /v1/networks/{id} call is triggered every 30s, even when no changes have occurred.

    Upstream, we have contributed an event-driven approach, similar to the mechanisms used by other controllers such as the Load Balancer controller. With this new approach, route reconciliation is triggered by node additions, node deletions, or changes to a node’s PodCIDRs or Addresses. Additionally, to ensure consistency, reconciliation still occurs periodically at a randomized interval between 12 and 24 hours.

    Enabled by default

    This feature is now enabled by default.

    If you encounter any problems you can disable the feature by setting the following Helm value:

    args.feature-gates=CloudControllerManagerWatchBasedRoutesReconciliation=false

    Global Load Balancer Defaults

    Configure cluster-wide defaults for Load Balancers via the extended HCLOUD_LOAD_BALANCERS_* env vars. These values automatically apply during Load Balancer creation and reconciliation whenever annotations are omitted. Learn more about it in the reference documentation

    Features

    • extend environment variables for default load balancer configuration (#1052)
    • enable watch based route reconciliation by default (#1112)
    Open source →
  24. v1.28.1-0.20251125115807-24f9d7cf48c8 25 Nov 2025 pre-release

    Nothing published for this version

  25. v1.28.1-0.20251114071357-d946fd9c0805 14 Nov 2025 pre-release

    Nothing published for this version

  26. v1.28.1-0.20251112065452-5fcaf36b6017 12 Nov 2025 pre-release

    Nothing published for this version

  27. v1.28.1-0.20251107133432-eaf41084ea48 07 Nov 2025 pre-release

    Nothing published for this version

  28. v1.28.1-0.20251103094743-d746f1226442 03 Nov 2025 pre-release

    Nothing published for this version

  29. v1.28.1-0.20251031071320-42695c3eea4a 31 Oct 2025 pre-release

    Nothing published for this version

  30. v1.28.1-0.20251030043356-fc6572f8f359 30 Oct 2025 pre-release

    Nothing published for this version

  31. v1.28.0 29 Oct 2025
    Release notes

    Updated ClusterRole for HCCM

    We have introduced a custom ClusterRole for the HCCM component, based on the upstream recommendation from sig-cloud-provider.

    To ensure a smooth transition, we renamed the ClusterRoleBinding by adding the :restricted suffix. This change was necessary because the roleRef field in a ClusterRoleBinding is immutable, which would otherwise cause errors during a Helm upgrade.

    As a result, users who deploy HCCM using the provided Kubernetes manifests must manually delete the old ClusterRoleBinding after applying the updated manifests. Users deploying via the Helm chart do not need to take any action.

    kubectl delete clusterrolebindings.rbac.authorization.k8s.io system:hcloud-cloud-controller-manager
    

    Features

    • helm: use custom ClusterRole
    • configurable metrics address (#1055)

    Bug Fixes

    • add client-side timeouts to hcloud and robot clients (#1058)
    Open source →
  32. v1.28.0-rc.1 28 Oct 2025 pre-release
    Release notes

    Updated ClusterRole for HCCM

    We have introduced a custom ClusterRole for the HCCM component, based on the upstream recommendation from sig-cloud-provider.

    Due to this change, users who deploy HCCM using the provided Kubernetes manifests must manually remove the old ClusterRoleBinding after applying the updated manifests. Users deploying via the Helm chart do not need to perform any migration steps.

    kubectl delete clusterrolebindings.rbac.authorization.k8s.io system:hcloud-cloud-controller-manager
    
    Open source →
  33. v1.28.0-rc.0 28 Oct 2025 pre-release
    Release notes

    Updated ClusterRole for HCCM

    We have introduced a custom ClusterRole for the HCCM component, based on the upstream recommendation from sig-cloud-provider.

    Because of this change, a simple helm upgrade may fail due to immutable fields in the existing ClusterRoleBinding. To ensure a successful upgrade, you must delete the existing ClusterRoleBinding before upgrading. This will make HCCM temporarily unavailable until the new version is deployed. Please avoid making any changes to the clusters, especially node- or service-related modifications, during this time.

    kubectl delete clusterrolebindings.rbac.authorization.k8s.io system:hcloud-cloud-controller-manager
    

    Features

    • helm: use custom ClusterRole
    • configurable metrics address (#1055)

    Bug Fixes

    • add client-side timeouts to hcloud and robot clients (#1058)
    Open source →
  34. v1.27.1-0.20251002070750-a7144fe1dc76 02 Oct 2025 pre-release

    Nothing published for this version

  35. v1.27.0 01 Oct 2025
    Release notes

    Attach Load Balancer to a Subnet

    If your CCM is configured for a Private Network, Load Balancers can now join one of its subnets. To place a Load Balancer in a specific subnet, use the new load-balancer.hetzner.cloud/private-subnet-ip-range annotation. Learn more about this feature here.

    Watch-Based Route Reconciliation (Experimental)

    Currently, route reconciliation is performed at a fixed interval of 30s. This leads to unnecessary API requests, as a GET /v1/networks/{id} call is triggered every 30s, even when no changes have occurred.

    Upstream we have proposed an event-driven approach, similar to the mechanism used by other controllers such as the Load Balancer Controller. With this new approach, route reconciliation is triggered on node additions, node deletions, or when the PodCIDRs or Addresses of nodes change. Additionally, to ensure consistency, reconciliation will still occur periodically at a randomized interval between 12 and 24 hours.

    We are close to merging a Kubernetes Enhancement Proposal (KEP). Furthermore, a pull request containing the implementation is already open in the Kubernetes repository.

    Forked Upstream Libraries

    In this release, we replaced the upstream controller-manager and cloud-provider libraries with our own forks. These forks are based on the upstream v0.34.1 release (aligned with Kubernetes v1.34.1) and include our patches on top.

    Enabling the Feature

    This feature is disabled by default and will not affect existing deployments unless explicitly enabled. We recommend testing it in a non-production environment before considering use in production.

    As the KEP has not yet been reviewed for production readiness, the feature gate name may change in an upcoming release. Since this feature is marked as experimental, such changes will not be considered breaking.

    To enable the feature, set the following Helm value:

    args.feature-gates=CloudControllerManagerWatchBasedRoutesReconciliation=true

    Features

    • watch-based route reconciliation (#970)
    • set dns config via helm chart values (#1027)
    • support Kubernetes v1.34 and drop v1.30 (#1037)
    • load-balancer: attach load balancer to specific subnetwork (#1031)

    Bug Fixes

    • feature gate cannot be enabled (#980)
    Open source →
  36. v1.27.0-alpha.1.0.20250721115320-25021a20601a 21 Jul 2025 pre-release

    Nothing published for this version

  37. v1.27.0-alpha.1 18 Jul 2025 pre-release
    Release notes

    This release introduces an experimental feature to address #395.

    Watch-Based Route Reconciliation (Experimental)

    Currently, route reconciliation is performed at a fixed interval of 30s. This leads to unnecessary API requests, as a GET /v1/networks/{id} call is triggered every 30s, even when no changes have occurred.

    Upstream we have proposed an event-driven approach, similar to the mechanism used by other controllers such as the Load Balancer Controller. With this new approach, route reconciliation is triggered on node additions, node deletions, or when the PodCIDRs or Addresses of nodes change. Additionally, to ensure consistency, reconciliation will still occur periodically at a randomized interval between 12 and 24 hours.

    We are close to merging a Kubernetes Enhancement Proposal (KEP). Furthermore, a work-in-progress pull request containing the implementation is already open in the Kubernetes repository.

    Forked Upstream Libraries

    In this release, we replaced the upstream controller-manager and cloud-provider libraries with our own forks. These forks are based on the upstream v0.33.2 release (aligned with Kubernetes v1.33.2) and include our patches on top.

    Enabling the Feature

    This feature is disabled by default and will not impact existing deployments unless explicitly enabled. We do not recommend running this feature in production environments at this stage. However, we welcome early testers who can try it in non-critical setups. Running with this feature active is enough for us to analyze its impact. No additional feedback is required.

    To enable the feature, set the following Helm value:

    args.feature-gates=CloudControllerManagerWatchBasedRoutesReconciliation=true

    Bug Fixes

    • feature gate cannot be enabled (#980)
    Open source →
  38. v1.27.0-alpha.0 11 Jul 2025 pre-release
    Release notes

    This release introduces an experimental feature to address #395.

    Watch-Based Route Reconciliation (Experimental)

    Currently, route reconciliation is performed at a fixed interval of 30 seconds. This leads to unnecessary API requests, as a GET /v1/networks/{id} call is triggered every 30 seconds, even when no changes have occurred.

    Upstream we have proposed an event-driven approach, similar to the mechanism used by other controllers such as the Load Balancer Controller. With this new approach, route reconciliation is triggered on node additions, node deletions, or when the PodCIDRs or Addresses of nodes change. Additionally, to ensure consistency, reconciliation will still occur periodically at a randomized interval between 12 and 24 hours.

    We are close to merging a Kubernetes Enhancement Proposal (KEP). Furthermore, a work-in-progress pull request containing the implementation is already open in the Kubernetes repository.

    Forked Upstream Libraries

    In this release, we replaced the upstream controller-manager and cloud-provider libraries with our own forks. These forks are based on the upstream v0.33.2 release (aligned with Kubernetes v1.33.2) and include our patches on top.

    Enabling the Feature

    This feature is disabled by default and will not impact existing deployments unless explicitly enabled. We do not recommend running this feature in production environments at this stage. However, we welcome early testers who can try it in non-critical setups. Running with this feature active is enough for us to analyze its impact. No additional feedback is required.

    To enable the feature, set the following Helm value:

    args.feature-gates=CloudControllerManagerWatchBasedRoutesReconciliation=true

    Features

    • watch-based route reconciliation (#970)
    Open source →
  39. v1.26.0 02 Jul 2025
    Release notes

    Features

    • add Kubernetes v1.33 and remove EOL version v1.29 (#934)
    • helm: add value to disable ClusterRoleBinding for out-of-cluster install (#962)
    Open source →
  40. v1.25.2-0.20250626023958-d752b271795e 26 Jun 2025 pre-release

    Nothing published for this version

  41. v1.25.2-0.20250606202336-e6a1eb8cc12d 06 Jun 2025 pre-release

    Nothing published for this version

  42. v1.25.2-0.20250602044734-ba7a5f0d54c1 02 Jun 2025 pre-release

    Nothing published for this version

  43. v1.25.2-0.20250529003103-13b41242879f 29 May 2025 pre-release

    Nothing published for this version

  44. v1.25.2-0.20250522224618-b4b336b76b3a 22 May 2025 pre-release

    Nothing published for this version

  45. v1.25.2-0.20250521153940-f430ff59daeb 21 May 2025 pre-release

    Nothing published for this version

  46. v1.25.1 21 May 2025
    Release notes

    Bug Fixes

    • binaries are missing in the release (#930)
    Open source →
  47. v1.25.1-rc.0 21 May 2025 pre-release
    Release notes

    Bug Fixes

    • binaries are missing in the release (#930)
    Open source →
  48. v1.25.0 20 May 2025
    Release notes

    Features

    • helm: support custom priorityClassName (#908)
    • helm: support imagePullSecrets (#907)
    Open source →
  49. v1.24.0 16 Apr 2025
    Release notes

    Improved Robot Support in hcloud-cloud-controller-manager

    The hcloud-cloud-controller-manager now forwards InternalIPs by default on Robot nodes when the --node-ip flag is used. If the provided IP is not already registered as an ExternalIP and matches the expected address family, it will be forwarded automatically during initialization.

    This allows the use of vSwitch IPs in private networks and Load Balancers.

    🔗 Learn more in our updated Robot documentation 📘 Follow our how-to-guide to set up Load Balancers with vSwitch IPs.

    Features

    • robot: forward InternalIPs by default on Robot nodes (#865)
    • load-balancer: enable use-private-ip annotation for Robot servers (#898)

    Bug Fixes

    • load-balancer: don't print entire node object when adding robot target (#904)
    Open source →
  50. v1.23.1-0.20250303065912-427ea3513cdf 03 Mar 2025 pre-release

    Nothing published for this version

  51. v1.23.0 22 Jan 2025
    Release notes

    Features

    • add support and tests for Kubernetes 1.32 (#846)

    Bug Fixes

    • metrics: do not emit kubernetes_build_info metric (#849)
    Open source →
  52. v1.22.0 10 Jan 2025
    Release notes

    This release includes an extension of our current metrics to also include the internals of k8s.io/cloud-provider with respect to the work queue depth and requests to the Kubernetes API.

    Besides having all data available, this will also help us with debugging #661.

    Features

    • metrics: add metrics from cloud-provider library (#824)
    • load-balancer: emit warning if unsupported port protocol is configured (#828)
    • allow arbitrary length API tokens (#752)
    Open source →
  53. v1.21.1-0.20241209152151-6a5267f0ca61 09 Dec 2024 pre-release

    Nothing published for this version

  54. v1.21.1-0.20241209120308-9c50200bdc4d 09 Dec 2024 pre-release

    Nothing published for this version

  55. v1.21.1-0.20241204083757-dedc259439f4 04 Dec 2024 pre-release

    Nothing published for this version

  56. v1.21.0 26 Nov 2024
    Release notes

    Feature Highlights & Upgrade Notes

    Load Balancer IPs set to Private IPs

    If networking support is enabled, the load balancer IPs are now populated with the private IPs, unless the load-balancer.hetzner.cloud/disable-private-ingress annotation is set to true. Please make sure that you configured the annotation according to your needs, for example if you are using external-dns.

    Provided-By Label

    We introduced a the label instance.hetzner.cloud/provided-by, which will be automatically added to all new nodes. This label can have the values cloud or robot to distinguish between our products. We use this label in the csi-driver to ensure the daemonset is only running on cloud nodes. We recommend to add this label to your existing nodes with the appropriate value.

    • kubectl label node $CLOUD_NODE_NAME instance.hetzner.cloud/provided-by=cloud
    • kubectl label node $ROBOT_NODE_NAME instance.hetzner.cloud/provided-by=robot

    Load Balancer IPMode Proxy

    Kubernetes KEP-1860 added a new field to the Load Balancer Service Status that allows us to mark if the IP address we add should be considered as a Proxy (always send traffic here) and VIP (allow optimization by keeping the traffic in the cluster).

    Previously Kubernetes considered all IPs as VIP, which caused issues when when the PROXY protocol was in use. We have previously recommended to use the annotation load-balancer.hetzner.cloud/hostname to workaround this problem.

    We now set the new field to Proxy if the PROXY protocol is active so the issue should no longer appear. If you only added the load-balancer.hetzner.cloud/hostname annotation for this problem, you can remove it after upgrading.

    Further information:

    • https://github.com/kubernetes/enhancements/issues/1860
    • https://github.com/hetznercloud/hcloud-cloud-controller-manager/issues/160#issuecomment-788638132

    Features

    • service: Specify private ip for loadbalancer (#724)
    • add support & tests for Kubernetes 1.31 (#747)
    • helm: allow setting extra pod volumes via chart values (#744)
    • instance: add label to distinguish servers from Cloud and Robot (#764)
    • emit event when robot server name and node name mismatch (#773)
    • load-balancer: Set IPMode to "Proxy" if load balancer is configured to use proxy protocol (#727) (#783)
    • routes: emit warning if cluster cidr is misconfigured (#793)
    • load-balancer: ignore nodes that don't use known provider IDs (#780)
    • drop tests for kubernetes v1.27 and v1.28

    Bug Fixes

    • populate ingress private ip when disable-private-ingress is false (#715)
    • wrong version logged on startup (#729)
    • invalid characters in label instance-type of robot servers (#770)
    • no events are emitted as broadcaster has no sink configured (#774)

    Kubernetes Support

    This version was tested with Kubernetes 1.29 - 1.31. Furthermore, we dropped v1.27 and v1.28 support.

    Open source →
  57. v1.20.1-0.20241126102615-231676952064 26 Nov 2024 pre-release

    Nothing published for this version

  58. v1.20.1-0.20241125181059-4277b074d52b 25 Nov 2024 pre-release

    Nothing published for this version

  59. v1.20.1-0.20241120113944-6544740be9b0 20 Nov 2024 pre-release

    Nothing published for this version

  60. v1.20.1-0.20241119142910-81cc8b2c9f76 19 Nov 2024 pre-release

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive