Skip to content

Commit db3243e

Browse files
authored
Merge branch 'main' into patchday-march
2 parents 8cfc36f + 77572ae commit db3243e

File tree

7 files changed

+487
-74
lines changed

7 files changed

+487
-74
lines changed

.github/workflows/publish-chart.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ jobs:
1414
runs-on: ubuntu-latest
1515
steps:
1616
- name: Harden Runner
17-
uses: step-security/harden-runner@5ef0c079ce82195b2a36a210272d6b661572d83e # v2.14.2
17+
uses: step-security/harden-runner@58077d3c7e43986b6b15fba718e8ea69e387dfcc # v2.15.1
1818
with:
1919
egress-policy: audit
2020

.github/workflows/release.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,16 +37,16 @@ jobs:
3737
restore-keys: |
3838
${{ runner.os }}-go-
3939
- uses: sigstore/cosign-installer@faadad0cce49287aee09b3a48701e75088a2c6ad # v4.0.0
40-
- uses: anchore/sbom-action/download-syft@28d71544de8eaf1b958d335707167c5f783590ad # v0.22.2
40+
- uses: anchore/sbom-action/download-syft@17ae1740179002c89186b61233e0f892c3118b11 # v0.23.0
4141

4242
- name: Set Up Docker Buildx
43-
uses: docker/setup-buildx-action@v3
43+
uses: docker/setup-buildx-action@v4
4444

4545
- name: Set up Cosign
4646
uses: sigstore/cosign-installer@v4.0.0
4747

4848
- name: Login to Registry
49-
uses: docker/login-action@v3
49+
uses: docker/login-action@v4
5050
with:
5151
registry: ${{ env.REGISTRY }}
5252
username: ${{ github.actor }}

.github/workflows/semgrep.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ jobs:
2929

3030
# Upload findings to GitHub Advanced Security Dashboard [step 2/2]
3131
- name: Upload SARIF file for GitHub Advanced Security Dashboard
32-
uses: github/codeql-action/upload-sarif@89a39a4e59826350b863aa6b6252a07ad50cf83e # v4.32.4
32+
uses: github/codeql-action/upload-sarif@0d579ffd059c29b07949a3cce3983f0780820c98 # v4.32.6
3333
with:
3434
sarif_file: semgrep.sarif
3535
if: always()

go.mod

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,16 @@ go 1.26.0
99
replace sigs.k8s.io/structured-merge-diff/v4 => sigs.k8s.io/structured-merge-diff/v4 v4.7.0
1010

1111
require (
12-
github.com/cert-manager/cert-manager v1.19.3
13-
github.com/stackitcloud/stackit-sdk-go/core v0.21.1
12+
github.com/cert-manager/cert-manager v1.19.4
13+
github.com/stackitcloud/stackit-sdk-go/core v0.22.0
1414
github.com/stackitcloud/stackit-sdk-go/services/dns v0.17.6
1515
github.com/stretchr/testify v1.11.1
1616
go.uber.org/mock v0.6.0
1717
go.uber.org/zap v1.27.1
18-
k8s.io/api v0.34.3
19-
k8s.io/apiextensions-apiserver v0.34.3
20-
k8s.io/apimachinery v0.34.3
21-
k8s.io/client-go v0.34.3
18+
k8s.io/api v0.34.5
19+
k8s.io/apiextensions-apiserver v0.34.5
20+
k8s.io/apimachinery v0.34.5
21+
k8s.io/client-go v0.34.5
2222
k8s.io/utils v0.0.0-20260210185600-b8788abfbbc2
2323
)
2424

@@ -76,15 +76,15 @@ require (
7676
go.etcd.io/etcd/api/v3 v3.6.5 // indirect
7777
go.etcd.io/etcd/client/pkg/v3 v3.6.5 // indirect
7878
go.etcd.io/etcd/client/v3 v3.6.5 // indirect
79-
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
79+
go.opentelemetry.io/auto/sdk v1.2.1 // indirect
8080
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 // indirect
8181
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 // indirect
82-
go.opentelemetry.io/otel v1.37.0 // indirect
82+
go.opentelemetry.io/otel v1.40.0 // indirect
8383
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 // indirect
8484
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0 // indirect
85-
go.opentelemetry.io/otel/metric v1.37.0 // indirect
86-
go.opentelemetry.io/otel/sdk v1.37.0 // indirect
87-
go.opentelemetry.io/otel/trace v1.37.0 // indirect
85+
go.opentelemetry.io/otel/metric v1.40.0 // indirect
86+
go.opentelemetry.io/otel/sdk v1.40.0 // indirect
87+
go.opentelemetry.io/otel/trace v1.40.0 // indirect
8888
go.opentelemetry.io/proto/otlp v1.7.0 // indirect
8989
go.uber.org/multierr v1.11.0 // indirect
9090
go.yaml.in/yaml/v2 v2.4.3 // indirect
@@ -95,7 +95,7 @@ require (
9595
golang.org/x/net v0.47.0 // indirect
9696
golang.org/x/oauth2 v0.31.0 // indirect
9797
golang.org/x/sync v0.18.0 // indirect
98-
golang.org/x/sys v0.38.0 // indirect
98+
golang.org/x/sys v0.40.0 // indirect
9999
golang.org/x/term v0.37.0 // indirect
100100
golang.org/x/text v0.31.0 // indirect
101101
golang.org/x/time v0.13.0 // indirect
@@ -109,10 +109,10 @@ require (
109109
gopkg.in/inf.v0 v0.9.1 // indirect
110110
gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
111111
gopkg.in/yaml.v3 v3.0.1 // indirect
112-
k8s.io/apiserver v0.34.3 // indirect
113-
k8s.io/component-base v0.34.3 // indirect
112+
k8s.io/apiserver v0.34.5 // indirect
113+
k8s.io/component-base v0.34.5 // indirect
114114
k8s.io/klog/v2 v2.130.1 // indirect
115-
k8s.io/kms v0.34.3 // indirect
115+
k8s.io/kms v0.34.5 // indirect
116116
k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 // indirect
117117
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.33.0 // indirect
118118
sigs.k8s.io/controller-runtime v0.22.3 // indirect

go.sum

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM
1010
github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ=
1111
github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM=
1212
github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw=
13-
github.com/cert-manager/cert-manager v1.19.3 h1:3d0Nk/HO3BOmAdBJNaBh+6YgaO3Ciey3xCpOjiX5Obs=
14-
github.com/cert-manager/cert-manager v1.19.3/go.mod h1:e9NzLtOKxTw7y99qLyWGmPo6mrC1Nh0EKKcMkRfK+GE=
13+
github.com/cert-manager/cert-manager v1.19.4 h1:7lOkSYj+nJNjgGFfAznQzPpOfWX+1Kgz6xUXwTa/K5k=
14+
github.com/cert-manager/cert-manager v1.19.4/go.mod h1:9uBnn3IK9NxjjuXmQDYhwOwFUU5BtGVB1g/voPvvcVw=
1515
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
1616
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
1717
github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4=
@@ -145,8 +145,8 @@ github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4
145145
github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
146146
github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk=
147147
github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
148-
github.com/stackitcloud/stackit-sdk-go/core v0.21.1 h1:Y/PcAgM7DPYMNqum0MLv4n1mF9ieuevzcCIZYQfm3Ts=
149-
github.com/stackitcloud/stackit-sdk-go/core v0.21.1/go.mod h1:osMglDby4csGZ5sIfhNyYq1bS1TxIdPY88+skE/kkmI=
148+
github.com/stackitcloud/stackit-sdk-go/core v0.22.0 h1:6rViz7GnNwXSh51Lur5xuDzO8EWSZfN9J0HvEkBKq6c=
149+
github.com/stackitcloud/stackit-sdk-go/core v0.22.0/go.mod h1:osMglDby4csGZ5sIfhNyYq1bS1TxIdPY88+skE/kkmI=
150150
github.com/stackitcloud/stackit-sdk-go/services/dns v0.17.6 h1:GBRb49x5Nax/oQQaaf2F3kKwv8DQQOL0TQOC0C/v/Ew=
151151
github.com/stackitcloud/stackit-sdk-go/services/dns v0.17.6/go.mod h1:IX9iL3MigDZUmzwswTJMfYvyi118KAHrFMfjJUy5NYk=
152152
github.com/stoewer/go-strcase v1.3.1 h1:iS0MdW+kVTxgMoE1LAZyMiYJFKlOzLooE4MxjirtkAs=
@@ -184,26 +184,26 @@ go.etcd.io/etcd/server/v3 v3.6.4 h1:LsCA7CzjVt+8WGrdsnh6RhC0XqCsLkBly3ve5rTxMAU=
184184
go.etcd.io/etcd/server/v3 v3.6.4/go.mod h1:aYCL/h43yiONOv0QIR82kH/2xZ7m+IWYjzRmyQfnCAg=
185185
go.etcd.io/raft/v3 v3.6.0 h1:5NtvbDVYpnfZWcIHgGRk9DyzkBIXOi8j+DDp1IcnUWQ=
186186
go.etcd.io/raft/v3 v3.6.0/go.mod h1:nLvLevg6+xrVtHUmVaTcTz603gQPHfh7kUAwV6YpfGo=
187-
go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA=
188-
go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A=
187+
go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=
188+
go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=
189189
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 h1:q4XOmH/0opmeuJtPsbFNivyl7bCt7yRBbeEm2sC/XtQ=
190190
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0/go.mod h1:snMWehoOh2wsEwnvvwtDyFCxVeDAODenXHtn5vzrKjo=
191191
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 h1:F7Jx+6hwnZ41NSFTO5q4LYDtJRXBf2PD0rNBkeB/lus=
192192
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0/go.mod h1:UHB22Z8QsdRDrnAtX4PntOl36ajSxcdUMt1sF7Y6E7Q=
193-
go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ=
194-
go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I=
193+
go.opentelemetry.io/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms=
194+
go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g=
195195
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 h1:Ahq7pZmv87yiyn3jeFz/LekZmPLLdKejuO3NcK9MssM=
196196
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0/go.mod h1:MJTqhM0im3mRLw1i8uGHnCvUEeS7VwRyxlLC78PA18M=
197197
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0 h1:EtFWSnwW9hGObjkIdmlnWSydO+Qs8OwzfzXLUPg4xOc=
198198
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0/go.mod h1:QjUEoiGCPkvFZ/MjK6ZZfNOS6mfVEVKYE99dFhuN2LI=
199-
go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE=
200-
go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E=
201-
go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI=
202-
go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg=
203-
go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc=
204-
go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps=
205-
go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4=
206-
go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0=
199+
go.opentelemetry.io/otel/metric v1.40.0 h1:rcZe317KPftE2rstWIBitCdVp89A2HqjkxR3c11+p9g=
200+
go.opentelemetry.io/otel/metric v1.40.0/go.mod h1:ib/crwQH7N3r5kfiBZQbwrTge743UDc7DTFVZrrXnqc=
201+
go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8=
202+
go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE=
203+
go.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4AtAlbuWdCYw=
204+
go.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg=
205+
go.opentelemetry.io/otel/trace v1.40.0 h1:WA4etStDttCSYuhwvEa8OP8I5EWu24lkOzp+ZYblVjw=
206+
go.opentelemetry.io/otel/trace v1.40.0/go.mod h1:zeAhriXecNGP/s2SEG3+Y8X9ujcJOTqQ5RgdEJcawiA=
207207
go.opentelemetry.io/proto/otlp v1.7.0 h1:jX1VolD6nHuFzOYso2E73H85i92Mv8JQYk0K9vz09os=
208208
go.opentelemetry.io/proto/otlp v1.7.0/go.mod h1:fSKjH6YJ7HDlwzltzyMj036AJ3ejJLCgCSHGj4efDDo=
209209
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
@@ -245,8 +245,8 @@ golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
245245
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
246246
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
247247
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
248-
golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc=
249-
golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
248+
golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ=
249+
golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
250250
golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU=
251251
golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254=
252252
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -289,22 +289,22 @@ gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYs
289289
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
290290
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
291291
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
292-
k8s.io/api v0.34.3 h1:D12sTP257/jSH2vHV2EDYrb16bS7ULlHpdNdNhEw2S4=
293-
k8s.io/api v0.34.3/go.mod h1:PyVQBF886Q5RSQZOim7DybQjAbVs8g7gwJNhGtY5MBk=
294-
k8s.io/apiextensions-apiserver v0.34.3 h1:p10fGlkDY09eWKOTeUSioxwLukJnm+KuDZdrW71y40g=
295-
k8s.io/apiextensions-apiserver v0.34.3/go.mod h1:aujxvqGFRdb/cmXYfcRTeppN7S2XV/t7WMEc64zB5A0=
296-
k8s.io/apimachinery v0.34.3 h1:/TB+SFEiQvN9HPldtlWOTp0hWbJ+fjU+wkxysf/aQnE=
297-
k8s.io/apimachinery v0.34.3/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw=
298-
k8s.io/apiserver v0.34.3 h1:uGH1qpDvSiYG4HVFqc6A3L4CKiX+aBWDrrsxHYK0Bdo=
299-
k8s.io/apiserver v0.34.3/go.mod h1:QPnnahMO5C2m3lm6fPW3+JmyQbvHZQ8uudAu/493P2w=
300-
k8s.io/client-go v0.34.3 h1:wtYtpzy/OPNYf7WyNBTj3iUA0XaBHVqhv4Iv3tbrF5A=
301-
k8s.io/client-go v0.34.3/go.mod h1:OxxeYagaP9Kdf78UrKLa3YZixMCfP6bgPwPwNBQBzpM=
302-
k8s.io/component-base v0.34.3 h1:zsEgw6ELqK0XncCQomgO9DpUIzlrYuZYA0Cgo+JWpVk=
303-
k8s.io/component-base v0.34.3/go.mod h1:5iIlD8wPfWE/xSHTRfbjuvUul2WZbI2nOUK65XL0E/c=
292+
k8s.io/api v0.34.5 h1:+cFkROLIixuQqUZhxizqJKfoT4iwAJneG7NQwqWYyIU=
293+
k8s.io/api v0.34.5/go.mod h1:0RmYc0hpIHEA5s7AyzcPp6j62Z0tRZ+Y7mFFZeXPBuI=
294+
k8s.io/apiextensions-apiserver v0.34.5 h1:s8Km22eMZLk7XdtJifHS6DQWchz9a3OwAzkfeUzmJzA=
295+
k8s.io/apiextensions-apiserver v0.34.5/go.mod h1:e8GEFwXdB68+VQa9GaMDSD4IVW0jgiEzU7LkId00ZX4=
296+
k8s.io/apimachinery v0.34.5 h1:vXJoeBDaW4D9mayqjP1CrKH8kHyucNRvaLjDJaJOc08=
297+
k8s.io/apimachinery v0.34.5/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw=
298+
k8s.io/apiserver v0.34.5 h1:AmVUv/J2Dst5Na1n+gwOSDmyh1LFtQeYgBwsXwikvkQ=
299+
k8s.io/apiserver v0.34.5/go.mod h1:l5eSUMIG44iuFshFEQUeqIgy/EvtPQOWe3p+ZhDLSdw=
300+
k8s.io/client-go v0.34.5 h1:eZiO7gq+FfrB8hR7/Z5erA+QEbShtp4DMgJdboEzwhY=
301+
k8s.io/client-go v0.34.5/go.mod h1:olcW68aK21BJeIWNXrreRNeZJJfyIbxJ98FYNN/WC5Y=
302+
k8s.io/component-base v0.34.5 h1:g2ypv32Rj+I9zkQw7ajV+otjzPCHfpP0OOaViG3iC4Q=
303+
k8s.io/component-base v0.34.5/go.mod h1:U5sQb5Gnowr+G1Gf5h9RMBPdfzmTa6O1gpbUSZg0gEk=
304304
k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
305305
k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
306-
k8s.io/kms v0.34.3 h1:QzBOD0sk1bGQVMcZQAHGjtbP1iKZJUyhC6D0I+BTxIE=
307-
k8s.io/kms v0.34.3/go.mod h1:s1CFkLG7w9eaTYvctOxosx88fl4spqmixnNpys0JAtM=
306+
k8s.io/kms v0.34.5 h1:jdAXaoyXAGHKRGvWpQ0+vUb88dcjcLP3GZ2BmbEsyRQ=
307+
k8s.io/kms v0.34.5/go.mod h1:s1CFkLG7w9eaTYvctOxosx88fl4spqmixnNpys0JAtM=
308308
k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 h1:Y3gxNAuB0OBLImH611+UDZcmKS3g6CthxToOb37KgwE=
309309
k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912/go.mod h1:kdmbQkyfwUagLfXIad1y2TdrjPFWp2Q89B3qkRwf/pQ=
310310
k8s.io/utils v0.0.0-20260210185600-b8788abfbbc2 h1:AZYQSJemyQB5eRxqcPky+/7EdBj0xi3g0ZcxxJ7vbWU=

internal/resolver/resolver.go

Lines changed: 44 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"fmt"
77
"net/http"
88
"os"
9+
"slices"
910
"strings"
1011

1112
"github.com/cert-manager/cert-manager/pkg/acme/webhook"
@@ -82,7 +83,7 @@ func (s *stackitDnsProviderResolver) Present(ch *v1alpha1.ChallengeRequest) erro
8283
return err
8384
}
8485

85-
return s.updateExistingRRSet(initResolverRes, rrSet)
86+
return s.updateExistingRRSet(initResolverRes, rrSet, ch.Key)
8687
}
8788

8889
// CleanUp should delete the relevant TXT record from the DNS provider console.
@@ -97,7 +98,7 @@ func (s *stackitDnsProviderResolver) CleanUp(ch *v1alpha1.ChallengeRequest) erro
9798
return s.handleErrorDuringInitialization(err)
9899
}
99100

