From 6cd698a4e6a399666601d053b87888af619eb854 Mon Sep 17 00:00:00 2001 From: Chris Tauchen Date: Tue, 13 Oct 2026 11:45:47 +0100 Subject: [PATCH 1/8] DOCS-3053: Publish Calico Cloud 24.0.0 --- docusaurus.config.js | 6 ++--- src/___new___/data/ccImageLists.js | 37 +++++++++++++++++++++++++++++- static/_redirects | 7 ++++++ 3 files changed, 46 insertions(+), 4 deletions(-) diff --git a/docusaurus.config.js b/docusaurus.config.js index 93321d77c3..2368378795 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -512,14 +512,14 @@ export default async function createAsyncConfig() { routeBasePath: 'calico-cloud', editCurrentVersion: true, //To see builds for unreleased versions, remove comments in the next line. - onlyIncludeVersions: [...nextVersion, '23-2'], + onlyIncludeVersions: [...nextVersion, '24-1'], versions: { current: { label: 'Next', path: 'next', banner: 'unreleased', }, - '23-2': { + '24-1': { path: '/', banner: 'none', }, @@ -578,7 +578,7 @@ export default async function createAsyncConfig() { // Docusaurus version names are navigation labels. Where a product has a // user-facing version that differs, name the variables.js key holding it // so frontmatter reports something a reader can corroborate. Calico Cloud's - // Docusaurus label is "23-2", which appears in no URL and no dropdown. + // Docusaurus label is "24-1", which appears in no URL and no dropdown. versionVariables: { 'calico-cloud': 'cloudUserVersion', }, diff --git a/src/___new___/data/ccImageLists.js b/src/___new___/data/ccImageLists.js index d40e6808e3..ec4b6fa58f 100644 --- a/src/___new___/data/ccImageLists.js +++ b/src/___new___/data/ccImageLists.js @@ -1,6 +1,41 @@ const ccImageLists = { + // curl -0 https://installer.calicocloud.io/manifests/v3.24.0-1.0-4/image-list + 'v24.0.0 (latest)': `quay.io/calico/istio-pilot:v3.32.0 +quay.io/calico/istio-install-cni:v3.32.0 +quay.io/calico/istio-ztunnel:v3.32.0 +quay.io/calico/istio-proxyv2:v3.32.0 +quay.io/calico/webhooks:v3.32.0 +quay.io/tigera/calico:v3.24.0-1.0 +quay.io/tigera/compliance-benchmarker:v3.24.0-1.0 +quay.io/tigera/deep-packet-inspection:v3.24.0-1.0 +quay.io/tigera/fluentd:v3.24.0-1.0 +quay.io/tigera/fluentd-windows:v3.24.0-1.0 +quay.io/tigera/intrusion-detection-controller:v3.24.0-1.0 +quay.io/tigera/manager:v3.24.0-1.0 +quay.io/tigera/egress-gateway:v3.24.0-1.0 +quay.io/tigera/gateway-l7-collector:v3.24.0-1.0 +quay.io/tigera/envoy:v3.24.0-1.0 +quay.io/tigera/dikastes:v3.24.0-1.0 +quay.io/tigera/prometheus:v3.24.0-1.0 +quay.io/tigera/alertmanager:v3.24.0-1.0 +quay.io/tigera/node:v3.24.0-1.0 +quay.io/tigera/node-windows:v3.24.0-1.0 +quay.io/tigera/cni-windows:v3.24.0-1.0 +quay.io/tigera/third-party-cni-plugins:v3.24.0-1.0 +quay.io/tigera/envoy-gateway:v3.24.0-1.0 +quay.io/tigera/envoy-proxy:v3.24.0-1.0 +quay.io/tigera/envoy-ratelimit:v3.24.0-1.0 +quay.io/tigera/istio-pilot:v3.24.0-1.0 +quay.io/tigera/istio-install-cni:v3.24.0-1.0 +quay.io/tigera/istio-ztunnel:v3.24.0-1.0 +quay.io/tigera/istio-proxyv2:v3.24.0-1.0 +quay.io/tigera/operator:v1.43.0 +quay.io/tigera/cc-core:v0.4.0 +quay.io/tigera/prometheus-operator:v3.24.0-1.0 +quay.io/tigera/prometheus-config-reloader:v3.24.0-1.0 +quay.io/tigera/cc-cni-config-scanner:v0.7.4`, // curl -0 https://installer.calicocloud.io/manifests/v3.23.1-4/image-list - 'v23.0.2 (latest)': `quay.io/calico/istio-pilot:v3.32.1 + 'v23.0.2': `quay.io/calico/istio-pilot:v3.32.1 quay.io/calico/istio-install-cni:v3.32.1 quay.io/calico/istio-ztunnel:v3.32.1 quay.io/calico/istio-proxyv2:v3.32.1 diff --git a/static/_redirects b/static/_redirects index efba06bcc9..c8e1333d0d 100644 --- a/static/_redirects +++ b/static/_redirects @@ -449,6 +449,13 @@ /calico-enterprise/3.24/reference/resources/compliance-reports/* /calico-enterprise/3.24/reference/resources/ 301 /calico-enterprise/3.24/reference/resources/globalreport /calico-enterprise/3.24/reference/resources/ 301 +# Calico Cloud 24 - compliance reporting feature removed (DOCS-3053) +/calico-cloud/compliance/overview /calico-cloud/release-notes 301 +/calico-cloud/compliance/enable-compliance /calico-cloud/release-notes 301 +/calico-cloud/compliance/compliance-reports-cis /calico-cloud/release-notes 301 +/calico-cloud/reference/resources/compliance-reports/* /calico-cloud/reference/resources/ 301 +/calico-cloud/reference/resources/globalreport /calico-cloud/reference/resources/ 301 + # allow-tigera tier renamed to calico-system, in Calico Cloud 23 and Calico Enterprise 3.23 /calico-cloud/network-policy/policy-tiers/allow-tigera /calico-cloud/network-policy/policy-tiers/calico-system 301 /calico-cloud/next/network-policy/policy-tiers/allow-tigera /calico-cloud/next/network-policy/policy-tiers/calico-system 301 From e67c48723f01afb3c189f0109259144d50e59d2a Mon Sep 17 00:00:00 2001 From: Chris Tauchen Date: Tue, 13 Oct 2026 11:45:58 +0100 Subject: [PATCH 2/8] DOCS-3053: Remove Calico Cloud 21 image lists --- src/___new___/data/ccImageLists.js | 200 ----------------------------- 1 file changed, 200 deletions(-) diff --git a/src/___new___/data/ccImageLists.js b/src/___new___/data/ccImageLists.js index ec4b6fa58f..fd4289ceb0 100644 --- a/src/___new___/data/ccImageLists.js +++ b/src/___new___/data/ccImageLists.js @@ -643,206 +643,6 @@ quay.io/tigera/cc-core:v0.3.1 quay.io/tigera/prometheus-operator:v3.22.0-1.0 quay.io/tigera/prometheus-config-reloader:v3.22.0-1.0 quay.io/tigera/cc-cni-config-scanner:v0.6`, - // curl -0 https://installer.calicocloud.io/manifests/v3.21.0-2.0-12/image-list - 'v21.3.0': `quay.io/tigera/cnx-apiserver:v3.21.0-2.0 -quay.io/tigera/compliance-benchmarker:v3.21.0-2.0 -quay.io/tigera/compliance-controller:v3.21.0-2.0 -quay.io/tigera/compliance-reporter:v3.21.0-2.0 -quay.io/tigera/compliance-snapshotter:v3.21.0-2.0 -quay.io/tigera/key-cert-provisioner:v3.21.0-2.0 -quay.io/tigera/deep-packet-inspection:v3.21.0-2.0 -quay.io/tigera/ui-apis:v3.21.0-2.0 -quay.io/tigera/fluentd:v3.21.0-2.0 -quay.io/tigera/fluentd-windows:v3.21.0-2.0 -quay.io/tigera/guardian:v3.21.0-2.0 -quay.io/tigera/intrusion-detection-controller:v3.21.0-2.0 -quay.io/tigera/webhooks-processor:v3.21.0-2.0 -quay.io/tigera/packetcapture:v3.21.0-2.0 -quay.io/tigera/policy-recommendation:v3.21.0-2.0 -quay.io/tigera/egress-gateway:v3.21.0-2.0 -quay.io/tigera/l7-collector:v3.21.0-2.0 -quay.io/tigera/envoy:v3.21.0-2.0 -quay.io/tigera/prometheus:v3.21.0-2.0 -quay.io/tigera/prometheus-service:v3.21.0-2.0 -quay.io/tigera/alertmanager:v3.21.0-2.0 -quay.io/tigera/cnx-queryserver:v3.21.0-2.0 -quay.io/tigera/kube-controllers:v3.21.0-2.0 -quay.io/tigera/cnx-node:v3.21.0-2.0 -quay.io/tigera/cnx-node-windows:v3.21.0-2.0 -quay.io/tigera/typha:v3.21.0-2.0 -quay.io/tigera/cni:v3.21.0-2.0 -quay.io/tigera/cni-windows:v3.21.0-2.0 -quay.io/tigera/es-gateway:v3.21.0-2.0 -quay.io/tigera/linseed:v3.21.0-2.0 -quay.io/tigera/dikastes:v3.21.0-2.0 -quay.io/tigera/l7-admission-controller:v3.21.0-2.0 -quay.io/tigera/pod2daemon-flexvol:v3.21.0-2.0 -quay.io/tigera/csi:v3.21.0-2.0 -quay.io/tigera/node-driver-registrar:v3.21.0-2.0 -quay.io/tigera/envoy-gateway:v3.21.0-2.0 -quay.io/tigera/envoy-proxy:v3.21.0-2.0 -quay.io/tigera/envoy-ratelimit:v3.21.0-2.0 -quay.io/tigera/operator:v1.38.2 -quay.io/tigera/image-assurance-admission-controller:v1.22.7 -quay.io/tigera/image-assurance-operator:v1.22.7 -quay.io/tigera/image-assurance-container-runtime-adaptor:v1.22.7 -quay.io/tigera/image-assurance-cluster-scanner:v1.22.7 -quay.io/tigera/runtime-security-operator:v1.23.0 -quay.io/tigera/skimble:v1.23.0 -quay.io/tigera/cc-core:v0.2.19 -quay.io/tigera/prometheus-operator:v3.21.0-2.0 -quay.io/tigera/prometheus-config-reloader:v3.21.0-2.0 -quay.io/tigera/cc-cni-config-scanner:v0.5`, - // curl -0 https://installer.calicocloud.io/manifests/v3.21.0-1.0-5/image-list - 'v21.2.0': `quay.io/tigera/cnx-apiserver:v3.21.0-1.0 -quay.io/tigera/compliance-benchmarker:v3.21.0-1.0 -quay.io/tigera/compliance-controller:v3.21.0-1.0 -quay.io/tigera/compliance-reporter:v3.21.0-1.0 -quay.io/tigera/compliance-snapshotter:v3.21.0-1.0 -quay.io/tigera/key-cert-provisioner:v3.21.0-1.0 -quay.io/tigera/deep-packet-inspection:v3.21.0-1.0 -quay.io/tigera/ui-apis:v3.21.0-1.0 -quay.io/tigera/fluentd:v3.21.0-1.0 -quay.io/tigera/fluentd-windows:v3.21.0-1.0 -quay.io/tigera/guardian:v3.21.0-1.0 -quay.io/tigera/intrusion-detection-controller:v3.21.0-1.0 -quay.io/tigera/webhooks-processor:v3.21.0-1.0 -quay.io/tigera/packetcapture:v3.21.0-1.0 -quay.io/tigera/policy-recommendation:v3.21.0-1.0 -quay.io/tigera/egress-gateway:v3.21.0-1.0 -quay.io/tigera/l7-collector:v3.21.0-1.0 -quay.io/tigera/envoy:v3.21.0-1.0 -quay.io/tigera/prometheus:v3.21.0-1.0 -quay.io/tigera/prometheus-service:v3.21.0-1.0 -quay.io/tigera/alertmanager:v3.21.0-1.0 -quay.io/tigera/cnx-queryserver:v3.21.0-1.0 -quay.io/tigera/kube-controllers:v3.21.0-1.0 -quay.io/tigera/cnx-node:v3.21.0-1.0 -quay.io/tigera/cnx-node-windows:v3.21.0-1.0 -quay.io/tigera/typha:v3.21.0-1.0 -quay.io/tigera/cni:v3.21.0-1.0 -quay.io/tigera/cni-windows:v3.21.0-1.0 -quay.io/tigera/es-gateway:v3.21.0-1.0 -quay.io/tigera/linseed:v3.21.0-1.0 -quay.io/tigera/dikastes:v3.21.0-1.0 -quay.io/tigera/l7-admission-controller:v3.21.0-1.0 -quay.io/tigera/pod2daemon-flexvol:v3.21.0-1.0 -quay.io/tigera/csi:v3.21.0-1.0 -quay.io/tigera/node-driver-registrar:v3.21.0-1.0 -quay.io/tigera/envoy-gateway:v3.21.0-1.0 -quay.io/tigera/envoy-proxy:v3.21.0-1.0 -quay.io/tigera/envoy-ratelimit:v3.21.0-1.0 -quay.io/tigera/operator:v1.37.1 -quay.io/tigera/image-assurance-admission-controller:v1.22.6 -quay.io/tigera/image-assurance-operator:v1.22.6 -quay.io/tigera/image-assurance-container-runtime-adaptor:v1.22.6 -quay.io/tigera/image-assurance-cluster-scanner:v1.22.6 -quay.io/tigera/runtime-security-operator:v1.23.0 -quay.io/tigera/skimble:v1.23.0 -quay.io/tigera/cc-core:v0.2.18 -quay.io/tigera/prometheus-operator:v3.21.0-1.0 -quay.io/tigera/prometheus-config-reloader:v3.21.0-1.0 -quay.io/tigera/cc-cni-config-scanner:v0.4`, - // curl -0 https://installer.calicocloud.io/manifests/v3.21.0-1.0-5/image-list - 'v21.1.0': `quay.io/tigera/cnx-apiserver:v3.21.0-1.0 -quay.io/tigera/compliance-benchmarker:v3.21.0-1.0 -quay.io/tigera/compliance-controller:v3.21.0-1.0 -quay.io/tigera/compliance-reporter:v3.21.0-1.0 -quay.io/tigera/compliance-snapshotter:v3.21.0-1.0 -quay.io/tigera/key-cert-provisioner:v3.21.0-1.0 -quay.io/tigera/deep-packet-inspection:v3.21.0-1.0 -quay.io/tigera/ui-apis:v3.21.0-1.0 -quay.io/tigera/fluentd:v3.21.0-1.0 -quay.io/tigera/fluentd-windows:v3.21.0-1.0 -quay.io/tigera/guardian:v3.21.0-1.0 -quay.io/tigera/intrusion-detection-controller:v3.21.0-1.0 -quay.io/tigera/webhooks-processor:v3.21.0-1.0 -quay.io/tigera/packetcapture:v3.21.0-1.0 -quay.io/tigera/policy-recommendation:v3.21.0-1.0 -quay.io/tigera/egress-gateway:v3.21.0-1.0 -quay.io/tigera/l7-collector:v3.21.0-1.0 -quay.io/tigera/envoy:v3.21.0-1.0 -quay.io/tigera/prometheus:v3.21.0-1.0 -quay.io/tigera/prometheus-service:v3.21.0-1.0 -quay.io/tigera/alertmanager:v3.21.0-1.0 -quay.io/tigera/cnx-queryserver:v3.21.0-1.0 -quay.io/tigera/kube-controllers:v3.21.0-1.0 -quay.io/tigera/cnx-node:v3.21.0-1.0 -quay.io/tigera/cnx-node-windows:v3.21.0-1.0 -quay.io/tigera/typha:v3.21.0-1.0 -quay.io/tigera/cni:v3.21.0-1.0 -quay.io/tigera/cni-windows:v3.21.0-1.0 -quay.io/tigera/es-gateway:v3.21.0-1.0 -quay.io/tigera/linseed:v3.21.0-1.0 -quay.io/tigera/dikastes:v3.21.0-1.0 -quay.io/tigera/l7-admission-controller:v3.21.0-1.0 -quay.io/tigera/pod2daemon-flexvol:v3.21.0-1.0 -quay.io/tigera/csi:v3.21.0-1.0 -quay.io/tigera/node-driver-registrar:v3.21.0-1.0 -quay.io/tigera/envoy-gateway:v3.21.0-1.0 -quay.io/tigera/envoy-proxy:v3.21.0-1.0 -quay.io/tigera/envoy-ratelimit:v3.21.0-1.0 -quay.io/tigera/operator:v1.37.1 -quay.io/tigera/image-assurance-admission-controller:v1.22.6 -quay.io/tigera/image-assurance-operator:v1.22.6 -quay.io/tigera/image-assurance-container-runtime-adaptor:v1.22.6 -quay.io/tigera/image-assurance-cluster-scanner:v1.22.6 -quay.io/tigera/runtime-security-operator:v1.23.0 -quay.io/tigera/skimble:v1.23.0 -quay.io/tigera/cc-core:v0.2.18 -quay.io/tigera/prometheus-operator:v3.21.0-1.0 -quay.io/tigera/prometheus-config-reloader:v3.21.0-1.0 -quay.io/tigera/cc-cni-config-scanner:v0.4`, - // curl -0 https://installer.calicocloud.io/manifests/v3.21.0-1.0-4/image-list - 'v21.0.0': `quay.io/tigera/cnx-apiserver:v3.21.0-1.0 -quay.io/tigera/compliance-benchmarker:v3.21.0-1.0 -quay.io/tigera/compliance-controller:v3.21.0-1.0 -quay.io/tigera/compliance-reporter:v3.21.0-1.0 -quay.io/tigera/compliance-snapshotter:v3.21.0-1.0 -quay.io/tigera/key-cert-provisioner:v3.21.0-1.0 -quay.io/tigera/deep-packet-inspection:v3.21.0-1.0 -quay.io/tigera/ui-apis:v3.21.0-1.0 -quay.io/tigera/fluentd:v3.21.0-1.0 -quay.io/tigera/fluentd-windows:v3.21.0-1.0 -quay.io/tigera/guardian:v3.21.0-1.0 -quay.io/tigera/intrusion-detection-controller:v3.21.0-1.0 -quay.io/tigera/webhooks-processor:v3.21.0-1.0 -quay.io/tigera/packetcapture:v3.21.0-1.0 -quay.io/tigera/policy-recommendation:v3.21.0-1.0 -quay.io/tigera/egress-gateway:v3.21.0-1.0 -quay.io/tigera/l7-collector:v3.21.0-1.0 -quay.io/tigera/envoy:v3.21.0-1.0 -quay.io/tigera/prometheus:v3.21.0-1.0 -quay.io/tigera/prometheus-service:v3.21.0-1.0 -quay.io/tigera/alertmanager:v3.21.0-1.0 -quay.io/tigera/cnx-queryserver:v3.21.0-1.0 -quay.io/tigera/kube-controllers:v3.21.0-1.0 -quay.io/tigera/cnx-node:v3.21.0-1.0 -quay.io/tigera/cnx-node-windows:v3.21.0-1.0 -quay.io/tigera/typha:v3.21.0-1.0 -quay.io/tigera/cni:v3.21.0-1.0 -quay.io/tigera/cni-windows:v3.21.0-1.0 -quay.io/tigera/es-gateway:v3.21.0-1.0 -quay.io/tigera/linseed:v3.21.0-1.0 -quay.io/tigera/dikastes:v3.21.0-1.0 -quay.io/tigera/l7-admission-controller:v3.21.0-1.0 -quay.io/tigera/pod2daemon-flexvol:v3.21.0-1.0 -quay.io/tigera/csi:v3.21.0-1.0 -quay.io/tigera/node-driver-registrar:v3.21.0-1.0 -quay.io/tigera/envoy-gateway:v3.21.0-1.0 -quay.io/tigera/envoy-proxy:v3.21.0-1.0 -quay.io/tigera/envoy-ratelimit:v3.21.0-1.0 -quay.io/tigera/operator:v1.37.1 -quay.io/tigera/image-assurance-admission-controller:v1.22.6 -quay.io/tigera/image-assurance-operator:v1.22.6 -quay.io/tigera/image-assurance-container-runtime-adaptor:v1.22.6 -quay.io/tigera/image-assurance-cluster-scanner:v1.22.6 -quay.io/tigera/runtime-security-operator:v1.23.0 -quay.io/tigera/skimble:v1.23.0 -quay.io/tigera/cc-core:v0.2.16 -quay.io/tigera/prometheus-operator:v3.21.0-1.0 -quay.io/tigera/prometheus-config-reloader:v3.21.0-1.0 -quay.io/tigera/cc-cni-config-scanner:v0.3`, }; export default ccImageLists; From 2fc4d38b685748c0b3070894c87b68ef790e4e24 Mon Sep 17 00:00:00 2001 From: Chris Tauchen Date: Tue, 13 Oct 2026 15:18:19 +0100 Subject: [PATCH 3/8] DOCS-3053: Add Calico Cloud 23 removals to feature lifecycle data Image Assurance, container threat detection, and Kibana were removed in Calico Cloud 23 but had no entries, so the Calico Cloud 24 deprecation table left them out. --- data/feature-status.yaml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/data/feature-status.yaml b/data/feature-status.yaml index 644ad55347..c2804f9580 100644 --- a/data/feature-status.yaml +++ b/data/feature-status.yaml @@ -52,6 +52,13 @@ features: "3.20": deprecated "3.24": removed + - id: container-threat-detection + name: Container threat detection + products: + calico-cloud: + "3.21": deprecated + "3.23": removed + - id: custom-dashboards name: Custom dashboards products: @@ -100,6 +107,13 @@ features: calico-cloud: "3.22": tech-preview + - id: image-assurance + name: Image Assurance + products: + calico-cloud: + "3.21": deprecated + "3.23": removed + - id: istio-ambient-mode name: Istio ambient mode products: @@ -110,6 +124,14 @@ features: calico-cloud: "3.22": tech-preview + - id: kibana + name: Kibana + products: + calico-cloud: + # Deprecated in the February 5, 2026 web console update, during Calico Cloud 22. + "3.22": deprecated + "3.23": removed + - id: kubevirt-live-migration name: Live migration for KubeVirt VMs products: From ccf88ae1aa075507b06447b10d10d83c8409e89a Mon Sep 17 00:00:00 2001 From: Chris Tauchen Date: Tue, 13 Oct 2026 15:18:20 +0100 Subject: [PATCH 4/8] DOCS-3053: Add Calico Cloud 24.0.0 to Kubernetes compatibility table --- .../version-24-1/get-started/system-requirements.mdx | 1 + 1 file changed, 1 insertion(+) diff --git a/calico-cloud_versioned_docs/version-24-1/get-started/system-requirements.mdx b/calico-cloud_versioned_docs/version-24-1/get-started/system-requirements.mdx index 75baaeddc5..1e7bd9b176 100644 --- a/calico-cloud_versioned_docs/version-24-1/get-started/system-requirements.mdx +++ b/calico-cloud_versioned_docs/version-24-1/get-started/system-requirements.mdx @@ -48,6 +48,7 @@ To install Calico Cloud $[cloudUserVersion], your Kubernetes distribution must b | Calico Cloud version | Kubernetes versions | |-----------------------|---------------------| + | 24.0.0 | 1.34-1.36 | | 23.0.0 | 1.34-1.36 | | 22.5.0 | 1.31-1.35 | | 22.4.1 | 1.31-1.35 | From 95d3537ce301007105250ad5096879542f9a76f6 Mon Sep 17 00:00:00 2001 From: Marcos Monteiro Date: Thu, 17 Sep 2026 12:19:45 -0700 Subject: [PATCH 5/8] [TSLA-11720] Derive the cc-operator image from the Calico Cloud version being installed --- Makefile | 29 ++++---- calico-cloud/get-started/checklist.mdx | 17 ++++- .../get-started/install-automated.mdx | 6 +- calico-cloud/get-started/install-cluster.mdx | 4 ++ .../get-started/install-private-registry.mdx | 2 +- .../get-started/setup-private-registry.mdx | 19 +++-- calico-cloud/get-started/upgrade-cluster.mdx | 6 +- .../version-23-2/get-started/checklist.mdx | 17 ++++- .../get-started/install-automated.mdx | 6 +- .../get-started/install-cluster.mdx | 4 ++ .../get-started/install-private-registry.mdx | 2 +- .../get-started/setup-private-registry.mdx | 19 +++-- .../get-started/upgrade-cluster.mdx | 6 +- scripts/update-cloud-image-list.sh | 71 +++++++++++++++++++ .../VersionedCloudImageList/index.js | 12 ++-- 15 files changed, 172 insertions(+), 48 deletions(-) create mode 100755 scripts/update-cloud-image-list.sh diff --git a/Makefile b/Makefile index 85ec09837a..f19e1874da 100644 --- a/Makefile +++ b/Makefile @@ -153,7 +153,7 @@ $(CALICO_BRANCHES) $(CALICO_ENT_BRANCHES) $(CALICO_CLOUD_BRANCHES): %__operator_ # This breaks up automatic generation by the three product # categories - OSS, cloud, and enterprise - but also retains # the `autogen` target, which updates all three. -# +# # Don't allow parallel jobs (this prevents breaking autogen targets) # and don't print commands that we run. .SILENT .NOTPARALLEL .PHONY: autogen autogen_calico autogen_enterprise autogen_cloud @@ -264,22 +264,17 @@ build-crd-reference-docs: $(CRD_DOC_GENERATOR) $(SED_INPLACE) 's/ \(Default:\)/
\1/g' $(PRODUCT)/reference/installation/_api.mdx $(SED_INPLACE) 's/ \(Supported values are:\)/
\1/g' $(PRODUCT)/reference/installation/_api.mdx +# Adds a Calico Cloud version to the private-registry image list in +# src/___new___/data/ccImageLists.js. The list is keyed by Calico Cloud version and shared by every +# docs tree, so it is updated once per release rather than once per tree. +# +# Both arguments are required: +# CC_VERSION the Calico Cloud version being released, e.g. v24.0.0 +# MANIFEST_VERSION the cloud-manifest version that release installs from, e.g. v3.24.0-1.0-1 update-cloud-image-list: - @if [ -z "${RUN_UPDATE_CLOUD_IMAGE_LIST}" ]; then echo "Use 'make run-update-cloud-image-list' instead"; false; fi - sed -i '/^\$$INSTALLER_IMAGE/,/^)/{/^\$$/!{/^)/!d}}' $(PRODUCT)/get-started/setup-private-registry.mdx - dl=$$(cat $(PRODUCT)/variables.js | grep clouddownloadurl | sed -e "s/^[^']*'\([^']*\)'.*$$/\1/" ) && \ - curl -O $$dl/image-list && \ - sed -i -e "/^\$$INSTALLER_IMAGE/r image-list" $(PRODUCT)/get-started/setup-private-registry.mdx - rm -f image-list - -# Add this back to the netlify target when the missing windows images are addressed in the image-list -run-update-cloud-image-list: - RUN_UPDATE_CLOUD_IMAGE_LIST=1 PRODUCT=calico-cloud make update-cloud-image-list - for x in $$(ls calico-cloud_versioned_docs/); do \ - RUN_UPDATE_CLOUD_IMAGE_LIST=1 PRODUCT=calico-cloud_versioned_docs/$$x make update-cloud-image-list; \ - done - @if [ "$$(git diff --stat ./calico-cloud*/**/get-started/connect/setup-private-registry.mdx)" != "" ]; then \ - echo "You might need to run 'make run-update-cloud-image-list' and commit the changes"; exit 1; fi + @if [ -z "$(CC_VERSION)" ] || [ -z "$(MANIFEST_VERSION)" ]; then \ + echo "usage: make update-cloud-image-list CC_VERSION=vXX.Y.Z MANIFEST_VERSION=v3.XX.Y-N"; false; fi + ./scripts/update-cloud-image-list.sh "$(CC_VERSION)" "$(MANIFEST_VERSION)" # This allow generating the components version for a specific product # NOTE: currently only implemented for calico-enterprise; there is validation in the script to check this @@ -372,4 +367,4 @@ vale: update-felix-config: $(if $(GITHUB_TOKEN),,$(error GITHUB_TOKEN is not set or empty, but is required)) @echo "Updating Felix configurations for OSS, Enterprise, and Cloud..." - @./scripts/update-felix-config.sh \ No newline at end of file + @./scripts/update-felix-config.sh diff --git a/calico-cloud/get-started/checklist.mdx b/calico-cloud/get-started/checklist.mdx index 7186a494f5..4e26e2a442 100644 --- a/calico-cloud/get-started/checklist.mdx +++ b/calico-cloud/get-started/checklist.mdx @@ -20,14 +20,15 @@ kubectl get installer default --namespace calico-cloud -o jsonpath --template '{ {"clusterName":"my-new-cluster","state":"installing"} ``` -After `state` is `complete`, $[prodname] is properly installed. +`state` moves through `waiting` and `installing` to `done`. If `state` is `error`, `message` says why. ## Check logs for fatal errors -Check that the $[prodname] operator is running and that logs do not have any fatal errors. +Check that the $[prodname] operator is running and that logs do not have any fatal errors. The deployment is named `calico-cloud-controller-manager` on a kubectl install and `calico-cloud` on a Helm install, so select it by label. The first line reports which version the operator installs. ```bash -kubectl logs -n calico-cloud deployment/calico-cloud-controller-manager +kubectl logs -n calico-cloud -l k8s-app=calico-cloud-updater +2022-04-04T14:34:32.472Z INFO setup starting cc-operator {"ccOperatorVersion": "v23.0.2", "calicoCloudVersion": "v23.0.2"} 2022-04-04T14:34:32.472Z INFO controller-runtime.metrics metrics server is starting to listen {"addr": "127.0.0.1:8080"} 2022-04-04T14:34:32.472Z INFO setup starting manager 2022-04-04T14:34:32.472Z INFO setup config {"ccBaseURL": "https://www.dev.calicocloud.io/api", "debug": false, "leader-elect": true} @@ -37,6 +38,16 @@ I0404 14:34:32.480870 1 leaderelection.go:253] successfully acquired lease <...> ``` +## Check installation errors + +**`spec.calicoCloudVersion ... does not match the Calico Cloud version installed by this operator`** + +Each operator installs one version of $[prodname] and rejects an `Installer` that asks for another. Set `spec.calicoCloudVersion` to the version the operator installs, remove it, or re-run the connect command for the version you want. + +**Operator pod in `ImagePullBackOff`** + +The operator image for that version is missing from your registry. Each version needs its own — see [Set up a private registry](setup-private-registry.mdx). + ## Check custom resources Verify that you have the **installer custom resource**, and that the values are appropriate for your environment. diff --git a/calico-cloud/get-started/install-automated.mdx b/calico-cloud/get-started/install-automated.mdx index 8d302efd65..7b4f4549bd 100644 --- a/calico-cloud/get-started/install-automated.mdx +++ b/calico-cloud/get-started/install-automated.mdx @@ -56,7 +56,7 @@ The following parameters are required for all Calico Cloud installations. | Parameter | Value | Example | Description | | -- | -- | -- | -- | | `installer.clusterName` | string | `cluster-name` | The name given to your managed cluster in Calico Cloud. | -| `installer.calicoCloudVersion` | string | `$[cloudUserVersion]` | The version of Calico Cloud you're installing. | +| `installer.calicoCloudVersion` | string | `$[cloudUserVersion]` | The version of Calico Cloud you're installing. This also selects the operator image, which is tagged with that version. | ```yaml title="Example from values.yaml with clusterName and calicoCloudVersion" @@ -75,6 +75,10 @@ If you're using a private registry, you must set the following parameters. | `installer.imagePath` | string | `path/to/directory` | The path to a directory in your private registry that contains images required to install Calico Cloud. | | `imagePullSecrets.name` | string | `secret-name` | The name of the image pull secret you will use to allow access from the `calico-cloud` namespace to your private registry. | +:::important +The operator image is pulled at the tag named by `installer.calicoCloudVersion`, so [mirror that version's operator image](setup-private-registry.mdx) first. With `installer.imagePath` unset, it is pulled from `calico-cloud-public` rather than `tigera`. +::: + ### Optional parameters for features The following parameters enable certain features in Calico Cloud. diff --git a/calico-cloud/get-started/install-cluster.mdx b/calico-cloud/get-started/install-cluster.mdx index 59365dd3e1..9b8f089959 100644 --- a/calico-cloud/get-started/install-cluster.mdx +++ b/calico-cloud/get-started/install-cluster.mdx @@ -58,6 +58,10 @@ You can quickly connect a cluster to Calico Cloud by generating a unique kubectl Monitor the status under **Connection Status**. When the status changes to **Connected**, installation is complete and your cluster is connected to Calico Cloud. +:::note +`installer.calicoCloudVersion` also selects the operator image, and an operator rejects an `Installer` that asks for a different version. To change version, generate a new command rather than editing this value. +::: + ## Additional resources * [Calico Cloud troubleshooting checklist](checklist.mdx) diff --git a/calico-cloud/get-started/install-private-registry.mdx b/calico-cloud/get-started/install-private-registry.mdx index 90df29c75f..a7a6d3b0de 100644 --- a/calico-cloud/get-started/install-private-registry.mdx +++ b/calico-cloud/get-started/install-private-registry.mdx @@ -14,7 +14,7 @@ You can perform a Helm installation from images stored on a private registry. * You have at least one cluster that meets our [system requirements](system-requirements.mdx). * You have kubectl access to the cluster. * You have installed Helm 3.0 or later on your workstation. -* You have [added the Calico Cloud images to a private registry](setup-private-registry.mdx), and you have the following information about the registry: +* You have [added the Calico Cloud images to a private registry](setup-private-registry.mdx) for the version you are installing, including its operator image, and you have the following information about the registry: * Registry secret name :::note If your private registry requires credentials, create a `calico-cloud` namespace on your cluster. diff --git a/calico-cloud/get-started/setup-private-registry.mdx b/calico-cloud/get-started/setup-private-registry.mdx index 054f945842..34b5ebaa9d 100644 --- a/calico-cloud/get-started/setup-private-registry.mdx +++ b/calico-cloud/get-started/setup-private-registry.mdx @@ -28,7 +28,6 @@ An **image path** is a directory in a registry that contains images required to **Required** -- [Helm CLI](https://helm.sh/docs/intro/install/) command - Use the [Crane command](https://github.com/google/go-containerregistry/blob/main/cmd/crane/README.md) to follow steps in this guide. (Other tools can be used, but commands be adjusted accordingly.) - Image registry - Must be private (accessible only on a private network or using log in credentials) @@ -50,6 +49,8 @@ Add the required $[prodname] images to a private registry. +`OPERATOR_IMAGE` is the $[prodname] operator, which is released per $[prodname] version and tagged with it; `IMAGES` is everything else. Mirror both for each version you plan to install. + ### Set up the private registry ```bash @@ -64,12 +65,14 @@ IMAGEPATH="" #### Image examples -| Original image | Image Registry | Image Path | Private registry image | -| ----------------------------------- | -------------- | ------------- | -------------------------------------------- | -| `quay.io/tigera/typha:v1.2.3` | `my.registry/` | | `my.registry/tigera/typha:v1.2.3` | -| `quay.io/tigera/typha:v1.2.3` | `my.registry/` | `custom-path` | `my.registry/custom-path/typha:v1.2.3` | -| `quay.io/tigera/cc-operator:v4.5.6` | `my.registry/` | | `my.registry/tigera/cc-operator:v4.5.6` | -| `quay.io/tigera/cc-operator:v4.5.6` | `my.registry/` | `custom-path` | `my.registry/custom-path/cc-operator:v4.5.6` | +| Original image | Image Registry | Image Path | Private registry image | +| ------------------------------------ | -------------- | ------------- | ----------------------------------------------------- | +| `quay.io/tigera/typha:v1.2.3` | `my.registry/` | | `my.registry/tigera/typha:v1.2.3` | +| `quay.io/tigera/typha:v1.2.3` | `my.registry/` | `custom-path` | `my.registry/custom-path/typha:v1.2.3` | +| `quay.io/tigera/cc-operator:v23.0.2` | `my.registry/` | | `my.registry/calico-cloud-public/cc-operator:v23.0.2` | +| `quay.io/tigera/cc-operator:v23.0.2` | `my.registry/` | `custom-path` | `my.registry/custom-path/cc-operator:v23.0.2` | + +The operator is the exception: with no image path set, it is pulled from `calico-cloud-public` rather than `tigera`. ### Copy images to your registry @@ -83,6 +86,7 @@ for image in ${IMAGES[@]}; do img_base=$(echo ${image} | sed "s#^.*/\([^/]*/[^/]*$\)#\1#") crane cp ${image} ${REGISTRY}${img_base} || break done +crane cp ${OPERATOR_IMAGE} ${REGISTRY}calico-cloud-public/${OPERATOR_IMAGE##*/} ``` @@ -93,6 +97,7 @@ for image in ${IMAGES[@]}; do img_base=$(echo ${image} | sed "s#^.*/##") crane cp ${image} ${REGISTRY}${IMAGEPATH}/${img_base} || break done +crane cp ${OPERATOR_IMAGE} ${REGISTRY}${IMAGEPATH}/${OPERATOR_IMAGE##*/} ``` diff --git a/calico-cloud/get-started/upgrade-cluster.mdx b/calico-cloud/get-started/upgrade-cluster.mdx index 4504383550..7a79123963 100644 --- a/calico-cloud/get-started/upgrade-cluster.mdx +++ b/calico-cloud/get-started/upgrade-cluster.mdx @@ -9,11 +9,15 @@ To upgrade a managed cluster to the latest version of $[prodname]: 1. From the web console, go to the **Managed Clusters** page. 1. If your organization uses multiple projects to group managed clusters, click the **Project** menu and select the project you want your cluster to be part of. 1. For the cluster you want to upgrade, select **Actions** > **Reinstall**. -1. In the **Reinstall Cluster** dialog, select a newer version of $[prodname] from the list, click **Reinstall**, and copy the generated kubectl command. +1. In the **Reinstall Cluster** dialog, select a newer version of $[prodname] from the list, click **Reinstall**, and copy the generated command. 1. From a terminal, paste and run the command. The cluster's status under **Connection Status** changes to **Disconnected: Installing**. When the upgrade is complete, the status changes to **Connected**. +:::important +If you install from a private registry, [mirror the new version's images](setup-private-registry.mdx), including its operator image, before you run the command. +::: + diff --git a/calico-cloud_versioned_docs/version-23-2/get-started/checklist.mdx b/calico-cloud_versioned_docs/version-23-2/get-started/checklist.mdx index 7186a494f5..4e26e2a442 100644 --- a/calico-cloud_versioned_docs/version-23-2/get-started/checklist.mdx +++ b/calico-cloud_versioned_docs/version-23-2/get-started/checklist.mdx @@ -20,14 +20,15 @@ kubectl get installer default --namespace calico-cloud -o jsonpath --template '{ {"clusterName":"my-new-cluster","state":"installing"} ``` -After `state` is `complete`, $[prodname] is properly installed. +`state` moves through `waiting` and `installing` to `done`. If `state` is `error`, `message` says why. ## Check logs for fatal errors -Check that the $[prodname] operator is running and that logs do not have any fatal errors. +Check that the $[prodname] operator is running and that logs do not have any fatal errors. The deployment is named `calico-cloud-controller-manager` on a kubectl install and `calico-cloud` on a Helm install, so select it by label. The first line reports which version the operator installs. ```bash -kubectl logs -n calico-cloud deployment/calico-cloud-controller-manager +kubectl logs -n calico-cloud -l k8s-app=calico-cloud-updater +2022-04-04T14:34:32.472Z INFO setup starting cc-operator {"ccOperatorVersion": "v23.0.2", "calicoCloudVersion": "v23.0.2"} 2022-04-04T14:34:32.472Z INFO controller-runtime.metrics metrics server is starting to listen {"addr": "127.0.0.1:8080"} 2022-04-04T14:34:32.472Z INFO setup starting manager 2022-04-04T14:34:32.472Z INFO setup config {"ccBaseURL": "https://www.dev.calicocloud.io/api", "debug": false, "leader-elect": true} @@ -37,6 +38,16 @@ I0404 14:34:32.480870 1 leaderelection.go:253] successfully acquired lease <...> ``` +## Check installation errors + +**`spec.calicoCloudVersion ... does not match the Calico Cloud version installed by this operator`** + +Each operator installs one version of $[prodname] and rejects an `Installer` that asks for another. Set `spec.calicoCloudVersion` to the version the operator installs, remove it, or re-run the connect command for the version you want. + +**Operator pod in `ImagePullBackOff`** + +The operator image for that version is missing from your registry. Each version needs its own — see [Set up a private registry](setup-private-registry.mdx). + ## Check custom resources Verify that you have the **installer custom resource**, and that the values are appropriate for your environment. diff --git a/calico-cloud_versioned_docs/version-23-2/get-started/install-automated.mdx b/calico-cloud_versioned_docs/version-23-2/get-started/install-automated.mdx index b70dfeeae4..8206d94a29 100644 --- a/calico-cloud_versioned_docs/version-23-2/get-started/install-automated.mdx +++ b/calico-cloud_versioned_docs/version-23-2/get-started/install-automated.mdx @@ -56,7 +56,7 @@ The following parameters are required for all Calico Cloud installations. | Parameter | Value | Example | Description | | -- | -- | -- | -- | | `installer.clusterName` | string | `cluster-name` | The name given to your managed cluster in Calico Cloud. | -| `installer.calicoCloudVersion` | string | `$[cloudUserVersion]` | The version of Calico Cloud you're installing. | +| `installer.calicoCloudVersion` | string | `$[cloudUserVersion]` | The version of Calico Cloud you're installing. This also selects the operator image, which is tagged with that version. | ```yaml title="Example from values.yaml with clusterName and calicoCloudVersion" @@ -75,6 +75,10 @@ If you're using a private registry, you must set the following parameters. | `installer.imagePath` | string | `path/to/directory` | The path to a directory in your private registry that contains images required to install Calico Cloud. | | `imagePullSecrets.name` | string | `secret-name` | The name of the image pull secret you will use to allow access from the `calico-cloud` namespace to your private registry. | +:::important +The operator image is pulled at the tag named by `installer.calicoCloudVersion`, so [mirror that version's operator image](setup-private-registry.mdx) first. With `installer.imagePath` unset, it is pulled from `calico-cloud-public` rather than `tigera`. +::: + ### Optional parameters for features The following parameters enable certain features in Calico Cloud. diff --git a/calico-cloud_versioned_docs/version-23-2/get-started/install-cluster.mdx b/calico-cloud_versioned_docs/version-23-2/get-started/install-cluster.mdx index cc6484e449..3be97ea0c7 100644 --- a/calico-cloud_versioned_docs/version-23-2/get-started/install-cluster.mdx +++ b/calico-cloud_versioned_docs/version-23-2/get-started/install-cluster.mdx @@ -59,6 +59,10 @@ You can quickly connect a cluster to Calico Cloud by generating a unique kubectl Monitor the status under **Connection Status**. When the status changes to **Connected**, installation is complete and your cluster is connected to Calico Cloud. +:::note +`installer.calicoCloudVersion` also selects the operator image, and an operator rejects an `Installer` that asks for a different version. To change version, generate a new command rather than editing this value. +::: + ## Additional resources * [Calico Cloud troubleshooting checklist](checklist.mdx) diff --git a/calico-cloud_versioned_docs/version-23-2/get-started/install-private-registry.mdx b/calico-cloud_versioned_docs/version-23-2/get-started/install-private-registry.mdx index b0049bd78c..987642087a 100644 --- a/calico-cloud_versioned_docs/version-23-2/get-started/install-private-registry.mdx +++ b/calico-cloud_versioned_docs/version-23-2/get-started/install-private-registry.mdx @@ -14,7 +14,7 @@ You can perform a Helm installation from images stored on a private registry. * You have at least one cluster that meets our [system requirements](system-requirements.mdx). * You have kubectl access to the cluster. * You have installed Helm 3.0 or later on your workstation. -* You have [added the Calico Cloud images to a private registry](setup-private-registry.mdx), and you have the following information about the registry: +* You have [added the Calico Cloud images to a private registry](setup-private-registry.mdx) for the version you are installing, including its operator image, and you have the following information about the registry: * Registry secret name :::note If your private registry requires credentials, create a `calico-cloud` namespace on your cluster. diff --git a/calico-cloud_versioned_docs/version-23-2/get-started/setup-private-registry.mdx b/calico-cloud_versioned_docs/version-23-2/get-started/setup-private-registry.mdx index 054f945842..34b5ebaa9d 100644 --- a/calico-cloud_versioned_docs/version-23-2/get-started/setup-private-registry.mdx +++ b/calico-cloud_versioned_docs/version-23-2/get-started/setup-private-registry.mdx @@ -28,7 +28,6 @@ An **image path** is a directory in a registry that contains images required to **Required** -- [Helm CLI](https://helm.sh/docs/intro/install/) command - Use the [Crane command](https://github.com/google/go-containerregistry/blob/main/cmd/crane/README.md) to follow steps in this guide. (Other tools can be used, but commands be adjusted accordingly.) - Image registry - Must be private (accessible only on a private network or using log in credentials) @@ -50,6 +49,8 @@ Add the required $[prodname] images to a private registry. +`OPERATOR_IMAGE` is the $[prodname] operator, which is released per $[prodname] version and tagged with it; `IMAGES` is everything else. Mirror both for each version you plan to install. + ### Set up the private registry ```bash @@ -64,12 +65,14 @@ IMAGEPATH="" #### Image examples -| Original image | Image Registry | Image Path | Private registry image | -| ----------------------------------- | -------------- | ------------- | -------------------------------------------- | -| `quay.io/tigera/typha:v1.2.3` | `my.registry/` | | `my.registry/tigera/typha:v1.2.3` | -| `quay.io/tigera/typha:v1.2.3` | `my.registry/` | `custom-path` | `my.registry/custom-path/typha:v1.2.3` | -| `quay.io/tigera/cc-operator:v4.5.6` | `my.registry/` | | `my.registry/tigera/cc-operator:v4.5.6` | -| `quay.io/tigera/cc-operator:v4.5.6` | `my.registry/` | `custom-path` | `my.registry/custom-path/cc-operator:v4.5.6` | +| Original image | Image Registry | Image Path | Private registry image | +| ------------------------------------ | -------------- | ------------- | ----------------------------------------------------- | +| `quay.io/tigera/typha:v1.2.3` | `my.registry/` | | `my.registry/tigera/typha:v1.2.3` | +| `quay.io/tigera/typha:v1.2.3` | `my.registry/` | `custom-path` | `my.registry/custom-path/typha:v1.2.3` | +| `quay.io/tigera/cc-operator:v23.0.2` | `my.registry/` | | `my.registry/calico-cloud-public/cc-operator:v23.0.2` | +| `quay.io/tigera/cc-operator:v23.0.2` | `my.registry/` | `custom-path` | `my.registry/custom-path/cc-operator:v23.0.2` | + +The operator is the exception: with no image path set, it is pulled from `calico-cloud-public` rather than `tigera`. ### Copy images to your registry @@ -83,6 +86,7 @@ for image in ${IMAGES[@]}; do img_base=$(echo ${image} | sed "s#^.*/\([^/]*/[^/]*$\)#\1#") crane cp ${image} ${REGISTRY}${img_base} || break done +crane cp ${OPERATOR_IMAGE} ${REGISTRY}calico-cloud-public/${OPERATOR_IMAGE##*/} ``` @@ -93,6 +97,7 @@ for image in ${IMAGES[@]}; do img_base=$(echo ${image} | sed "s#^.*/##") crane cp ${image} ${REGISTRY}${IMAGEPATH}/${img_base} || break done +crane cp ${OPERATOR_IMAGE} ${REGISTRY}${IMAGEPATH}/${OPERATOR_IMAGE##*/} ``` diff --git a/calico-cloud_versioned_docs/version-23-2/get-started/upgrade-cluster.mdx b/calico-cloud_versioned_docs/version-23-2/get-started/upgrade-cluster.mdx index 4504383550..7a79123963 100644 --- a/calico-cloud_versioned_docs/version-23-2/get-started/upgrade-cluster.mdx +++ b/calico-cloud_versioned_docs/version-23-2/get-started/upgrade-cluster.mdx @@ -9,11 +9,15 @@ To upgrade a managed cluster to the latest version of $[prodname]: 1. From the web console, go to the **Managed Clusters** page. 1. If your organization uses multiple projects to group managed clusters, click the **Project** menu and select the project you want your cluster to be part of. 1. For the cluster you want to upgrade, select **Actions** > **Reinstall**. -1. In the **Reinstall Cluster** dialog, select a newer version of $[prodname] from the list, click **Reinstall**, and copy the generated kubectl command. +1. In the **Reinstall Cluster** dialog, select a newer version of $[prodname] from the list, click **Reinstall**, and copy the generated command. 1. From a terminal, paste and run the command. The cluster's status under **Connection Status** changes to **Disconnected: Installing**. When the upgrade is complete, the status changes to **Connected**. +:::important +If you install from a private registry, [mirror the new version's images](setup-private-registry.mdx), including its operator image, before you run the command. +::: + diff --git a/scripts/update-cloud-image-list.sh b/scripts/update-cloud-image-list.sh new file mode 100755 index 0000000000..900fe9ed7b --- /dev/null +++ b/scripts/update-cloud-image-list.sh @@ -0,0 +1,71 @@ +#!/usr/bin/env bash +# Add a Calico Cloud version to the private-registry image list in +# src/___new___/data/ccImageLists.js. +# +# The list is keyed by Calico Cloud version and is shared by every docs tree, so it is updated once +# per release rather than once per tree. The new entry is labelled "(latest)" and the previous one +# loses the label. +# +# The cc-operator image is deliberately not fetched. It is released in lockstep with Calico Cloud +# -- one image per version, tagged with that version -- so VersionedCloudImageList derives it from +# the entry's key. The published image-list does not contain it. +set -eu + +ccVersion=${1:-} +manifestVersion=${2:-} +baseUrl=${BASE_URL:-https://installer.calicocloud.io} +list=src/___new___/data/ccImageLists.js + +function help() { + echo "This script requires 2 arguments: a Calico Cloud version, and the cloud-manifest version" + echo "that release installs from." + echo "For example: ./scripts/update-cloud-image-list.sh v24.0.0 v3.24.0-1.0-1" + exit 1 +} + +if [[ -z ${ccVersion} || -z ${manifestVersion} ]]; then + help +fi + +if [[ ! -f ${list} ]]; then + echo "Run this from the root of the docs repo: ${list} not found" + exit 1 +fi + +url="${baseUrl}/manifests/${manifestVersion}/image-list" +echo "Fetching ${url}" +images=$(curl -fsS "${url}") + +if [[ -z ${images} ]]; then + echo "No images returned by ${url}" + exit 1 +fi + +CC_VERSION="${ccVersion}" IMAGES="${images}" LIST="${list}" SOURCE_URL="${url}" node -e ' + const fs = require("fs"); + const { CC_VERSION, IMAGES, LIST, SOURCE_URL } = process.env; + let text = fs.readFileSync(LIST, "utf8"); + + if (new RegExp(`^ .${CC_VERSION.replace(/\./g, "\\.")}( \\(latest\\))?.:`, "m").test(text)) { + console.error(`${CC_VERSION} is already in ${LIST}`); + process.exit(1); + } + if (/cc-operator/.test(IMAGES)) { + console.error("NOTE: the image-list now contains cc-operator. It is added per version by"); + console.error(" VersionedCloudImageList, so check for a duplicate before committing."); + } + + // The previous newest entry is no longer the latest. + text = text.replace(/^ (.[^\n]+) \(latest\).:/m, " $1'"'"':"); + + const entry = ` // curl -0 ${SOURCE_URL}\n '"'"'${CC_VERSION} (latest)'"'"': \`${IMAGES}\`,\n`; + const start = "const ccImageLists = {\n"; + if (!text.startsWith(start)) { + console.error(`could not find the start of ccImageLists in ${LIST}`); + process.exit(1); + } + fs.writeFileSync(LIST, start + entry + text.slice(start.length)); +' + +echo "Added ${ccVersion} to ${list}" +echo "Check that quay.io/tigera/cc-operator:${ccVersion} is published before releasing the docs." diff --git a/src/___new___/components/VersionedCloudImageList/index.js b/src/___new___/components/VersionedCloudImageList/index.js index 3fcb9385d8..9ed1e13564 100644 --- a/src/___new___/components/VersionedCloudImageList/index.js +++ b/src/___new___/components/VersionedCloudImageList/index.js @@ -4,6 +4,10 @@ import CodeBlock from '@theme/CodeBlock'; import variables from '../../../../calico-cloud/variables'; import ccImageLists from '../../data/ccImageLists'; +// cc-operator is released per Calico Cloud version and tagged with it, so the entry key is the +// operator tag. The newest entry is labelled "(latest)", which is not part of the tag. +const operatorTag = (version) => version.replace(/\s*\(latest\)$/, ''); + const CodeBlockSelector = () => { const [selectedVersion, setSelectedVersion] = useState(Object.keys(ccImageLists)[0]); @@ -41,13 +45,11 @@ const CodeBlockSelector = () => { - {`helm repo add calico-cloud ${variables.clouddownloadbase}/charts -INSTALLER_IMAGE="${variables.cloudoperatorimage}:$(helm show chart calico-cloud/calico-cloud | grep version: | sed -e 's/version: *//' -e 's/+/-g/')" + {`OPERATOR_IMAGE=${variables.cloudoperatorimage}:${operatorTag(selectedVersion)} IMAGES=( -$INSTALLER_IMAGE ${ccImageLists[selectedVersion]} )`} From 7ddb009ed9383240cf8383a4664f1f123ef37928 Mon Sep 17 00:00:00 2001 From: Marcos Monteiro Date: Thu, 17 Sep 2026 14:20:00 -0700 Subject: [PATCH 6/8] Clarify the calico-cloud-public path and split the log sample block Addresses Copilot review feedback on #3032: - Say the operator comes from the calico-cloud-public path *in your registry*, so it cannot be read as the upstream source changing. - Move the sample log output out of the bash block, matching the "Sample output" convention used earlier in the same page. Co-Authored-By: Claude Opus 5 (1M context) --- calico-cloud/get-started/checklist.mdx | 5 +++++ calico-cloud/get-started/install-automated.mdx | 2 +- calico-cloud/get-started/setup-private-registry.mdx | 2 +- .../version-23-2/get-started/checklist.mdx | 5 +++++ .../version-23-2/get-started/install-automated.mdx | 2 +- .../version-23-2/get-started/setup-private-registry.mdx | 2 +- 6 files changed, 14 insertions(+), 4 deletions(-) diff --git a/calico-cloud/get-started/checklist.mdx b/calico-cloud/get-started/checklist.mdx index 4e26e2a442..771f0423ae 100644 --- a/calico-cloud/get-started/checklist.mdx +++ b/calico-cloud/get-started/checklist.mdx @@ -28,6 +28,11 @@ Check that the $[prodname] operator is running and that logs do not have any fat ```bash kubectl logs -n calico-cloud -l k8s-app=calico-cloud-updater +``` + +**Sample output** + +``` 2022-04-04T14:34:32.472Z INFO setup starting cc-operator {"ccOperatorVersion": "v23.0.2", "calicoCloudVersion": "v23.0.2"} 2022-04-04T14:34:32.472Z INFO controller-runtime.metrics metrics server is starting to listen {"addr": "127.0.0.1:8080"} 2022-04-04T14:34:32.472Z INFO setup starting manager diff --git a/calico-cloud/get-started/install-automated.mdx b/calico-cloud/get-started/install-automated.mdx index 7b4f4549bd..f8cb47ce20 100644 --- a/calico-cloud/get-started/install-automated.mdx +++ b/calico-cloud/get-started/install-automated.mdx @@ -76,7 +76,7 @@ If you're using a private registry, you must set the following parameters. | `imagePullSecrets.name` | string | `secret-name` | The name of the image pull secret you will use to allow access from the `calico-cloud` namespace to your private registry. | :::important -The operator image is pulled at the tag named by `installer.calicoCloudVersion`, so [mirror that version's operator image](setup-private-registry.mdx) first. With `installer.imagePath` unset, it is pulled from `calico-cloud-public` rather than `tigera`. +The operator image is pulled at the tag named by `installer.calicoCloudVersion`, so [mirror that version's operator image](setup-private-registry.mdx) first. With `installer.imagePath` unset, it is pulled from the `calico-cloud-public` path in your registry rather than `tigera`. ::: ### Optional parameters for features diff --git a/calico-cloud/get-started/setup-private-registry.mdx b/calico-cloud/get-started/setup-private-registry.mdx index 34b5ebaa9d..9e0b1b3591 100644 --- a/calico-cloud/get-started/setup-private-registry.mdx +++ b/calico-cloud/get-started/setup-private-registry.mdx @@ -72,7 +72,7 @@ IMAGEPATH="" | `quay.io/tigera/cc-operator:v23.0.2` | `my.registry/` | | `my.registry/calico-cloud-public/cc-operator:v23.0.2` | | `quay.io/tigera/cc-operator:v23.0.2` | `my.registry/` | `custom-path` | `my.registry/custom-path/cc-operator:v23.0.2` | -The operator is the exception: with no image path set, it is pulled from `calico-cloud-public` rather than `tigera`. +The operator is the exception: with no image path set, it is pulled from the `calico-cloud-public` path in your registry rather than `tigera`. ### Copy images to your registry diff --git a/calico-cloud_versioned_docs/version-23-2/get-started/checklist.mdx b/calico-cloud_versioned_docs/version-23-2/get-started/checklist.mdx index 4e26e2a442..771f0423ae 100644 --- a/calico-cloud_versioned_docs/version-23-2/get-started/checklist.mdx +++ b/calico-cloud_versioned_docs/version-23-2/get-started/checklist.mdx @@ -28,6 +28,11 @@ Check that the $[prodname] operator is running and that logs do not have any fat ```bash kubectl logs -n calico-cloud -l k8s-app=calico-cloud-updater +``` + +**Sample output** + +``` 2022-04-04T14:34:32.472Z INFO setup starting cc-operator {"ccOperatorVersion": "v23.0.2", "calicoCloudVersion": "v23.0.2"} 2022-04-04T14:34:32.472Z INFO controller-runtime.metrics metrics server is starting to listen {"addr": "127.0.0.1:8080"} 2022-04-04T14:34:32.472Z INFO setup starting manager diff --git a/calico-cloud_versioned_docs/version-23-2/get-started/install-automated.mdx b/calico-cloud_versioned_docs/version-23-2/get-started/install-automated.mdx index 8206d94a29..104f7a849e 100644 --- a/calico-cloud_versioned_docs/version-23-2/get-started/install-automated.mdx +++ b/calico-cloud_versioned_docs/version-23-2/get-started/install-automated.mdx @@ -76,7 +76,7 @@ If you're using a private registry, you must set the following parameters. | `imagePullSecrets.name` | string | `secret-name` | The name of the image pull secret you will use to allow access from the `calico-cloud` namespace to your private registry. | :::important -The operator image is pulled at the tag named by `installer.calicoCloudVersion`, so [mirror that version's operator image](setup-private-registry.mdx) first. With `installer.imagePath` unset, it is pulled from `calico-cloud-public` rather than `tigera`. +The operator image is pulled at the tag named by `installer.calicoCloudVersion`, so [mirror that version's operator image](setup-private-registry.mdx) first. With `installer.imagePath` unset, it is pulled from the `calico-cloud-public` path in your registry rather than `tigera`. ::: ### Optional parameters for features diff --git a/calico-cloud_versioned_docs/version-23-2/get-started/setup-private-registry.mdx b/calico-cloud_versioned_docs/version-23-2/get-started/setup-private-registry.mdx index 34b5ebaa9d..9e0b1b3591 100644 --- a/calico-cloud_versioned_docs/version-23-2/get-started/setup-private-registry.mdx +++ b/calico-cloud_versioned_docs/version-23-2/get-started/setup-private-registry.mdx @@ -72,7 +72,7 @@ IMAGEPATH="" | `quay.io/tigera/cc-operator:v23.0.2` | `my.registry/` | | `my.registry/calico-cloud-public/cc-operator:v23.0.2` | | `quay.io/tigera/cc-operator:v23.0.2` | `my.registry/` | `custom-path` | `my.registry/custom-path/cc-operator:v23.0.2` | -The operator is the exception: with no image path set, it is pulled from `calico-cloud-public` rather than `tigera`. +The operator is the exception: with no image path set, it is pulled from the `calico-cloud-public` path in your registry rather than `tigera`. ### Copy images to your registry From 64953436ea1db2c1da3bb564d9142d25d2a9b8f5 Mon Sep 17 00:00:00 2001 From: Marcos Monteiro Date: Fri, 18 Sep 2026 13:16:54 -0700 Subject: [PATCH 7/8] Cut back to the image list change Review feedback: most of the added guidance was not needed. - The operator image goes back inside IMAGES, so the OPERATOR_IMAGE variable and the two extra `crane cp` lines are gone. This assumes the chart's private-registry path default is fixed to `tigera`; it has been `calico-cloud-public` since the public image moved to quay.io/tigera in 2023, which is why the image table needed no change after all. - Drops the version-23-2 edits; those docs are cut from the unversioned tree when a new version is released. - Drops the Makefile target and its script, to be looked at separately. - Drops the notes added to the install, upgrade and private registry pages, and keeps only `complete` -> `done` in the checklist. Co-Authored-By: Claude Opus 5 (1M context) --- Makefile | 29 ++++---- calico-cloud/get-started/checklist.mdx | 22 +----- .../get-started/install-automated.mdx | 6 +- calico-cloud/get-started/install-cluster.mdx | 4 -- .../get-started/install-private-registry.mdx | 2 +- .../get-started/setup-private-registry.mdx | 19 ++--- calico-cloud/get-started/upgrade-cluster.mdx | 6 +- .../version-23-2/get-started/checklist.mdx | 22 +----- .../get-started/install-automated.mdx | 6 +- .../get-started/install-cluster.mdx | 4 -- .../get-started/install-private-registry.mdx | 2 +- .../get-started/setup-private-registry.mdx | 19 ++--- .../get-started/upgrade-cluster.mdx | 6 +- scripts/update-cloud-image-list.sh | 71 ------------------- .../VersionedCloudImageList/index.js | 4 +- 15 files changed, 45 insertions(+), 177 deletions(-) delete mode 100755 scripts/update-cloud-image-list.sh diff --git a/Makefile b/Makefile index f19e1874da..85ec09837a 100644 --- a/Makefile +++ b/Makefile @@ -153,7 +153,7 @@ $(CALICO_BRANCHES) $(CALICO_ENT_BRANCHES) $(CALICO_CLOUD_BRANCHES): %__operator_ # This breaks up automatic generation by the three product # categories - OSS, cloud, and enterprise - but also retains # the `autogen` target, which updates all three. -# +# # Don't allow parallel jobs (this prevents breaking autogen targets) # and don't print commands that we run. .SILENT .NOTPARALLEL .PHONY: autogen autogen_calico autogen_enterprise autogen_cloud @@ -264,17 +264,22 @@ build-crd-reference-docs: $(CRD_DOC_GENERATOR) $(SED_INPLACE) 's/ \(Default:\)/
\1/g' $(PRODUCT)/reference/installation/_api.mdx $(SED_INPLACE) 's/ \(Supported values are:\)/
\1/g' $(PRODUCT)/reference/installation/_api.mdx -# Adds a Calico Cloud version to the private-registry image list in -# src/___new___/data/ccImageLists.js. The list is keyed by Calico Cloud version and shared by every -# docs tree, so it is updated once per release rather than once per tree. -# -# Both arguments are required: -# CC_VERSION the Calico Cloud version being released, e.g. v24.0.0 -# MANIFEST_VERSION the cloud-manifest version that release installs from, e.g. v3.24.0-1.0-1 update-cloud-image-list: - @if [ -z "$(CC_VERSION)" ] || [ -z "$(MANIFEST_VERSION)" ]; then \ - echo "usage: make update-cloud-image-list CC_VERSION=vXX.Y.Z MANIFEST_VERSION=v3.XX.Y-N"; false; fi - ./scripts/update-cloud-image-list.sh "$(CC_VERSION)" "$(MANIFEST_VERSION)" + @if [ -z "${RUN_UPDATE_CLOUD_IMAGE_LIST}" ]; then echo "Use 'make run-update-cloud-image-list' instead"; false; fi + sed -i '/^\$$INSTALLER_IMAGE/,/^)/{/^\$$/!{/^)/!d}}' $(PRODUCT)/get-started/setup-private-registry.mdx + dl=$$(cat $(PRODUCT)/variables.js | grep clouddownloadurl | sed -e "s/^[^']*'\([^']*\)'.*$$/\1/" ) && \ + curl -O $$dl/image-list && \ + sed -i -e "/^\$$INSTALLER_IMAGE/r image-list" $(PRODUCT)/get-started/setup-private-registry.mdx + rm -f image-list + +# Add this back to the netlify target when the missing windows images are addressed in the image-list +run-update-cloud-image-list: + RUN_UPDATE_CLOUD_IMAGE_LIST=1 PRODUCT=calico-cloud make update-cloud-image-list + for x in $$(ls calico-cloud_versioned_docs/); do \ + RUN_UPDATE_CLOUD_IMAGE_LIST=1 PRODUCT=calico-cloud_versioned_docs/$$x make update-cloud-image-list; \ + done + @if [ "$$(git diff --stat ./calico-cloud*/**/get-started/connect/setup-private-registry.mdx)" != "" ]; then \ + echo "You might need to run 'make run-update-cloud-image-list' and commit the changes"; exit 1; fi # This allow generating the components version for a specific product # NOTE: currently only implemented for calico-enterprise; there is validation in the script to check this @@ -367,4 +372,4 @@ vale: update-felix-config: $(if $(GITHUB_TOKEN),,$(error GITHUB_TOKEN is not set or empty, but is required)) @echo "Updating Felix configurations for OSS, Enterprise, and Cloud..." - @./scripts/update-felix-config.sh + @./scripts/update-felix-config.sh \ No newline at end of file diff --git a/calico-cloud/get-started/checklist.mdx b/calico-cloud/get-started/checklist.mdx index 771f0423ae..ffc8f7f378 100644 --- a/calico-cloud/get-started/checklist.mdx +++ b/calico-cloud/get-started/checklist.mdx @@ -20,20 +20,14 @@ kubectl get installer default --namespace calico-cloud -o jsonpath --template '{ {"clusterName":"my-new-cluster","state":"installing"} ``` -`state` moves through `waiting` and `installing` to `done`. If `state` is `error`, `message` says why. +After `state` is `done`, $[prodname] is properly installed. ## Check logs for fatal errors -Check that the $[prodname] operator is running and that logs do not have any fatal errors. The deployment is named `calico-cloud-controller-manager` on a kubectl install and `calico-cloud` on a Helm install, so select it by label. The first line reports which version the operator installs. +Check that the $[prodname] operator is running and that logs do not have any fatal errors. ```bash -kubectl logs -n calico-cloud -l k8s-app=calico-cloud-updater -``` - -**Sample output** - -``` -2022-04-04T14:34:32.472Z INFO setup starting cc-operator {"ccOperatorVersion": "v23.0.2", "calicoCloudVersion": "v23.0.2"} +kubectl logs -n calico-cloud deployment/calico-cloud-controller-manager 2022-04-04T14:34:32.472Z INFO controller-runtime.metrics metrics server is starting to listen {"addr": "127.0.0.1:8080"} 2022-04-04T14:34:32.472Z INFO setup starting manager 2022-04-04T14:34:32.472Z INFO setup config {"ccBaseURL": "https://www.dev.calicocloud.io/api", "debug": false, "leader-elect": true} @@ -43,16 +37,6 @@ I0404 14:34:32.480870 1 leaderelection.go:253] successfully acquired lease <...> ``` -## Check installation errors - -**`spec.calicoCloudVersion ... does not match the Calico Cloud version installed by this operator`** - -Each operator installs one version of $[prodname] and rejects an `Installer` that asks for another. Set `spec.calicoCloudVersion` to the version the operator installs, remove it, or re-run the connect command for the version you want. - -**Operator pod in `ImagePullBackOff`** - -The operator image for that version is missing from your registry. Each version needs its own — see [Set up a private registry](setup-private-registry.mdx). - ## Check custom resources Verify that you have the **installer custom resource**, and that the values are appropriate for your environment. diff --git a/calico-cloud/get-started/install-automated.mdx b/calico-cloud/get-started/install-automated.mdx index f8cb47ce20..8d302efd65 100644 --- a/calico-cloud/get-started/install-automated.mdx +++ b/calico-cloud/get-started/install-automated.mdx @@ -56,7 +56,7 @@ The following parameters are required for all Calico Cloud installations. | Parameter | Value | Example | Description | | -- | -- | -- | -- | | `installer.clusterName` | string | `cluster-name` | The name given to your managed cluster in Calico Cloud. | -| `installer.calicoCloudVersion` | string | `$[cloudUserVersion]` | The version of Calico Cloud you're installing. This also selects the operator image, which is tagged with that version. | +| `installer.calicoCloudVersion` | string | `$[cloudUserVersion]` | The version of Calico Cloud you're installing. | ```yaml title="Example from values.yaml with clusterName and calicoCloudVersion" @@ -75,10 +75,6 @@ If you're using a private registry, you must set the following parameters. | `installer.imagePath` | string | `path/to/directory` | The path to a directory in your private registry that contains images required to install Calico Cloud. | | `imagePullSecrets.name` | string | `secret-name` | The name of the image pull secret you will use to allow access from the `calico-cloud` namespace to your private registry. | -:::important -The operator image is pulled at the tag named by `installer.calicoCloudVersion`, so [mirror that version's operator image](setup-private-registry.mdx) first. With `installer.imagePath` unset, it is pulled from the `calico-cloud-public` path in your registry rather than `tigera`. -::: - ### Optional parameters for features The following parameters enable certain features in Calico Cloud. diff --git a/calico-cloud/get-started/install-cluster.mdx b/calico-cloud/get-started/install-cluster.mdx index 9b8f089959..59365dd3e1 100644 --- a/calico-cloud/get-started/install-cluster.mdx +++ b/calico-cloud/get-started/install-cluster.mdx @@ -58,10 +58,6 @@ You can quickly connect a cluster to Calico Cloud by generating a unique kubectl Monitor the status under **Connection Status**. When the status changes to **Connected**, installation is complete and your cluster is connected to Calico Cloud. -:::note -`installer.calicoCloudVersion` also selects the operator image, and an operator rejects an `Installer` that asks for a different version. To change version, generate a new command rather than editing this value. -::: - ## Additional resources * [Calico Cloud troubleshooting checklist](checklist.mdx) diff --git a/calico-cloud/get-started/install-private-registry.mdx b/calico-cloud/get-started/install-private-registry.mdx index a7a6d3b0de..90df29c75f 100644 --- a/calico-cloud/get-started/install-private-registry.mdx +++ b/calico-cloud/get-started/install-private-registry.mdx @@ -14,7 +14,7 @@ You can perform a Helm installation from images stored on a private registry. * You have at least one cluster that meets our [system requirements](system-requirements.mdx). * You have kubectl access to the cluster. * You have installed Helm 3.0 or later on your workstation. -* You have [added the Calico Cloud images to a private registry](setup-private-registry.mdx) for the version you are installing, including its operator image, and you have the following information about the registry: +* You have [added the Calico Cloud images to a private registry](setup-private-registry.mdx), and you have the following information about the registry: * Registry secret name :::note If your private registry requires credentials, create a `calico-cloud` namespace on your cluster. diff --git a/calico-cloud/get-started/setup-private-registry.mdx b/calico-cloud/get-started/setup-private-registry.mdx index 9e0b1b3591..054f945842 100644 --- a/calico-cloud/get-started/setup-private-registry.mdx +++ b/calico-cloud/get-started/setup-private-registry.mdx @@ -28,6 +28,7 @@ An **image path** is a directory in a registry that contains images required to **Required** +- [Helm CLI](https://helm.sh/docs/intro/install/) command - Use the [Crane command](https://github.com/google/go-containerregistry/blob/main/cmd/crane/README.md) to follow steps in this guide. (Other tools can be used, but commands be adjusted accordingly.) - Image registry - Must be private (accessible only on a private network or using log in credentials) @@ -49,8 +50,6 @@ Add the required $[prodname] images to a private registry. -`OPERATOR_IMAGE` is the $[prodname] operator, which is released per $[prodname] version and tagged with it; `IMAGES` is everything else. Mirror both for each version you plan to install. - ### Set up the private registry ```bash @@ -65,14 +64,12 @@ IMAGEPATH="" #### Image examples -| Original image | Image Registry | Image Path | Private registry image | -| ------------------------------------ | -------------- | ------------- | ----------------------------------------------------- | -| `quay.io/tigera/typha:v1.2.3` | `my.registry/` | | `my.registry/tigera/typha:v1.2.3` | -| `quay.io/tigera/typha:v1.2.3` | `my.registry/` | `custom-path` | `my.registry/custom-path/typha:v1.2.3` | -| `quay.io/tigera/cc-operator:v23.0.2` | `my.registry/` | | `my.registry/calico-cloud-public/cc-operator:v23.0.2` | -| `quay.io/tigera/cc-operator:v23.0.2` | `my.registry/` | `custom-path` | `my.registry/custom-path/cc-operator:v23.0.2` | - -The operator is the exception: with no image path set, it is pulled from the `calico-cloud-public` path in your registry rather than `tigera`. +| Original image | Image Registry | Image Path | Private registry image | +| ----------------------------------- | -------------- | ------------- | -------------------------------------------- | +| `quay.io/tigera/typha:v1.2.3` | `my.registry/` | | `my.registry/tigera/typha:v1.2.3` | +| `quay.io/tigera/typha:v1.2.3` | `my.registry/` | `custom-path` | `my.registry/custom-path/typha:v1.2.3` | +| `quay.io/tigera/cc-operator:v4.5.6` | `my.registry/` | | `my.registry/tigera/cc-operator:v4.5.6` | +| `quay.io/tigera/cc-operator:v4.5.6` | `my.registry/` | `custom-path` | `my.registry/custom-path/cc-operator:v4.5.6` | ### Copy images to your registry @@ -86,7 +83,6 @@ for image in ${IMAGES[@]}; do img_base=$(echo ${image} | sed "s#^.*/\([^/]*/[^/]*$\)#\1#") crane cp ${image} ${REGISTRY}${img_base} || break done -crane cp ${OPERATOR_IMAGE} ${REGISTRY}calico-cloud-public/${OPERATOR_IMAGE##*/} ``` @@ -97,7 +93,6 @@ for image in ${IMAGES[@]}; do img_base=$(echo ${image} | sed "s#^.*/##") crane cp ${image} ${REGISTRY}${IMAGEPATH}/${img_base} || break done -crane cp ${OPERATOR_IMAGE} ${REGISTRY}${IMAGEPATH}/${OPERATOR_IMAGE##*/} ``` diff --git a/calico-cloud/get-started/upgrade-cluster.mdx b/calico-cloud/get-started/upgrade-cluster.mdx index 7a79123963..4504383550 100644 --- a/calico-cloud/get-started/upgrade-cluster.mdx +++ b/calico-cloud/get-started/upgrade-cluster.mdx @@ -9,15 +9,11 @@ To upgrade a managed cluster to the latest version of $[prodname]: 1. From the web console, go to the **Managed Clusters** page. 1. If your organization uses multiple projects to group managed clusters, click the **Project** menu and select the project you want your cluster to be part of. 1. For the cluster you want to upgrade, select **Actions** > **Reinstall**. -1. In the **Reinstall Cluster** dialog, select a newer version of $[prodname] from the list, click **Reinstall**, and copy the generated command. +1. In the **Reinstall Cluster** dialog, select a newer version of $[prodname] from the list, click **Reinstall**, and copy the generated kubectl command. 1. From a terminal, paste and run the command. The cluster's status under **Connection Status** changes to **Disconnected: Installing**. When the upgrade is complete, the status changes to **Connected**. -:::important -If you install from a private registry, [mirror the new version's images](setup-private-registry.mdx), including its operator image, before you run the command. -::: - diff --git a/calico-cloud_versioned_docs/version-23-2/get-started/checklist.mdx b/calico-cloud_versioned_docs/version-23-2/get-started/checklist.mdx index 771f0423ae..7186a494f5 100644 --- a/calico-cloud_versioned_docs/version-23-2/get-started/checklist.mdx +++ b/calico-cloud_versioned_docs/version-23-2/get-started/checklist.mdx @@ -20,20 +20,14 @@ kubectl get installer default --namespace calico-cloud -o jsonpath --template '{ {"clusterName":"my-new-cluster","state":"installing"} ``` -`state` moves through `waiting` and `installing` to `done`. If `state` is `error`, `message` says why. +After `state` is `complete`, $[prodname] is properly installed. ## Check logs for fatal errors -Check that the $[prodname] operator is running and that logs do not have any fatal errors. The deployment is named `calico-cloud-controller-manager` on a kubectl install and `calico-cloud` on a Helm install, so select it by label. The first line reports which version the operator installs. +Check that the $[prodname] operator is running and that logs do not have any fatal errors. ```bash -kubectl logs -n calico-cloud -l k8s-app=calico-cloud-updater -``` - -**Sample output** - -``` -2022-04-04T14:34:32.472Z INFO setup starting cc-operator {"ccOperatorVersion": "v23.0.2", "calicoCloudVersion": "v23.0.2"} +kubectl logs -n calico-cloud deployment/calico-cloud-controller-manager 2022-04-04T14:34:32.472Z INFO controller-runtime.metrics metrics server is starting to listen {"addr": "127.0.0.1:8080"} 2022-04-04T14:34:32.472Z INFO setup starting manager 2022-04-04T14:34:32.472Z INFO setup config {"ccBaseURL": "https://www.dev.calicocloud.io/api", "debug": false, "leader-elect": true} @@ -43,16 +37,6 @@ I0404 14:34:32.480870 1 leaderelection.go:253] successfully acquired lease <...> ``` -## Check installation errors - -**`spec.calicoCloudVersion ... does not match the Calico Cloud version installed by this operator`** - -Each operator installs one version of $[prodname] and rejects an `Installer` that asks for another. Set `spec.calicoCloudVersion` to the version the operator installs, remove it, or re-run the connect command for the version you want. - -**Operator pod in `ImagePullBackOff`** - -The operator image for that version is missing from your registry. Each version needs its own — see [Set up a private registry](setup-private-registry.mdx). - ## Check custom resources Verify that you have the **installer custom resource**, and that the values are appropriate for your environment. diff --git a/calico-cloud_versioned_docs/version-23-2/get-started/install-automated.mdx b/calico-cloud_versioned_docs/version-23-2/get-started/install-automated.mdx index 104f7a849e..b70dfeeae4 100644 --- a/calico-cloud_versioned_docs/version-23-2/get-started/install-automated.mdx +++ b/calico-cloud_versioned_docs/version-23-2/get-started/install-automated.mdx @@ -56,7 +56,7 @@ The following parameters are required for all Calico Cloud installations. | Parameter | Value | Example | Description | | -- | -- | -- | -- | | `installer.clusterName` | string | `cluster-name` | The name given to your managed cluster in Calico Cloud. | -| `installer.calicoCloudVersion` | string | `$[cloudUserVersion]` | The version of Calico Cloud you're installing. This also selects the operator image, which is tagged with that version. | +| `installer.calicoCloudVersion` | string | `$[cloudUserVersion]` | The version of Calico Cloud you're installing. | ```yaml title="Example from values.yaml with clusterName and calicoCloudVersion" @@ -75,10 +75,6 @@ If you're using a private registry, you must set the following parameters. | `installer.imagePath` | string | `path/to/directory` | The path to a directory in your private registry that contains images required to install Calico Cloud. | | `imagePullSecrets.name` | string | `secret-name` | The name of the image pull secret you will use to allow access from the `calico-cloud` namespace to your private registry. | -:::important -The operator image is pulled at the tag named by `installer.calicoCloudVersion`, so [mirror that version's operator image](setup-private-registry.mdx) first. With `installer.imagePath` unset, it is pulled from the `calico-cloud-public` path in your registry rather than `tigera`. -::: - ### Optional parameters for features The following parameters enable certain features in Calico Cloud. diff --git a/calico-cloud_versioned_docs/version-23-2/get-started/install-cluster.mdx b/calico-cloud_versioned_docs/version-23-2/get-started/install-cluster.mdx index 3be97ea0c7..cc6484e449 100644 --- a/calico-cloud_versioned_docs/version-23-2/get-started/install-cluster.mdx +++ b/calico-cloud_versioned_docs/version-23-2/get-started/install-cluster.mdx @@ -59,10 +59,6 @@ You can quickly connect a cluster to Calico Cloud by generating a unique kubectl Monitor the status under **Connection Status**. When the status changes to **Connected**, installation is complete and your cluster is connected to Calico Cloud. -:::note -`installer.calicoCloudVersion` also selects the operator image, and an operator rejects an `Installer` that asks for a different version. To change version, generate a new command rather than editing this value. -::: - ## Additional resources * [Calico Cloud troubleshooting checklist](checklist.mdx) diff --git a/calico-cloud_versioned_docs/version-23-2/get-started/install-private-registry.mdx b/calico-cloud_versioned_docs/version-23-2/get-started/install-private-registry.mdx index 987642087a..b0049bd78c 100644 --- a/calico-cloud_versioned_docs/version-23-2/get-started/install-private-registry.mdx +++ b/calico-cloud_versioned_docs/version-23-2/get-started/install-private-registry.mdx @@ -14,7 +14,7 @@ You can perform a Helm installation from images stored on a private registry. * You have at least one cluster that meets our [system requirements](system-requirements.mdx). * You have kubectl access to the cluster. * You have installed Helm 3.0 or later on your workstation. -* You have [added the Calico Cloud images to a private registry](setup-private-registry.mdx) for the version you are installing, including its operator image, and you have the following information about the registry: +* You have [added the Calico Cloud images to a private registry](setup-private-registry.mdx), and you have the following information about the registry: * Registry secret name :::note If your private registry requires credentials, create a `calico-cloud` namespace on your cluster. diff --git a/calico-cloud_versioned_docs/version-23-2/get-started/setup-private-registry.mdx b/calico-cloud_versioned_docs/version-23-2/get-started/setup-private-registry.mdx index 9e0b1b3591..054f945842 100644 --- a/calico-cloud_versioned_docs/version-23-2/get-started/setup-private-registry.mdx +++ b/calico-cloud_versioned_docs/version-23-2/get-started/setup-private-registry.mdx @@ -28,6 +28,7 @@ An **image path** is a directory in a registry that contains images required to **Required** +- [Helm CLI](https://helm.sh/docs/intro/install/) command - Use the [Crane command](https://github.com/google/go-containerregistry/blob/main/cmd/crane/README.md) to follow steps in this guide. (Other tools can be used, but commands be adjusted accordingly.) - Image registry - Must be private (accessible only on a private network or using log in credentials) @@ -49,8 +50,6 @@ Add the required $[prodname] images to a private registry. -`OPERATOR_IMAGE` is the $[prodname] operator, which is released per $[prodname] version and tagged with it; `IMAGES` is everything else. Mirror both for each version you plan to install. - ### Set up the private registry ```bash @@ -65,14 +64,12 @@ IMAGEPATH="" #### Image examples -| Original image | Image Registry | Image Path | Private registry image | -| ------------------------------------ | -------------- | ------------- | ----------------------------------------------------- | -| `quay.io/tigera/typha:v1.2.3` | `my.registry/` | | `my.registry/tigera/typha:v1.2.3` | -| `quay.io/tigera/typha:v1.2.3` | `my.registry/` | `custom-path` | `my.registry/custom-path/typha:v1.2.3` | -| `quay.io/tigera/cc-operator:v23.0.2` | `my.registry/` | | `my.registry/calico-cloud-public/cc-operator:v23.0.2` | -| `quay.io/tigera/cc-operator:v23.0.2` | `my.registry/` | `custom-path` | `my.registry/custom-path/cc-operator:v23.0.2` | - -The operator is the exception: with no image path set, it is pulled from the `calico-cloud-public` path in your registry rather than `tigera`. +| Original image | Image Registry | Image Path | Private registry image | +| ----------------------------------- | -------------- | ------------- | -------------------------------------------- | +| `quay.io/tigera/typha:v1.2.3` | `my.registry/` | | `my.registry/tigera/typha:v1.2.3` | +| `quay.io/tigera/typha:v1.2.3` | `my.registry/` | `custom-path` | `my.registry/custom-path/typha:v1.2.3` | +| `quay.io/tigera/cc-operator:v4.5.6` | `my.registry/` | | `my.registry/tigera/cc-operator:v4.5.6` | +| `quay.io/tigera/cc-operator:v4.5.6` | `my.registry/` | `custom-path` | `my.registry/custom-path/cc-operator:v4.5.6` | ### Copy images to your registry @@ -86,7 +83,6 @@ for image in ${IMAGES[@]}; do img_base=$(echo ${image} | sed "s#^.*/\([^/]*/[^/]*$\)#\1#") crane cp ${image} ${REGISTRY}${img_base} || break done -crane cp ${OPERATOR_IMAGE} ${REGISTRY}calico-cloud-public/${OPERATOR_IMAGE##*/} ``` @@ -97,7 +93,6 @@ for image in ${IMAGES[@]}; do img_base=$(echo ${image} | sed "s#^.*/##") crane cp ${image} ${REGISTRY}${IMAGEPATH}/${img_base} || break done -crane cp ${OPERATOR_IMAGE} ${REGISTRY}${IMAGEPATH}/${OPERATOR_IMAGE##*/} ``` diff --git a/calico-cloud_versioned_docs/version-23-2/get-started/upgrade-cluster.mdx b/calico-cloud_versioned_docs/version-23-2/get-started/upgrade-cluster.mdx index 7a79123963..4504383550 100644 --- a/calico-cloud_versioned_docs/version-23-2/get-started/upgrade-cluster.mdx +++ b/calico-cloud_versioned_docs/version-23-2/get-started/upgrade-cluster.mdx @@ -9,15 +9,11 @@ To upgrade a managed cluster to the latest version of $[prodname]: 1. From the web console, go to the **Managed Clusters** page. 1. If your organization uses multiple projects to group managed clusters, click the **Project** menu and select the project you want your cluster to be part of. 1. For the cluster you want to upgrade, select **Actions** > **Reinstall**. -1. In the **Reinstall Cluster** dialog, select a newer version of $[prodname] from the list, click **Reinstall**, and copy the generated command. +1. In the **Reinstall Cluster** dialog, select a newer version of $[prodname] from the list, click **Reinstall**, and copy the generated kubectl command. 1. From a terminal, paste and run the command. The cluster's status under **Connection Status** changes to **Disconnected: Installing**. When the upgrade is complete, the status changes to **Connected**. -:::important -If you install from a private registry, [mirror the new version's images](setup-private-registry.mdx), including its operator image, before you run the command. -::: - diff --git a/scripts/update-cloud-image-list.sh b/scripts/update-cloud-image-list.sh deleted file mode 100755 index 900fe9ed7b..0000000000 --- a/scripts/update-cloud-image-list.sh +++ /dev/null @@ -1,71 +0,0 @@ -#!/usr/bin/env bash -# Add a Calico Cloud version to the private-registry image list in -# src/___new___/data/ccImageLists.js. -# -# The list is keyed by Calico Cloud version and is shared by every docs tree, so it is updated once -# per release rather than once per tree. The new entry is labelled "(latest)" and the previous one -# loses the label. -# -# The cc-operator image is deliberately not fetched. It is released in lockstep with Calico Cloud -# -- one image per version, tagged with that version -- so VersionedCloudImageList derives it from -# the entry's key. The published image-list does not contain it. -set -eu - -ccVersion=${1:-} -manifestVersion=${2:-} -baseUrl=${BASE_URL:-https://installer.calicocloud.io} -list=src/___new___/data/ccImageLists.js - -function help() { - echo "This script requires 2 arguments: a Calico Cloud version, and the cloud-manifest version" - echo "that release installs from." - echo "For example: ./scripts/update-cloud-image-list.sh v24.0.0 v3.24.0-1.0-1" - exit 1 -} - -if [[ -z ${ccVersion} || -z ${manifestVersion} ]]; then - help -fi - -if [[ ! -f ${list} ]]; then - echo "Run this from the root of the docs repo: ${list} not found" - exit 1 -fi - -url="${baseUrl}/manifests/${manifestVersion}/image-list" -echo "Fetching ${url}" -images=$(curl -fsS "${url}") - -if [[ -z ${images} ]]; then - echo "No images returned by ${url}" - exit 1 -fi - -CC_VERSION="${ccVersion}" IMAGES="${images}" LIST="${list}" SOURCE_URL="${url}" node -e ' - const fs = require("fs"); - const { CC_VERSION, IMAGES, LIST, SOURCE_URL } = process.env; - let text = fs.readFileSync(LIST, "utf8"); - - if (new RegExp(`^ .${CC_VERSION.replace(/\./g, "\\.")}( \\(latest\\))?.:`, "m").test(text)) { - console.error(`${CC_VERSION} is already in ${LIST}`); - process.exit(1); - } - if (/cc-operator/.test(IMAGES)) { - console.error("NOTE: the image-list now contains cc-operator. It is added per version by"); - console.error(" VersionedCloudImageList, so check for a duplicate before committing."); - } - - // The previous newest entry is no longer the latest. - text = text.replace(/^ (.[^\n]+) \(latest\).:/m, " $1'"'"':"); - - const entry = ` // curl -0 ${SOURCE_URL}\n '"'"'${CC_VERSION} (latest)'"'"': \`${IMAGES}\`,\n`; - const start = "const ccImageLists = {\n"; - if (!text.startsWith(start)) { - console.error(`could not find the start of ccImageLists in ${LIST}`); - process.exit(1); - } - fs.writeFileSync(LIST, start + entry + text.slice(start.length)); -' - -echo "Added ${ccVersion} to ${list}" -echo "Check that quay.io/tigera/cc-operator:${ccVersion} is published before releasing the docs." diff --git a/src/___new___/components/VersionedCloudImageList/index.js b/src/___new___/components/VersionedCloudImageList/index.js index 9ed1e13564..0b3668fd75 100644 --- a/src/___new___/components/VersionedCloudImageList/index.js +++ b/src/___new___/components/VersionedCloudImageList/index.js @@ -48,8 +48,8 @@ const CodeBlockSelector = () => { title={`Images for Calico Cloud ${selectedVersion}`} language='bash' > - {`OPERATOR_IMAGE=${variables.cloudoperatorimage}:${operatorTag(selectedVersion)} -IMAGES=( + {`IMAGES=( +${variables.cloudoperatorimage}:${operatorTag(selectedVersion)} ${ccImageLists[selectedVersion]} )`} From fa33b870392932ec95ecf29d7f0d5c254a004cf7 Mon Sep 17 00:00:00 2001 From: Marcos Monteiro Date: Fri, 18 Sep 2026 13:26:06 -0700 Subject: [PATCH 8/8] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- src/___new___/components/VersionedCloudImageList/index.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/___new___/components/VersionedCloudImageList/index.js b/src/___new___/components/VersionedCloudImageList/index.js index 0b3668fd75..3c6634d849 100644 --- a/src/___new___/components/VersionedCloudImageList/index.js +++ b/src/___new___/components/VersionedCloudImageList/index.js @@ -4,9 +4,9 @@ import CodeBlock from '@theme/CodeBlock'; import variables from '../../../../calico-cloud/variables'; import ccImageLists from '../../data/ccImageLists'; -// cc-operator is released per Calico Cloud version and tagged with it, so the entry key is the -// operator tag. The newest entry is labelled "(latest)", which is not part of the tag. -const operatorTag = (version) => version.replace(/\s*\(latest\)$/, ''); +// ccImageLists keys are the Calico Cloud version labels shown in the selector (for example, "v23.0.2 (latest)"). +// cc-operator is tagged per Calico Cloud version, so derive the operator image tag by stripping the optional "(latest)" suffix. +const operatorTag = (versionLabel) => versionLabel.replace(/\s*\(latest\)\s*$/, '').trim(); const CodeBlockSelector = () => { const [selectedVersion, setSelectedVersion] = useState(Object.keys(ccImageLists)[0]);