Skip to content

Commit 12e3a49

Browse files
authored
Merge branch 'main' into feature/chart-security-context
2 parents b63db5e + 01886ea commit 12e3a49

39 files changed

Lines changed: 1450 additions & 899 deletions

.github/workflows/goreleaser.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ jobs:
1111
runs-on: ubuntu-latest
1212
steps:
1313
- name: Checkout
14-
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
14+
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
1515
with:
1616
fetch-depth: 0
1717

1818
- name: Set up Go
19-
uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6
19+
uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6
2020
with:
2121
go-version-file: go.mod
2222

@@ -33,7 +33,7 @@ jobs:
3333
- name: Run GoReleaser for snapshot
3434
# This does not actually publish anything, but makes sure that the images can be build
3535
if: "!startsWith(github.ref, 'refs/tags/')"
36-
uses: goreleaser/goreleaser-action@5daf1e915a5f0af01ddbcd89a43b8061ff4f1a89 # v7
36+
uses: goreleaser/goreleaser-action@f06c13b6b1a9625abc9e6e439d9c05a8f2190e94 # v7
3737
with:
3838
version: "~> v2"
3939
args: release --snapshot --clean
@@ -49,7 +49,7 @@ jobs:
4949
5050
- name: Run GoReleaser for tag
5151
if: "startsWith(github.ref, 'refs/tags/')"
52-
uses: goreleaser/goreleaser-action@5daf1e915a5f0af01ddbcd89a43b8061ff4f1a89 # v7
52+
uses: goreleaser/goreleaser-action@f06c13b6b1a9625abc9e6e439d9c05a8f2190e94 # v7
5353
with:
5454
version: "~> v2"
5555
args: release --clean

.github/workflows/lint.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ jobs:
1717
- v4.0.0 # renovate: datasource=github-releases depName=helm/helm versioning=same-major
1818

1919
steps:
20-
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
20+
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
2121

22-
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
22+
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
2323
with:
2424
python-version: 3.x
2525

@@ -46,13 +46,13 @@ jobs:
4646
# Helm lints are executed in a separate action with a version matrix
4747
SKIP: "helm-lint,helm-snapshots,deploy-manifests"
4848
steps:
49-
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
49+
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
5050

51-
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
51+
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
5252
with:
5353
python-version: 3.x
5454

55-
- uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5
55+
- uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6
5656
with:
5757
path: ~/.cache/golangci-lint
5858
key: pre-commit-golangci-lint|${{ env.pythonLocation }}|${{ hashFiles('.pre-commit-config.yaml') }}|${{ hashFiles('**/*.go') }}

.github/workflows/robot.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ jobs:
2626
ANSIBLE_FORCE_COLOR: true
2727

2828
steps:
29-
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
29+
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
3030

3131
- name: Install robot server
3232
env:

.github/workflows/test.yml

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,14 @@ jobs:
99
name: unit
1010
runs-on: ubuntu-latest
1111
steps:
12-
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
13-
- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6
12+
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
13+
- uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6
1414
with:
1515
go-version-file: go.mod
1616

1717
- run: go test -v -race -coverprofile=coverage.txt ./...
1818

19-
- uses: codecov/codecov-action@e79a6962e0d4c0c17b229090214935d2e33f8354 # v6
19+
- uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7
2020
if: >
2121
!startsWith(github.head_ref, 'renovate/') &&
2222
!startsWith(github.head_ref, 'releaser-pleaser--')
@@ -53,17 +53,17 @@ jobs:
5353
CERT_DOMAIN: hc-integrations-test.de
5454

5555
steps:
56-
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
56+
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
5757

58-
- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6
58+
- uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6
5959
with:
6060
go-version-file: go.mod
6161

6262
- uses: hetznercloud/setup-hcloud@ac9e7d74fb41a3ca44a6a3da123bd5aa70731e3a # v2
6363

64-
- uses: opentofu/setup-opentofu@847eaa4afeb791b06daa46e8eafa8b1b68d7cfb4 # v2
64+
- uses: opentofu/setup-opentofu@a1320f892987e89d278cc92dc5adc984fb93aca4 # v2
6565
with:
66-
tofu_version: v1.12.1 # renovate: datasource=github-releases depName=opentofu/opentofu
66+
tofu_version: v1.12.3 # renovate: datasource=github-releases depName=opentofu/opentofu
6767
tofu_wrapper: false
6868

