@@ -317,10 +317,17 @@ image pinned by digest in the component values. v1.3.0 is the API-graduation
317317release : both `v1alpha1` and `v1beta1` are served and CRD storage is on
318318` v1beta1` , while the chart still renders the `AIBOMControllerConfig` resource
319319itself at `v1alpha1`. Upstream states Kubernetes support as a policy rather
320- than a fixed range — stable APIs only, no known ceiling, tested floor 1.27 —
321- backed by a version-matrix CI job. AICR also observed the dedicated
322- integration test passing on its Kind 1.36.1 node image; that is qualification
323- evidence, not an extension of upstream's support statement.
320+ than a fixed range : stable APIs only, no known version ceiling, tested floor
321+ 1.27, backed by a weekly CI matrix. The authoritative statement is
322+ [upstream's compatibility policy](https://github.com/GoogleCloudPlatform/k8s-aibom/blob/main/docs/compatibility.md),
323+ which is linked rather than restated here so it cannot drift out of date on
324+ our side. That link deliberately tracks `main` : the point is the current
325+ policy, not a snapshot of it, which is the opposite of how this page cites
326+ qualified artifacts.
327+
328+ AICR also observed the dedicated integration test passing on its Kind 1.36.1
329+ node image; that is qualification evidence, not an extension of upstream's
330+ support statement.
324331
325332# ## Health and readiness
326333
@@ -409,12 +416,28 @@ added fields. Apply the CRDs from the exact qualified chart first, then
409416upgrade :
410417
411418` ` ` bash
412- helm show crds oci://ghcr.io/googlecloudplatform/charts/k8s-aibom \
413- --version <qualified-version> | kubectl apply --server-side -f -
419+ CHART="oci://ghcr.io/googlecloudplatform/charts/k8s-aibom"
420+ VERSION="1.3.0" # replace with the version you are upgrading to
421+
422+ helm show crds "${CHART}" --version "${VERSION}" \
423+ | sed -n '/^---$/,$p' \
424+ | kubectl apply --server-side --force-conflicts -f -
414425` ` `
415426
416- Use `--server-side` because the CRDs exceed the annotation size limit that
417- client-side apply depends on.
427+ Three details in that command are load-bearing, and the obvious shorter form
428+ fails on both counts :
429+
430+ - **`sed -n '/^---$/,$p'`** drops `helm`'s progress output. For an OCI chart,
431+ ` helm show crds` writes `Pulled:` and `Digest:` lines to *stdout*, and those
432+ two lines parse as a valid YAML mapping, so `kubectl` rejects the stream with
433+ `error validating data : [apiVersion not set, kind not set]`.
434+ - **`--force-conflicts`** is required because Helm created these CRDs on
435+ install and owns their fields. Without it, server-side apply refuses with a
436+ field-manager conflict.
437+ - **`--server-side`** is required because the CRDs exceed the annotation size
438+ limit that client-side apply depends on.
439+
440+ Verified against a live GKE cluster across a 1.2.0 to 1.3.0 upgrade.
418441
419442Which deployers need that step differs, so check yours :
420443
0 commit comments