You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/docs/releases/release-notes/release-notes-1.16.md
+36-4Lines changed: 36 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -130,14 +130,47 @@ This significantly reduces its memory usage.
130
130
It also reduces the load on the Kubernetes API server, when cainjector starts up,
131
131
because it no longer needs to send all the data of all the Secret resources over the network.
132
132
133
-
We have added a new `ClientWatchList` feature flag to the controller, cainjector, and the webhook.
134
-
This is actually a new beta feature in the Kubernetes client-go module,
135
-
which enables a much more efficient mechanism for populating the client side caches.
133
+
cert-manager now uses client-go `v0.31.0` which [supports a new `WatchListClient` feature](https://relnotes.k8s.io/?markdown=WatchListClient).
134
+
This enables cert-manager to make use of the [Streaming Lists feature of the Kubernetes API server](https://kubernetes.io/docs/reference/using-api/api-concepts/#streaming-lists).
136
135
This reduces the load on the Kubernetes API server,
137
136
because cert-manager components will no longer request complete unpaged lists of all API resources when they start up.
138
137
And it reduces the peak memory use of the cert-manager components when they startup,
139
138
because they no longer have to hold a duplicate unpaged list of resources in-memory
140
139
while they add them to the client side cache.
140
+
To use this feature, you first need to enable the `WatchList` feature in the Kubernetes API server,
141
+
which is available since Kubernetes 1.27.
142
+
Second, you need to enable the client-go `WatchListClient` feature in the cert-manager components.
143
+
If you installed cert-manager using Helm, you can use the following Helm values:
144
+
145
+
```
146
+
# values.cert-manager.yaml
147
+
extraEnv:
148
+
- name: KUBE_FEATURE_WatchListClient
149
+
value: "true"
150
+
cainjector:
151
+
extraEnv:
152
+
- name: KUBE_FEATURE_WatchListClient
153
+
value: "true"
154
+
webhook:
155
+
extraEnv:
156
+
- name: KUBE_FEATURE_WatchListClient
157
+
value: "true"
158
+
```
159
+
160
+
161
+
You will see log messages reporting the state of the client-go feature gates, when cert-manager starts up.
162
+
And if you increase the logging verbosity, you will see `sendInitialEvents=true` and `resourceVersionMatch=NotOlderThan` among the requests.
163
+
For example:
164
+
165
+
```console
166
+
Feature gate updated state [caller=features/envvar.go:169 enabled=true feature=WatchListClient]
167
+
GET https://10.96.0.1:443/api/v1/secrets?allowWatchBookmarks=true&labelSelector=%21controller.cert-manager.io%2Ffao&resourceVersionMatch=NotOlderThan&sendInitialEvents=true&timeout=6m49s&timeoutSeconds=409&watch=true 200 OK in 2 milliseconds [caller=transport/round_trippers.go:553]
168
+
```
169
+
170
+
Read [Kubernetes API Concepts: Streaming Lists](https://kubernetes.io/docs/reference/using-api/api-concepts/#streaming-lists),
171
+
to learn more.
172
+
Read [Introducing Feature Gates to Client-Go: Enhancing Flexibility and Control](https://kubernetes.io/blog/2024/08/12/feature-gates-in-client-go),
173
+
to learn about enabling and disabling client-go features.
141
174
142
175
### Logging
143
176
@@ -182,7 +215,6 @@ In addition, massive thanks to Venafi for contributing developer time and resour
182
215
- Added `app.kubernetes.io/managed-by: cert-manager` label to the cert-manager-webhook-ca Secret ([#7154](https://github.com/cert-manager/cert-manager/pull/7154), [`@jrcichra`](https://github.com/jrcichra))
183
216
- Allow the user to specify a Pod template when using GatewayAPI HTTP01 solver, this mirrors the behavior when using the Ingress HTTP01 solver. ([#7211](https://github.com/cert-manager/cert-manager/pull/7211), [`@ThatsMrTalbot`](https://github.com/ThatsMrTalbot))
184
217
- Create token request RBAC for the cert-manager ServiceAccount by default ([#7213](https://github.com/cert-manager/cert-manager/pull/7213), [`@Jasper-Ben`](https://github.com/Jasper-Ben))
185
-
- Feature: Add a new `ClientWatchList` feature flag to cert-manager controller, cainjector and webhook, which allows the components to use of the ALPHA `WatchList` / Streaming list feature of the Kubernetes API server. This reduces the load on the Kubernetes API server when cert-manager starts up and reduces the peak memory usage in the cert-manager components. ([#7175](https://github.com/cert-manager/cert-manager/pull/7175), [`@wallrj`](https://github.com/wallrj))
186
218
- Feature: Append cert-manager user-agent string to all AWS API requests, including IMDS and STS requests. ([#7295](https://github.com/cert-manager/cert-manager/pull/7295), [`@wallrj`](https://github.com/wallrj))
187
219
- Feature: Log AWS SDK warnings and API requests at cert-manager debug level to help debug AWS Route53 problems in the field. ([#7292](https://github.com/cert-manager/cert-manager/pull/7292), [`@wallrj`](https://github.com/wallrj))
188
220
- Feature: The Route53 DNS solver of the ACME Issuer will now use regional STS endpoints computed from the region that is supplied in the Issuer spec or in the `AWS_REGION` environment variable.
0 commit comments