6969
- uses: yokawasa/action-setup-kube-tools@9d39563c24d4a419d1a8289c34d6da5a6171252c # v0.13.5
@@ -72,9 +72,9 @@ jobs:
7272
helm
7373
kubectl
7474
skaffold
75-
helm: v4.2.0 # renovate: datasource=github-releases depName=helm/helm
76-
kubectl: v1.36.1 # renovate: datasource=github-releases depName=kubernetes/kubernetes
77-
skaffold: v2.21.0 # renovate: datasource=github-releases depName=GoogleContainerTools/skaffold
75+
helm: v4.2.2 # renovate: datasource=github-releases depName=helm/helm
76+
kubectl: v1.36.2 # renovate: datasource=github-releases depName=kubernetes/kubernetes
77+
skaffold: v2.23.0 # renovate: datasource=github-releases depName=GoogleContainerTools/skaffold
7878

7979
- name: Setup k3sup
8080
env:
@@ -106,7 +106,7 @@ jobs:
106106
bash scripts/get-coverage-from-k8s.sh
107107
108108
- name: Upload coverage reports to Codecov
109-
uses: codecov/codecov-action@e79a6962e0d4c0c17b229090214935d2e33f8354 # v6
109+
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7
110110
if: >
111111
!startsWith(github.head_ref, 'renovate/') &&
112112
!startsWith(github.head_ref, 'releaser-pleaser--')
@@ -171,17 +171,17 @@ jobs:
171171
ROBOT_ENABLED: "true"
172172

173173
steps:
174-
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
174+
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
175175

176-
- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6
176+
- uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6
177177
with:
178178
go-version-file: go.mod
179179

180180
- uses: hetznercloud/setup-hcloud@ac9e7d74fb41a3ca44a6a3da123bd5aa70731e3a # v2
181181

182-
- uses: opentofu/setup-opentofu@847eaa4afeb791b06daa46e8eafa8b1b68d7cfb4 # v2
182+
- uses: opentofu/setup-opentofu@a1320f892987e89d278cc92dc5adc984fb93aca4 # v2
183183
with:
184-
tofu_version: v1.12.1 # renovate: datasource=github-releases depName=opentofu/opentofu
184+
tofu_version: v1.12.3 # renovate: datasource=github-releases depName=opentofu/opentofu
185185
tofu_wrapper: false
186186

187187
- uses: yokawasa/action-setup-kube-tools@9d39563c24d4a419d1a8289c34d6da5a6171252c # v0.13.5
@@ -190,9 +190,9 @@ jobs:
190190
helm
191191
kubectl
192192
skaffold
193-
helm: v4.2.0 # renovate: datasource=github-releases depName=helm/helm
194-
kubectl: v1.36.1 # renovate: datasource=github-releases depName=kubernetes/kubernetes
195-
skaffold: v2.21.0 # renovate: datasource=github-releases depName=GoogleContainerTools/skaffold
193+
helm: v4.2.2 # renovate: datasource=github-releases depName=helm/helm
194+
kubectl: v1.36.2 # renovate: datasource=github-releases depName=kubernetes/kubernetes
195+
skaffold: v2.23.0 # renovate: datasource=github-releases depName=GoogleContainerTools/skaffold
196196

197197
- name: Install k3sup
198198
run: |
@@ -229,7 +229,7 @@ jobs:
229229
bash scripts/get-coverage-from-k8s.sh
230230
231231
- name: Upload coverage reports to Codecov
232-
uses: codecov/codecov-action@e79a6962e0d4c0c17b229090214935d2e33f8354 # v6
232+
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7
233233
if: >
234234
!startsWith(github.head_ref, 'renovate/') &&
235235
!startsWith(github.head_ref, 'releaser-pleaser--')

.pre-commit-config.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ repos:
6262
language: node
6363
types: [text]
6464
require_serial: false
65-
additional_dependencies: [prettier@3.8.3]
65+
additional_dependencies: [prettier@3.9.1]
6666
files: \.(md|ya?ml)$
6767
exclude: ^(CHANGELOG.md|chart/templates/.*|chart/.snapshots/.*|docs/reference/load_balancer_.*\.md|)$
6868

