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
.
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
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:
- 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
- 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)
This version was tested with Kubernetes 1.29 - 1.31. Furthermore, we dropped v1.27 and v1.28 support.
1.20.0 (2024-07-08)
- add support & tests for Kubernetes 1.29 (#600) (e8fabda)
- add support & tests for Kubernetes 1.30 (#679) (0748b6e)
- drop tests for kubernetes v1.25 (#597) (58261ec)
- drop tests for kubernetes v1.26 (#680) (9c4be01)
- emit Kubernetes events for error conditions (#598) (e8f9199)
- helm,manifests: only specify container args instead of command (#691) (2ba4058)
- helm: allow setting affinity for deployment (#686) (1a8ea95)
- read HCLOUD_TOKEN from file (#652) (a4343b8)
1.19.0 (2023-12-07)
- chart: add daemonset and node selector (#537) (a94384f)
- config: stricter validation for settings
HCLOUD_LOAD_BALANCERS_ENABLED
,HCLOUD_METRICS_ENABLED
&HCLOUD_NETWORK_ROUTES_ENABLED
(#546) (335a2c9) - helm: remove "v" prefix from chart version (#565) (f11aa0d), closes #529
- load-balancer: handle planned targets exceedings max targets (#570) (8bb131f)
- remove unused variable NODE_NAME (#545) (a659408)
- robot: handle ratelimiting with constant backoff (#572) (2ddc201)
- support for Robot servers (#561) (65dea11)
1.19.0-rc.0 (2023-12-01)
- chart: add daemonset and node selector (#537) (a94384f)
- config: stricter validation for settings
HCLOUD_LOAD_BALANCERS_ENABLED
,HCLOUD_METRICS_ENABLED
&HCLOUD_NETWORK_ROUTES_ENABLED
(#546) (335a2c9) - helm: remove "v" prefix from chart version (#565) (f11aa0d), closes #529
- load-balancer: handle planned targets exceedings max targets (#570) (8bb131f)
- remove unused variable NODE_NAME (#545) (a659408)
- robot: handle ratelimiting with constant backoff (#572) (2ddc201)
- support for Robot servers (#561) (65dea11)
1.18.0 (2023-09-18)
- build with Go 1.21 (#516) (7bf7e71)
- chart: configure additional tolerations (#518) (0d25cb6), closes #512
- chart: support running multiple replicas with leader election (4b18ee5)
- load-balancer: Add new node-selector annotation (#514) (db2e6dc)
- test against kubernetes v1.28 and drop v1.24 (#500) (3adf781)
1.17.2 (2023-08-18)
1.17.1 (2023-07-19)
- deploy: make last resource name configurable (#477) (79ee405)
- deploy: manifests have wrong namespace "default" (#476) (d800781), closes #475
1.17.0 (2023-07-18)
- helm: allow to set labels and annotations for podMonitor (#471) (5dad655)
- upgrade to hcloud-go v2 e4352ec (5a066a1)
- helm-chart: resource namespace and name (#462) (0c4eee6)
- routes: deleting wrong routes when other server has same private IP (#472) (5461038), closes #470
1.16.0 (2023-06-16)
- ci: qemu binfmt wrappers during release (#421) (84a7541)
- routes: Only delete routes in the Cluster CIDR (#432) (c35d292)
Affordable, sustainable & powerful! 🚀You can now get one of our Arm64 CAX servers to optimize your operations while minimizing your costs! Discover Ampere’s efficient and robust Arm64 architecture and be ready to get blown away with its performance. 😎
Learn more: https://www.hetzner.com/news/arm64-cloud
- fix(deps): update kubernetes packages to v0.26.3 by @renovate in #404
- chore(deps): update golangci/golangci-lint docker tag to v1.52.0 by @renovate in #405
- feat(helm): env var config by @samcday in #406
- chore(chart): basic README by @samcday in #407
- fix(chart): README typo by @samcday in #409
- chore(deps): update golangci/golangci-lint docker tag to v1.52.1 by @renovate in #410
- chore(deps): update actions/stale action to v8 by @renovate in #411
- chore(deps): update golangci/golangci-lint docker tag to v1.52.2 by @renovate in #413
- refactor: Update & Fix golangci-lint by @apricote in #408
- feat: new dev/test environment by @samcday in #414
- fix(ci): run e2e tests on main by @samcday in #416
- feat(goreleaser): produce OCI manifest images by @samcday in #417
- feat: publish ARM container images by @apricote in #420
Full Changelog: https://github.com/hetznercloud/hcloud-cloud-controller-manager/compare/v1.14.2...v1.15.0
- fix(deps): update kubernetes packages to v0.26.3 by @renovate in #404
- chore(deps): update golangci/golangci-lint docker tag to v1.52.0 by @renovate in #405
- feat(helm): env var config by @samcday in #406
- chore(chart): basic README by @samcday in #407
- fix(chart): README typo by @samcday in #409
- chore(deps): update golangci/golangci-lint docker tag to v1.52.1 by @renovate in #410
- chore(deps): update actions/stale action to v8 by @renovate in #411
- chore(deps): update golangci/golangci-lint docker tag to v1.52.2 by @renovate in #413
- refactor: Update & Fix golangci-lint by @apricote in #408
- feat: new dev/test environment by @samcday in #414
- fix(ci): run e2e tests on main by @samcday in #416
- feat(goreleaser): produce OCI manifest images by @samcday in #417
Full Changelog: https://github.com/hetznercloud/hcloud-cloud-controller-manager/compare/v1.14.2...v1.15.0-rc.0
- chore: multiple improvements to the release process by @apricote in #394
- feat(helm): configurable image by @samcday in #396
- chore: README / comment cleanups by @samcday in #397
- feat(chart): metrics + PodMonitor support by @samcday in #399
- chore(deps): update actions/setup-go action to v4 by @renovate in #400
- feat(chart): configurable cmdline args by @samcday in #401
- fix: handle nil servers in InstanceV2 #398 by @apricote in #402
- fix: many API requests from Routes controller by @apricote in #403
Full Changelog: https://github.com/hetznercloud/hcloud-cloud-controller-manager/compare/v1.14.1...v1.14.2
- fix(ci): wrong version published when two tags point to same commit by @apricote in #392
Full Changelog: https://github.com/hetznercloud/hcloud-cloud-controller-manager/compare/v1.14.0...v1.14.1
The release pipeline for this version was broken and no Docker Image was actually published. Please use v1.14.1 instead.
- Significantly reduced the number of Requests made to the Hetzner Cloud API. While this does not solve all cases of API rate limits, the situation should be better than before.
- chore: add apricote as codeowner by @apricote in #335
- feat: test against Kubernetes v1.26 by @apricote in #334
- ci: stop logging api token by @apricote in #336
- chore: update codeowner to use groups by @apricote in #345
- fix(deploy): node.kubernetes.io/not-ready taint is NoExecute by @flokli in #344
- Bump golang.org/x/text from 0.3.7 to 0.3.8 by @dependabot in #346
- chore(deps): Bump golang.org/x/net from 0.0.0-20220225172249-27dd8689420f to 0.7.0 by @dependabot in #352
- chore(deps): Bump github.com/emicklei/go-restful from 2.9.5+incompatible to 2.16.0+incompatible by @dependabot in #343
- test(e2e): fix flake when LB health checks have not passed by @apricote in #354
- feat: drop support for Kubernetes v1.23 by @apricote in #350
- docs: fix skaffold guide by @apricote in #348
- docs(lb): reference existing lb #351 by @apricote in #353
- Configure Renovate by @renovate in #355
- chore(deps): update alpine docker tag to v3.17 by @renovate in #357
- fix(deps): update module github.com/stretchr/testify to v1.8.2 by @renovate in #356
- chore(deps): update golang docker tag to v1.20 by @renovate in #359
- chore(deps): update golangci/golangci-lint docker tag to v1.51.2 by @renovate in #360
- fix(deps): update module github.com/hetznercloud/hcloud-go to v1.40.0 by @renovate in #361
- chore(deps): update actions/setup-go action to v3 by @renovate in #367
- chore(deps): update docker/login-action action to v2 by @renovate in #369
- chore(deps): update docker/setup-buildx-action action to v2 by @renovate in #370
- chore(deps): update goreleaser/goreleaser-action action to v4 by @renovate in #371
- fix(deps): update kubernetes packages to v0.26.2 by @renovate in #365
- chore(deps): update actions/stale action to v7 by @renovate in #368
- chore(deps): update actions/checkout action to v3 by @renovate in #364
- fix(deps): update module golang.org/x/crypto to v0.6.0 by @renovate in #366
- fix(deps): update module k8s.io/klog/v2 to v2.90.0 by @renovate in #363
- chore: initial basic helm chart by @samcday in #375
- fix(deps): update module k8s.io/klog/v2 to v2.90.1 by @renovate in #374
- chore(chart): resources configurable via values.yaml by @samcday in #376
- chore: basic .gitpod.yml by @samcday in #377
- fix(ci): main branch rename by @apricote in #379
- feat: add packaged helm chart to release artifacts by @apricote in #378
- refactor(e2e): remove dev-ccm manifests by @samcday in #380
- fix(deps): update module github.com/hetznercloud/hcloud-go to v1.41.0 by @renovate in #383
- feat(ci): publish helm chart to repository by @apricote in #381
- fix(deps): update module golang.org/x/crypto to v0.7.0 by @renovate in #382
- feat: add InstancesV2 interface by @apricote in #385
- fix: self-reported version not correct by @apricote in #387
- chore(ci): run e2e on public workers by @samcday in #388
- refactor: unnecessary API call in instance reconciliation by @apricote in #386
- test: use actual test cases by @apricote in #389
- ci: fix goreleaser helm chart config by @apricote in #390
- ci: build helm repo index by @apricote in #391
- @apricote made their first contribution in #335
- @renovate made their first contribution in #355
- @samcday made their first contribution in #375
Full Changelog: https://github.com/hetznercloud/hcloud-cloud-controller-manager/compare/v1.13.2...v1.14.0
- Significantly reduced the number of Requests made to the Hetzner Cloud API. While this does not solve all cases of API rate limits, the situation should be better than before.
- chore: add apricote as codeowner by @apricote in #335
- feat: test against Kubernetes v1.26 by @apricote in #334
- ci: stop logging api token by @apricote in #336
- chore: update codeowner to use groups by @apricote in #345
- fix(deploy): node.kubernetes.io/not-ready taint is NoExecute by @flokli in #344
- Bump golang.org/x/text from 0.3.7 to 0.3.8 by @dependabot in #346
- chore(deps): Bump golang.org/x/net from 0.0.0-20220225172249-27dd8689420f to 0.7.0 by @dependabot in #352
- chore(deps): Bump github.com/emicklei/go-restful from 2.9.5+incompatible to 2.16.0+incompatible by @dependabot in #343
- test(e2e): fix flake when LB health checks have not passed by @apricote in #354
- feat: drop support for Kubernetes v1.23 by @apricote in #350
- docs: fix skaffold guide by @apricote in #348
- docs(lb): reference existing lb #351 by @apricote in #353
- Configure Renovate by @renovate in #355
- chore(deps): update alpine docker tag to v3.17 by @renovate in #357
- fix(deps): update module github.com/stretchr/testify to v1.8.2 by @renovate in #356
- chore(deps): update golang docker tag to v1.20 by @renovate in #359
- chore(deps): update golangci/golangci-lint docker tag to v1.51.2 by @renovate in #360
- fix(deps): update module github.com/hetznercloud/hcloud-go to v1.40.0 by @renovate in #361
- chore(deps): update actions/setup-go action to v3 by @renovate in #367
- chore(deps): update docker/login-action action to v2 by @renovate in #369
- chore(deps): update docker/setup-buildx-action action to v2 by @renovate in #370
- chore(deps): update goreleaser/goreleaser-action action to v4 by @renovate in #371
- fix(deps): update kubernetes packages to v0.26.2 by @renovate in #365
- chore(deps): update actions/stale action to v7 by @renovate in #368
- chore(deps): update actions/checkout action to v3 by @renovate in #364
- fix(deps): update module golang.org/x/crypto to v0.6.0 by @renovate in #366
- fix(deps): update module k8s.io/klog/v2 to v2.90.0 by @renovate in #363
- chore: initial basic helm chart by @samcday in #375
- fix(deps): update module k8s.io/klog/v2 to v2.90.1 by @renovate in #374
- chore(chart): resources configurable via values.yaml by @samcday in #376
- chore: basic .gitpod.yml by @samcday in #377
- fix(ci): main branch rename by @apricote in #379
- feat: add packaged helm chart to release artifacts by @apricote in #378
- refactor(e2e): remove dev-ccm manifests by @samcday in #380
- fix(deps): update module github.com/hetznercloud/hcloud-go to v1.41.0 by @renovate in #383
- feat(ci): publish helm chart to repository by @apricote in #381
- fix(deps): update module golang.org/x/crypto to v0.7.0 by @renovate in #382
- feat: add InstancesV2 interface by @apricote in #385
- fix: self-reported version not correct by @apricote in #387
- chore(ci): run e2e on public workers by @samcday in #388
- refactor: unnecessary API call in instance reconciliation by @apricote in #386
- @apricote made their first contribution in #335
- @renovate made their first contribution in #355
- @samcday made their first contribution in #375
Full Changelog: https://github.com/hetznercloud/hcloud-cloud-controller-manager/compare/v1.13.2...v1.14.0-rc.0
- Fix PTR update for load balancer by @ym in #315
- @ym made their first contribution in #315
Full Changelog: https://github.com/hetznercloud/hcloud-cloud-controller-manager/compare/v1.13.1...v1.13.2
- Add skaffold for 1 click debugging + update k8s gitlab versions by @4ND3R50N in #314
- Update hcloud go to v1.35.3 by @LKaemmerling in #317
- Fix goreleaser by @4ND3R50N in #318
Full Changelog: https://github.com/hetznercloud/hcloud-cloud-controller-manager/compare/v1.13.0...v1.13.1
- Update k8s dependencies to v0.20.13 by @fhofherr in #260
- Use our own Runners by @LKaemmerling in #261
- feat: allow setting of reverse DNS records by @morremeyer in #274
- Use Go 1.18 by @LKaemmerling in #293
- Update K8s/k3s Support Matrix by @LKaemmerling in #294
- Update Dependencies by @LKaemmerling in #295
- Update hcloud-go and fix possible crash cases for servers with flexib… by @LKaemmerling in #296
- Metrics for Hetzner API calls by @maksim-paskal in #303
- Raise cache reload timeout limit by @4ND3R50N in #309
- Update to Go 1.19 by @LKaemmerling in #311
- Prioritize IPv4 address family by dual-stack by @rastislavs in #306
- Migrate to priorityClassName API by @onpaws in #283
- Flag to disable network routes by @maksim-paskal in #304
- Update all non k8s related dependencies to last versions by @LKaemmerling in #312
- Add support for k8s 1.25 by @LKaemmerling in #313
- @morremeyer made their first contribution in #274
- @maksim-paskal made their first contribution in #303
- @4ND3R50N made their first contribution in #309
- @rastislavs made their first contribution in #306
- @onpaws made their first contribution in #283
Full Changelog: https://github.com/hetznercloud/hcloud-cloud-controller-manager/compare/v1.12.1...v1.13.0
- 1b33f524 Prepare Release v1.21.1
- 9fa68870 Update hcloud-go to v1.33 (#255)
- ff044e93 deploy: add missing operator: Exists (#251)
- 7c9948b6 Bump k8s.io/kubernetes from 1.18.3 to 1.18.19 (#243)
- 451703ae Testsetup: Unify with CSI Driver test setup suite (#244)
- 635cf10a Update docs (#240)
- f21278cc Health Check: Set healthcheck port to destination port if no port was defined via annotation (#239)
docker pull hetznercloud/hcloud-cloud-controller-manager:v1.12.1
- 580c9db9 Prepare Release v1.12.0
- 9d259b9b Bring IPv6 flag in line with private ingress flag (#237)
- 7728df20 add explanation for private node IPs (#219)
- 3f1a081f Build and test with go 1.17 (#235)
- 867e2377 Ignore stale routes on RouteList (#238)
- fb6b551c Use Metadata Client provided by hcloud-go (#234)
- bcf0e74e Update README for kube-proxy IPVS information (#213)
- 6f30ee1d Update hcloud-go to v1.28.0
docker pull hetznercloud/hcloud-cloud-controller-manager:v1.12.0
- b721e5ae fix release asset version
docker pull hetznercloud/hcloud-cloud-controller-manager:latest
docker pull hetznercloud/hcloud-cloud-controller-manager:v1.11.1
- 659f728c Use ::1 host of the IPv6 subnet as the instance address
- f8d6673c Support for IPv6 NodeAddresses
- 32f602a0 Apply review results
- 354f8f85 Add Master is attached to configured Network check on controller boot.
- 1e444837 Fix typo in log message (#207)
- bf44907b Improving documentation
- e52a79be Update README.md to include Networks support
- 0d3274ca Fix for typo in hcloud command
- 1641943b Fix glob for deployment yamls
docker pull hetznercloud/hcloud-cloud-controller-manager:latest
docker pull hetznercloud/hcloud-cloud-controller-manager:v1.11.0
- b54847b9 Add option to disable IPv6 for load balancers
- 13cac638 Add #190 to yaml templates
docker pull hetznercloud/hcloud-cloud-controller-manager:latest
docker pull hetznercloud/hcloud-cloud-controller-manager:v1.10.0
- f40fa216 Fix generation of deployment yamls
docker pull hetznercloud/hcloud-cloud-controller-manager:latest
docker pull hetznercloud/hcloud-cloud-controller-manager:v1.10.0-rc2
- a0e90cae Automate release process
- 96013341 Tolerate node-role.kubernetes.io/control-plane:NoSchedule taints
docker pull hetznercloud/hcloud-cloud-controller-manager:latest
docker pull hetznercloud/hcloud-cloud-controller-manager:v1.10.0-rc1
- Fix: add correct version number to config files
- Add support for setting load balancer values via cluster-wide defaults:
HCLOUD_LOAD_BALANCERS_LOCATION
,HCLOUD_LOAD_BALANCERS_NETWORK_ZONE
,HCLOUD_LOAD_BALANCERS_DISABLE_PRIVATE_INGRESS
,HCLOUD_LOAD_BALANCERS_USE_PRIVATE_IP
(#125) - Fix: allow referencing certificates by name (#116)
- Update build to go 1.16
- Update hcloud-go to 1.25.0
- Fix: Creating a Route may fail because of stale cache
- Add support for Hetzner Cloud Managed Certificates
- Fix: excessive calls to
/v1/servers
endpoint.
- Fix: nil pointer dereference when Load Balancers were disabled
- Update hcloud-go to 1.22.0
- Update build to go 1.15
- Fix: update default health check (#87)
- Fix: Ignore protected Load Balancers on deletion instead of raising an error
You can update by running
### for Networks Version
kubectl apply -f https://raw.githubusercontent.com/hetznercloud/hcloud-cloud-controller-manager/master/deploy/ccm-networks.yaml
### for without Networks
https://raw.githubusercontent.com/hetznercloud/hcloud-cloud-controller-manager/master/deploy/ccm.yaml
- Fix: nil pointer dereference when Network was not found
- Update hcloud-go to 1.20.0
- Add
HCLOUD_LOAD_BALANCERS_ENABLED
env variable to disable the Load Balancer feature, per default the Load Balancers are enabled. - Use defaults if health check annotations are not set.
- Add support for changing the Load Balancer type
- Add missing support Load Balancer sticky sessions
- Fix wrong parsing of health check timeout and interval
- Add support for hcloud Load Balancer
- Update kubernetes dependencies to v1.16.2
- Update build to go 1.14
You can find a detailed description for the new Load Balancers under https://github.com/hetznercloud/hcloud-cloud-controller-manager/blob/master/docs/load_balancers.md
- Add better error handling and validation for certain errors related to wrong API tokens
- Add Support for Kubernetes 1.16
- Add Networks Support
This release was tested on Kubernetes 1.15.x.
- Kubernetes 1.11 and 1.12 are now supported
- update hcloud-go to 1.12.0
- update hcloud-go to v1.4.0
- update kubernetes dependencies to v1.9.3
- update kubernetes dependencies to v1.9.2
- initial release