100-
return s.handleRRSetCleanup(initResolverRes)
101+
return s.handleRRSetCleanup(initResolverRes, ch.Key)
101102
}
102103

103104
// Initialize will be called when the webhook first starts.
@@ -284,6 +285,7 @@ func (s *stackitDnsProviderResolver) handleErrorDuringInitialization(
284285

285286
func (s *stackitDnsProviderResolver) handleRRSetCleanup(
286287
initResolverRes *initResolverContextResult,
288+
challengeKey string,
287289
) error {
288290
s.logger.Info("Cleaning up RRSet", zap.String("rrSetName", initResolverRes.rrSetName))
289291

@@ -296,7 +298,27 @@ func (s *stackitDnsProviderResolver) handleRRSetCleanup(
296298
return s.handleFetchRRSetError(err, initResolverRes.rrSetName)
297299
}
298300

299-
return s.deleteRRSet(initResolverRes.rrSetRepository, rrSet, initResolverRes.rrSetName)
301+
if rrSet == nil || rrSet.Records == nil || len(*rrSet.Records) == 0 {
302+
return s.deleteRRSet(initResolverRes.rrSetRepository, rrSet, initResolverRes.rrSetName)
303+
}
304+
305+
originalLen := len(*rrSet.Records)
306+
307+
*rrSet.Records = slices.DeleteFunc(*rrSet.Records, func(r stackitdnsclient.Record) bool {
308+
return r.Content != nil && *r.Content == challengeKey
309+
})
310+
311+
if len(*rrSet.Records) == originalLen {
312+
s.logger.Info("Challenge key not found in RRSet records, nothing to clean up", zap.String("rrSetName", initResolverRes.rrSetName))
313+
314+
return nil
315+
}
316+
317+
if len(*rrSet.Records) == 0 {
318+
return s.deleteRRSet(initResolverRes.rrSetRepository, rrSet, initResolverRes.rrSetName)
319+
}
320+
321+
return initResolverRes.rrSetRepository.UpdateRRSet(s.ctx, *rrSet)
300322
}
301323

302324
func (s *stackitDnsProviderResolver) handleFetchRRSetError(err error, rrSetName string) error {
@@ -381,12 +403,31 @@ func (s *stackitDnsProviderResolver) handleRRSetNotFound(
381403
return nil
382404
}
383405

406+
func keyExists(records *[]stackitdnsclient.Record, challengeKey string) bool {
407+
for _, record := range *records {
408+
if record.Content != nil && *record.Content == challengeKey {
409+
return true
410+
}
411+
}
412+
413+
return false
414+
}
415+
384416
func (s *stackitDnsProviderResolver) updateExistingRRSet(
385417
initResolverRes *initResolverContextResult,
386418
rrSet *stackitdnsclient.RecordSet,
419+
challengeKey string,
387420
) error {
388421
s.logger.Info("RRSet found, updating RRSet", zap.String("rrSetName", initResolverRes.rrSetName))
389422

423+
if !keyExists(rrSet.Records, challengeKey) {
424+
s.logger.Info("Challenge key not found in existing RRSet, adding new record", zap.String("rrSetName", initResolverRes.rrSetName))
425+
newRecord := stackitdnsclient.Record{
426+
Content: &challengeKey,
427+
}
428+
*rrSet.Records = append(*rrSet.Records, newRecord)
429+
}
430+
390431
rrSet.Ttl = &initResolverRes.acmeTxtDefaultTTL
391432

392433
if err := initResolverRes.rrSetRepository.UpdateRRSet(s.ctx, *rrSet); err != nil {

0 commit comments

Comments
 (0)