@@ -85,7 +85,7 @@ repos:
8585
rev: v2.12.2
8686
hooks:
8787
- id: golangci-lint-full
88-
language_version: 1.26.3 # renovate: datasource=golang-version depName=go
88+
language_version: 1.26.4 # renovate: datasource=golang-version depName=go
8989

9090
- repo: local
9191
hooks:

CHANGELOG.md

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,63 @@
11
# Changelog
22

3+
## [v1.33.0](https://github.com/hetznercloud/hcloud-cloud-controller-manager/releases/tag/v1.33.0)
4+
5+
### Changed
6+
7+
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.
8+
9+
### Removed
10+
11+
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:
12+
- `hcops/AllServersCache.ByID`
13+
- `hcops/AllServersCache.ByName`
14+
- `hcops/AllServersCache.ByPrivateIP`
15+
- `hcops/AllServersCache.getCache`
16+
- `hcops/AllServersCache.refreshCache`
17+
18+
They are superseded by the new server cache metric `cloud_controller_manager_server_cache_requests_total`, a counter partitioned by subsystem, mode, and result:
19+
20+
- subsystem: instances_v2, routes (or none when unset)
21+
- mode: all, one, off
22+
- result: hit, miss
23+
24+
```
25+
cloud_controller_manager_server_cache_requests_total{subsystem="instances_v2", mode="all", result="hit"}
26+
cloud_controller_manager_server_cache_requests_total{subsystem="routes", mode="all", result="miss"}
27+
```
28+
29+
Update any dashboards or alerts referencing the old op series accordingly.
30+
31+
### Features
32+
33+
- **cache**: replace TTL with max-age
34+
- **cache**: use server cache in routes controller
35+
36+
### Bug Fixes
37+
38+
- **cache**: when api returns not found do not return an expired entry (#1271)
39+
40+
## [v1.32.0](https://github.com/hetznercloud/hcloud-cloud-controller-manager/releases/tag/v1.32.0)
41+
42+
### Cache Server Lookups in Node Controllers
43+
44+
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.
45+
46+
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.
47+
48+
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:
49+
50+
- `HCLOUD_SERVER_CACHE_MODE` (`all` | `one` | `off`, default `all`):
51+
52+
- `all` — fetch all Servers once and serve lookups from the snapshot until the TTL expires.
53+
- `one` — cache each Server individually with its own expiration.
54+
- `off` — disable caching; every lookup hits the API.
55+
- `HCLOUD_SERVER_CACHE_TTL` (duration, default `10s`): lifetime of cached entries (e.g. `30s`, `2m`); values above a minute are not recommended.
56+
57+
### Features
58+
59+
- **instances**: cache server lookups to reduce API calls (#1252)
60+
361
## [v1.31.1](https://github.com/hetznercloud/hcloud-cloud-controller-manager/releases/tag/v1.31.1)
462

563
### Bug Fixes

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM alpine:3.23
1+
FROM alpine:3.24
22
RUN apk add --no-cache ca-certificates bash
33
COPY hcloud-cloud-controller-manager /bin/hcloud-cloud-controller-manager
44
ENTRYPOINT ["/bin/hcloud-cloud-controller-manager"]

chart/.snapshots/default.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ spec:
167167
key: robot-user
168168
name: hcloud
169169
optional: true
170-
image: docker.io/hetznercloud/hcloud-cloud-controller-manager:v1.31.1 # x-releaser-pleaser-version
170+
image: docker.io/hetznercloud/hcloud-cloud-controller-manager:v1.33.0 # x-releaser-pleaser-version
171171
ports:
172172
- name: metrics
173173
containerPort: 8233

chart/.snapshots/full.daemonset.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ spec:
176176
key: robot-user
177177
name: hcloud
178178
optional: true
179-
image: docker.io/hetznercloud/hcloud-cloud-controller-manager:v1.31.1 # x-releaser-pleaser-version
179+
image: docker.io/hetznercloud/hcloud-cloud-controller-manager:v1.33.0 # x-releaser-pleaser-version
180180
ports:
181181
- name: metrics
182182
containerPort: 8233

chart/Chart.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
apiVersion: v2
22
name: hcloud-cloud-controller-manager
33
type: application
4-
version: 1.31.1 # x-releaser-pleaser-version
4+
version: 1.33.0 # x-releaser-pleaser-version

0 commit comments

Comments
 (0)