-
Notifications
You must be signed in to change notification settings - Fork 198
fix(etcd): pin tenant etcd to v3.5.31 to restore consistent watches #3122
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -51,6 +51,16 @@ spec: | |
| spec: | ||
| containers: | ||
| - name: etcd | ||
| # Override the etcd image strategically merged into the operator's | ||
| # default pod spec. etcd-operator v0.4.5 hardcodes | ||
| # quay.io/coreos/etcd:v3.5.12 (DefaultEtcdImage), which the | ||
| # kube-apiserver rejects for consistent watches: it only enables the | ||
| # RequestWatchProgress storage feature on etcd >= 3.5.13 / >= 3.4.31. | ||
| # Kubernetes >= 1.31 enables ConsistentListFromCache (locked-to-true | ||
| # in 1.35), so on etcd 3.5.12 every consistent watch fails inside the | ||
| # stream with "the required storage feature RequestWatchProgress is | ||
| # disabled" (HTTP 500). Pinning a >= 3.5.13 patch release restores it. | ||
| image: quay.io/coreos/etcd:v3.5.31 | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Confirmed valid — this does not need changing. The override also takes effect: the v1alpha1 |
||
| ports: | ||
| - name: metrics | ||
| containerPort: 2381 | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,41 @@ | ||
| suite: etcd cluster pins an etcd image new enough for consistent watches | ||
|
|
||
| # The exact patch version is intentionally NOT asserted: the image is a | ||
| # Renovate-tracked pin (.github/renovate.json) that bumps over time, so an | ||
| # exact-equality assertion would turn every etcd bump PR red in CI. The | ||
| # test encodes the durable contract instead - the etcd container image is | ||
| # overridden to a coreos/etcd release >= 3.5.13 (the floor at which | ||
| # kube-apiserver enables the RequestWatchProgress storage feature) and | ||
| # never falls back to the operator default v3.5.12. | ||
|
|
||
| release: | ||
| name: etcd | ||
| namespace: tenant-test | ||
|
|
||
| templates: | ||
| - templates/etcd-cluster.yaml | ||
|
|
||
| set: | ||
| _cluster: {} | ||
|
|
||
| tests: | ||
| - it: overrides the operator default etcd image with a >= 3.5.13 release | ||
| documentSelector: | ||
| path: kind | ||
| value: EtcdCluster | ||
| asserts: | ||
| - equal: | ||
| path: spec.podTemplate.spec.containers[0].name | ||
| value: etcd | ||
| - matchRegex: | ||
| path: spec.podTemplate.spec.containers[0].image | ||
| pattern: ^quay\.io/coreos/etcd:v(3\.5\.(1[3-9]|[2-9][0-9]|[1-9][0-9]{2,})|3\.([6-9]|[1-9][0-9])\.[0-9]+|[4-9][0-9]*\.[0-9]+\.[0-9]+)$ | ||
|
|
||
| - it: never falls back to the operator default v3.5.12 | ||
| documentSelector: | ||
| path: kind | ||
| value: EtcdCluster | ||
| asserts: | ||
| - notEqual: | ||
| path: spec.podTemplate.spec.containers[0].image | ||
| value: quay.io/coreos/etcd:v3.5.12 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The etcd image version
v3.5.31does not exist. The etcd 3.5 release branch has not reached.31(the latest release is aroundv3.5.17). This is likely a transposition typo ofv3.5.13(the minimum version required forRequestWatchProgress) or a mix-up withv3.4.31. Using a non-existent image tag will causeErrImagePull/ImagePullBackOffand completely break the tenant etcd cluster. Please use a valid existing version, such asv3.5.13or a newer stable patch release likev3.5.17.