DOCS-2849: Reorganize support and compatibility page#2531
DOCS-2849: Reorganize support and compatibility page#2531ctauchen wants to merge 3 commits intotigera:mainfrom
Conversation
❌ Deploy Preview for calico-docs-preview-next failed. Why did it fail? →
|
✅ Deploy Preview succeeded!Built without sensitive environment variables
To edit notification comments on pull requests, go to your Netlify project configuration. |
There was a problem hiding this comment.
Pull request overview
This PR reorganizes Calico Enterprise “Support and compatibility” documentation by introducing a shared platform/version matrix and rendering a “Supported Kubernetes Versions by Platform” table at the top of several compatibility pages.
Changes:
- Added a shared
platformMatrixdata source undersrc/data/. - Inserted a new “Supported Kubernetes Versions by Platform” HTML table into multiple Calico Enterprise compatibility pages.
- Added a new
calico-enterprise/_includes/data/requirements/platform.yamldata file (currently appears unused).
Reviewed changes
Copilot reviewed 7 out of 8 changed files in this pull request and generated 12 comments.
Show a summary per file
| File | Description |
|---|---|
src/data/platform-matrix.js |
Adds centralized platform/version compatibility data for reuse in docs. |
calico-enterprise/getting-started/compatibility.mdx |
Adds a top-of-page compatibility matrix table using the shared data source. |
calico-enterprise_versioned_docs/version-3.23-1/getting-started/compatibility.mdx |
Adds the matrix table (currently has column/cell mismatch and an import-path issue). |
calico-enterprise_versioned_docs/version-3.22-2/getting-started/compatibility.mdx |
Adds the matrix table (import-path issue; summary conflicts with detailed tables; extra blank lines). |
calico-enterprise_versioned_docs/version-3.21-2/getting-started/compatibility.mdx |
Adds the matrix table (import-path issue). |
calico-enterprise_versioned_docs/version-3.20-2/getting-started/compatibility.mdx |
Adds the matrix table (import-path issue; summary version coverage doesn’t align with page content). |
calico-enterprise/_includes/data/requirements/platform.yaml |
Adds platform requirements YAML (no references found in repo; one display-name inconsistency). |
| description: Lists versions of Calico Enterprise and Kubernetes for each platform. | ||
| --- | ||
|
|
||
| import { platformMatrix as d } from '../../../src/data/platform-matrix.js'; |
There was a problem hiding this comment.
The relative import path is incorrect for this versioned doc: ../../../src/... resolves to the calico-enterprise_versioned_docs/ directory, not the repo root, so MDX bundling will fail to find src/data/platform-matrix.js. Use a root-based alias (e.g. @site/src/data/platform-matrix.js) or adjust the relative path (likely ../../../../src/data/platform-matrix.js).
| import { platformMatrix as d } from '../../../src/data/platform-matrix.js'; | |
| import { platformMatrix as d } from '@site/src/data/platform-matrix.js'; |
| <tr> | ||
| <td><strong>AKS</strong></td> | ||
| <td>{d.aks['3_23'].k8sVersion}</td> | ||
| <td>{d.aks['3_22'].k8sVersion}</td> | ||
| <td>{d.aks['3_21'].k8sVersion}</td> | ||
| <td>{d.aks['3_20'].k8sVersion}</td> | ||
| <td>{d.aks['3_19'].k8sVersion}</td> |
There was a problem hiding this comment.
The table headers include a “next” column (and 6 version columns total), but each row only renders 5 version cells (starting at 3.23). This shifts values under the wrong headers and produces rows with a different column count than the header. Either add the missing next values for each platform or remove the “next” column from the header for this page.
| <td><strong>kOps on AWS</strong></td> | ||
| <td>{d.kops['3_23'].k8sVersion}</td> | ||
| <td>{d.kops['3_22'].k8sVersion}</td> | ||
| <td>{d.kops['3_21'].k8sVersion}</td> | ||
| <td>{d.kops['3_20'].k8sVersion}</td> | ||
| <td>{d.kops['3_19'].k8sVersion}</td> |
There was a problem hiding this comment.
The new summary matrix values for kOps/Kubeadm/OpenShift/RKE appear to conflict with the version-specific tables later on this same page (for example, this row shows 3.21 kOps as 1.31 - 1.32, but the ## kOps on AWS table below lists 3.21 as 1.29 - 1.31). Please update the detailed tables to match the matrix (or vice versa), or generate the detailed tables from the same data source to avoid contradictions.
| --- | ||
| description: Lists versions of Calico Enterprise and Kubernetes for each platform. | ||
| --- | ||
| import { platformMatrix as d } from '../../../src/data/platform-matrix.js'; |
There was a problem hiding this comment.
The relative import path is incorrect for this versioned doc: ../../../src/... resolves under calico-enterprise_versioned_docs/ rather than the repo root, so src/data/platform-matrix.js won’t be found during MDX bundling. Prefer @site/src/data/platform-matrix.js (used elsewhere in the repo) or adjust the relative path (likely ../../../../src/data/platform-matrix.js).
| import { platformMatrix as d } from '../../../src/data/platform-matrix.js'; | |
| import { platformMatrix as d } from '@site/src/data/platform-matrix.js'; |
|
|
||
|
|
||
|
|
||
|
|
There was a problem hiding this comment.
There are multiple consecutive blank lines after the OpenShift footnote, which adds noise in the rendered MDX/source. Please remove the extra empty lines (keep a single blank line before the next heading).
| <th>next</th> | ||
| <th>3.23</th> | ||
| <th>3.22</th> | ||
| <th>3.21</th> | ||
| <th>3.20</th> | ||
| <th>3.19</th> | ||
| </tr> | ||
| </thead> | ||
| <tbody> | ||
| <tr> | ||
| <td><strong>AKS</strong></td> | ||
| <td>{d.aks.next.k8sVersion}</td> | ||
| <td>{d.aks['3_23'].k8sVersion}</td> | ||
| <td>{d.aks['3_22'].k8sVersion}</td> | ||
| <td>{d.aks['3_21'].k8sVersion}</td> | ||
| <td>{d.aks['3_20'].k8sVersion}</td> | ||
| <td>{d.aks['3_19'].k8sVersion}</td> | ||
| </tr> | ||
| <tr> | ||
| <td><strong>EKS</strong></td> | ||
| <td>{d.eks.next.k8sVersion}</td> | ||
| <td>{d.eks['3_23'].k8sVersion}</td> | ||
| <td>{d.eks['3_22'].k8sVersion}</td> | ||
| <td>{d.eks['3_21'].k8sVersion}</td> | ||
| <td>{d.eks['3_20'].k8sVersion}</td> | ||
| <td>{d.eks['3_19'].k8sVersion}</td> | ||
| </tr> | ||
| <tr> | ||
| <td><strong>GKE</strong></td> | ||
| <td>{d.gke.next.k8sVersion}</td> | ||
| <td>{d.gke['3_23'].k8sVersion}</td> | ||
| <td>{d.gke['3_22'].k8sVersion}</td> | ||
| <td>{d.gke['3_21'].k8sVersion}</td> | ||
| <td>{d.gke['3_20'].k8sVersion}</td> | ||
| <td>{d.gke['3_19'].k8sVersion}</td> | ||
| </tr> | ||
| <tr> | ||
| <td><strong>Charmed Kubernetes</strong></td> | ||
| <td>{d.charmed.next.k8sVersion}</td> | ||
| <td>{d.charmed['3_23'].k8sVersion}</td> | ||
| <td>{d.charmed['3_22'].k8sVersion}</td> | ||
| <td>{d.charmed['3_21'].k8sVersion}</td> | ||
| <td>{d.charmed['3_20'].k8sVersion}</td> | ||
| <td>—</td> | ||
| </tr> | ||
| <tr> | ||
| <td><strong>Kubernetes (kubeadm)</strong></td> | ||
| <td>{d.kubeadm.next.k8sVersion}</td> | ||
| <td>{d.kubeadm['3_23'].k8sVersion}</td> | ||
| <td>{d.kubeadm['3_22'].k8sVersion}</td> | ||
| <td>{d.kubeadm['3_21'].k8sVersion}</td> | ||
| <td>{d.kubeadm['3_20'].k8sVersion}</td> | ||
| <td>{d.kubeadm['3_19'].k8sVersion}</td> |
There was a problem hiding this comment.
This versioned page (3.20-2) includes detailed compatibility tables for 3.20/3.19/3.18 later in the document, but the new summary table only shows next and 3.19–3.23 (no 3.18 column) and includes versions that aren’t described elsewhere on the page. Consider aligning the summary table’s columns with the versions covered by this doc to avoid confusing/incomplete version coverage on the same page.
| <th>next</th> | |
| <th>3.23</th> | |
| <th>3.22</th> | |
| <th>3.21</th> | |
| <th>3.20</th> | |
| <th>3.19</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td><strong>AKS</strong></td> | |
| <td>{d.aks.next.k8sVersion}</td> | |
| <td>{d.aks['3_23'].k8sVersion}</td> | |
| <td>{d.aks['3_22'].k8sVersion}</td> | |
| <td>{d.aks['3_21'].k8sVersion}</td> | |
| <td>{d.aks['3_20'].k8sVersion}</td> | |
| <td>{d.aks['3_19'].k8sVersion}</td> | |
| </tr> | |
| <tr> | |
| <td><strong>EKS</strong></td> | |
| <td>{d.eks.next.k8sVersion}</td> | |
| <td>{d.eks['3_23'].k8sVersion}</td> | |
| <td>{d.eks['3_22'].k8sVersion}</td> | |
| <td>{d.eks['3_21'].k8sVersion}</td> | |
| <td>{d.eks['3_20'].k8sVersion}</td> | |
| <td>{d.eks['3_19'].k8sVersion}</td> | |
| </tr> | |
| <tr> | |
| <td><strong>GKE</strong></td> | |
| <td>{d.gke.next.k8sVersion}</td> | |
| <td>{d.gke['3_23'].k8sVersion}</td> | |
| <td>{d.gke['3_22'].k8sVersion}</td> | |
| <td>{d.gke['3_21'].k8sVersion}</td> | |
| <td>{d.gke['3_20'].k8sVersion}</td> | |
| <td>{d.gke['3_19'].k8sVersion}</td> | |
| </tr> | |
| <tr> | |
| <td><strong>Charmed Kubernetes</strong></td> | |
| <td>{d.charmed.next.k8sVersion}</td> | |
| <td>{d.charmed['3_23'].k8sVersion}</td> | |
| <td>{d.charmed['3_22'].k8sVersion}</td> | |
| <td>{d.charmed['3_21'].k8sVersion}</td> | |
| <td>{d.charmed['3_20'].k8sVersion}</td> | |
| <td>—</td> | |
| </tr> | |
| <tr> | |
| <td><strong>Kubernetes (kubeadm)</strong></td> | |
| <td>{d.kubeadm.next.k8sVersion}</td> | |
| <td>{d.kubeadm['3_23'].k8sVersion}</td> | |
| <td>{d.kubeadm['3_22'].k8sVersion}</td> | |
| <td>{d.kubeadm['3_21'].k8sVersion}</td> | |
| <td>{d.kubeadm['3_20'].k8sVersion}</td> | |
| <td>{d.kubeadm['3_19'].k8sVersion}</td> | |
| <th>3.20</th> | |
| <th>3.19</th> | |
| <th>3.18</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td><strong>AKS</strong></td> | |
| <td>{d.aks['3_20'].k8sVersion}</td> | |
| <td>{d.aks['3_19'].k8sVersion}</td> | |
| <td>{d.aks['3_18'].k8sVersion}</td> | |
| </tr> | |
| <tr> | |
| <td><strong>EKS</strong></td> | |
| <td>{d.eks['3_20'].k8sVersion}</td> | |
| <td>{d.eks['3_19'].k8sVersion}</td> | |
| <td>{d.eks['3_18'].k8sVersion}</td> | |
| </tr> | |
| <tr> | |
| <td><strong>GKE</strong></td> | |
| <td>{d.gke['3_20'].k8sVersion}</td> | |
| <td>{d.gke['3_19'].k8sVersion}</td> | |
| <td>{d.gke['3_18'].k8sVersion}</td> | |
| </tr> | |
| <tr> | |
| <td><strong>Charmed Kubernetes</strong></td> | |
| <td>{d.charmed['3_20'].k8sVersion}</td> | |
| <td>—</td> | |
| <td>—</td> | |
| </tr> | |
| <tr> | |
| <td><strong>Kubernetes (kubeadm)</strong></td> | |
| <td>{d.kubeadm['3_20'].k8sVersion}</td> | |
| <td>{d.kubeadm['3_19'].k8sVersion}</td> | |
| <td>{d.kubeadm['3_18'].k8sVersion}</td> |
| <tr> | ||
| <td><strong>kOps on AWS</strong></td> | ||
| <td>{d.kops['3_22'].k8sVersion}</td> | ||
| <td>{d.kops['3_21'].k8sVersion}</td> | ||
| <td>{d.kops['3_20'].k8sVersion}</td> | ||
| <td>{d.kops['3_19'].k8sVersion}</td> |
There was a problem hiding this comment.
The new summary table introduces updated platform/version ranges (for example, d.kops['3_21']), but the version-specific compatibility tables later on the page still show different values (e.g., kOps 3.21 listed as 1.29 - 1.31). Please reconcile the summary table with the detailed tables to avoid conflicting guidance on the same page.
| <tr> | ||
| <td><strong>kOps on AWS</strong></td> | ||
| <td>{d.kops.next.k8sVersion}</td> | ||
| <td>{d.kops['3_23'].k8sVersion}</td> | ||
| <td>{d.kops['3_22'].k8sVersion}</td> | ||
| <td>{d.kops['3_21'].k8sVersion}</td> | ||
| <td>{d.kops['3_20'].k8sVersion}</td> | ||
| <td>{d.kops['3_19'].k8sVersion}</td> |
There was a problem hiding this comment.
The new summary table introduces 3.23 compatibility data (and updated ranges like kOps 3.21 = 1.31 - 1.32), but the platform-specific tables later on this page still stop at 3.22 and list different version ranges (for example, the ## kOps on AWS table below lists 3.21 as 1.29 - 1.31). Please reconcile/update the detailed tables (and add 3.23 rows where applicable) so the page doesn’t provide conflicting guidance.
| aks: | ||
| name: AKS | ||
| k8s_versions: "1.31 - 1.34" | ||
|
|
||
| eks: | ||
| name: EKS | ||
| k8s_versions: "1.31 - 1.34" | ||
|
|
||
| gke: | ||
| name: GKE | ||
| k8s_versions: "1.31 - 1.34" | ||
|
|
||
| kops-on-aws: | ||
| name: kOps on AWS | ||
| k8s_versions: "1.31 - 1.34" | ||
|
|
||
| kubernetes-kubeadm: | ||
| name: Kubernetes-kubeadm | ||
| k8s_versions: "1.31 - 1.34" | ||
|
|
||
| mke-4k: | ||
| name: MKE 4k | ||
| k8s_versions: "1.32" | ||
|
|
||
| mke: | ||
| name: MKE | ||
| k8s_versions: "1.31" | ||
|
|
||
| openshift: | ||
| name: OpenShift | ||
| k8s_versions: "4.17 - 4.20" | ||
|
|
||
| rke: | ||
| name: RKE | ||
| k8s_versions: "1.32" | ||
|
|
||
| rke2: | ||
| name: RKE2 | ||
| k8s_versions: "1.31 - 1.34" | ||
|
|
||
| tkg: | ||
| name: TKG | ||
| k8s_versions: "1.27" | ||
|
|
||
| charmed-kubernetes: | ||
| name: Charmed Kubernetes | ||
| k8s_versions: "1.31 - 1.34" No newline at end of file |
There was a problem hiding this comment.
This new YAML data file doesn’t appear to be referenced anywhere in the repo (no matches for platform.yaml, k8s_versions, or this file’s path). If it’s intended to drive a page/component, please add the corresponding reference; otherwise consider removing it to avoid carrying stale, duplicated compatibility data.
| aks: | |
| name: AKS | |
| k8s_versions: "1.31 - 1.34" | |
| eks: | |
| name: EKS | |
| k8s_versions: "1.31 - 1.34" | |
| gke: | |
| name: GKE | |
| k8s_versions: "1.31 - 1.34" | |
| kops-on-aws: | |
| name: kOps on AWS | |
| k8s_versions: "1.31 - 1.34" | |
| kubernetes-kubeadm: | |
| name: Kubernetes-kubeadm | |
| k8s_versions: "1.31 - 1.34" | |
| mke-4k: | |
| name: MKE 4k | |
| k8s_versions: "1.32" | |
| mke: | |
| name: MKE | |
| k8s_versions: "1.31" | |
| openshift: | |
| name: OpenShift | |
| k8s_versions: "4.17 - 4.20" | |
| rke: | |
| name: RKE | |
| k8s_versions: "1.32" | |
| rke2: | |
| name: RKE2 | |
| k8s_versions: "1.31 - 1.34" | |
| tkg: | |
| name: TKG | |
| k8s_versions: "1.27" | |
| charmed-kubernetes: | |
| name: Charmed Kubernetes | |
| k8s_versions: "1.31 - 1.34" | |
| # This file previously contained platform/k8s version compatibility data, | |
| # but it was not referenced anywhere in the repository. The structured data | |
| # has been removed to avoid carrying stale or duplicated compatibility | |
| # information. If you need platform requirements here in the future, wire | |
| # this file into the appropriate page/component before re-adding data. |
| k8s_versions: "1.31 - 1.34" | ||
|
|
||
| kubernetes-kubeadm: | ||
| name: Kubernetes-kubeadm |
There was a problem hiding this comment.
In this data file the display name is Kubernetes-kubeadm, but the compatibility tables elsewhere on the support page use the more readable label Kubernetes (kubeadm). Consider changing the name field to Kubernetes (kubeadm) while keeping the key kubernetes-kubeadm for anchors/IDs.
| name: Kubernetes-kubeadm | |
| name: Kubernetes (kubeadm) |

This PR tries to do two things:
Product Version(s):
Issue:
Link to docs preview:
https://deploy-preview-2531--tigera.netlify.app/calico-enterprise/latest/getting-started/compatibility#supported-kubernetes-versions-by-platform
SME review:
DOCS review:
Additional information:
Merge checklist: