diff --git a/calico_versioned_docs/version-3.33/_includes/components/HostEndpointsUpgrade.js b/calico_versioned_docs/version-3.33/_includes/components/HostEndpointsUpgrade.js deleted file mode 100644 index 9917435247..0000000000 --- a/calico_versioned_docs/version-3.33/_includes/components/HostEndpointsUpgrade.js +++ /dev/null @@ -1,84 +0,0 @@ -import React from 'react'; -import Admonition from '@theme/Admonition'; -import CodeBlock from '@theme/CodeBlock'; -import Heading from '@theme/Heading'; - -import { prodname, version } from '../../variables'; - -export default function HostEndpointsUpgrade(props) { - return ( - <> - - Host endpoints - - - If your cluster has host endpoints with interfaceName: * you must prepare your cluster before - upgrading. Failure to do so will result in an outage. - -

- In versions of {prodname} prior to v3.14, all-interfaces host endpoints (host endpoints with{' '} - interfaceName: *) only supported pre-DNAT policy. The default behavior of all-interfaces host - endpoints, in the absence of any policy, was to allow all traffic. -

-

- Beginning from v3.14, all-interfaces host endpoints support normal policy in addition to pre-DNAT policy. The - support for normal policy includes a change in default behavior for all-interfaces host endpoints: in the - absence of policy the default behavior is to drop traffic. This default behavior is consistent - with "named" host endpoints (which specify a named interface such as "eth0"); named host - endpoints drop traffic in the absence of policy. -

-

- Before upgrading to {version}, you must ensure that global network policies are in place that select existing - all-interfaces host endpoints and explicitly allow existing traffic flows. As a starting point, you can create - an allow-all policy that selects existing all-interfaces host endpoints. First, we'll add a label to the - existing host endpoints. Get a list of the nodes that have an all-interfaces host endpoint: -

- calicoctl get hep -owide | grep | awk '"{'print $1'}"' -

- With the names of the all-interfaces host endpoints, we can label each host endpoint with a new label (for - example, host-endpoint-upgrade: ""): -

- - calicoctl get hep -owide | grep '*' | awk '"{'print $1'}"' \ -
- {props.orch === 'OpenShift' - ? '| xargs -I {} oc exec -i -n kube-system calicoctl -- calicoctl label hostendpoint {} host-endpoint-upgrade=' - : '| xargs -I {} kubectl exec -i -n kube-system calicoctl -- calicoctl label hostendpoint {} host-endpoint-upgrade= '} -
-

- Now that the nodes with an all-interfaces host endpoint are labeled with host-endpoint-upgrade, - we can create a policy to log and allow all traffic going into or out of the host endpoints temporarily: -

- - {`cat > allow-all-upgrade.yaml < -

Apply the policy:

- calicoctl apply -f - {'<'} allow-all-upgrade.yaml -

- After applying this policy, all-interfaces host endpoints will log and allow all traffic through them. This - policy will allow all traffic not accounted for by other policies. After upgrading, please review syslog logs - for traffic going through the host endpoints and update the policy as needed to secure traffic to the host - endpoints. -

- - ); -} diff --git a/calico_versioned_docs/version-3.33/_includes/partials/_upgrade-supported-versions.mdx b/calico_versioned_docs/version-3.33/_includes/partials/_upgrade-supported-versions.mdx new file mode 100644 index 0000000000..bbd4a320ea --- /dev/null +++ b/calico_versioned_docs/version-3.33/_includes/partials/_upgrade-supported-versions.mdx @@ -0,0 +1 @@ +This page covers upgrading to $[version] from the two previous $[prodname] releases. diff --git a/calico_versioned_docs/version-3.33/operations/upgrading/kubernetes-upgrade.mdx b/calico_versioned_docs/version-3.33/operations/upgrading/kubernetes-upgrade.mdx index 03c9fafcf1..11e19caed6 100644 --- a/calico_versioned_docs/version-3.33/operations/upgrading/kubernetes-upgrade.mdx +++ b/calico_versioned_docs/version-3.33/operations/upgrading/kubernetes-upgrade.mdx @@ -1,7 +1,9 @@ --- -description: Upgrade Calico Open Source on Kubernetes from v3.15 or later for Helm, operator-managed, and manifest-based installs on both Kubernetes API and etcd datastores. +description: Upgrade Calico Open Source on Kubernetes for Helm, operator-managed, and manifest-based installs on both Kubernetes API and etcd datastores. --- +import UpgradeSupportedVersions from '../../_includes/partials/_upgrade-supported-versions.mdx'; + import AutoHostendpointsMigrate from '@site/calico_versioned_docs/version-3.33/_includes/components/AutoHostendpointsMigrate'; # Upgrade Calico on Kubernetes @@ -14,8 +16,11 @@ Upgrading does not change your cluster's CRD mode. A cluster using the aggregati ::: -This page describes how to upgrade to $[version] from $[prodname] v3.15 or later. The -procedure varies by datastore type and install method. +Before you start, review the [upgrade notes](upgrade-notes.mdx) for changes in each release that need your attention. + + + +The procedure varies by datastore type and install method. If you are using $[prodname] in etcd mode on a Kubernetes cluster, we recommend upgrading to the Kubernetes API datastore [as discussed here](../datastore-migration.mdx). @@ -36,18 +41,6 @@ This may result in unexpected behavior and data. ::: -## Upgrade OwnerReferences - -If you do not use OwnerReferences on resources in the projectcalico.org/v3 API group, you can skip this section. - -Starting in $[prodname] v3.28, a change in the way UIDs are generated for projectcalico.org/v3 resources requires that you update any OwnerReferences -that refer to projectcalico.org/v3 resources as an owner. After upgrade, the UID for all projectcalico.org/v3 resources will be changed, resulting in any -owned resources being garbage collected by Kubernetes. - -1. Remove any OwnerReferences from resources in your cluster that have `apiGroup: projectcalico.org/v3`. -1. Perform the upgrade normally. -1. Add new OwnerReferences to your resources referencing the new UID. - ## Upgrading an installation that was installed using Helm The `tigera-operator` chart does not contain the $[prodname] CRDs, since Helm does not upgrade CRDs on `helm upgrade`. There are two ways to get the $[version] CRDs into your cluster: @@ -184,9 +177,6 @@ To apply the CRDs yourself: 1. If you have [enable application layer policy](../../network-policy/istio/app-layer-policy.mdx), follow [the instructions below](#upgrading-if-you-have-application-layer-policy-enabled) to complete your upgrade. Skip this if you are not using Istio with $[prodname]. -1. If you were upgrading from a version of Calico prior to v3.14 and followed the pre-upgrade steps for host endpoints above, review traffic logs from the temporary policy, - add any global network policies needed to allow traffic, and delete the temporary network policy **allow-all-upgrade**. - 1. Congratulations! You have upgraded to $[prodname] $[version]. ## Upgrading an installation that uses an etcd datastore @@ -254,9 +244,6 @@ To apply the CRDs yourself: 1. If you have [enabled application layer policy](../../network-policy/istio/app-layer-policy.mdx), follow [the instructions below](#upgrading-if-you-have-application-layer-policy-enabled) to complete your upgrade. Skip this if you are not using Istio with $[prodname]. -1. If you were upgrading from a version of Calico prior to v3.14 and followed the pre-upgrade steps for host endpoints above, review traffic logs from the temporary policy, - add any global network policies needed to allow traffic, and delete the temporary network policy **allow-all-upgrade**. - 1. Congratulations! You have upgraded to $[prodname] $[version]. ## Upgrading if you have Application Layer Policy enabled diff --git a/calico_versioned_docs/version-3.33/operations/upgrading/openshift-upgrade.mdx b/calico_versioned_docs/version-3.33/operations/upgrading/openshift-upgrade.mdx index b063a4a74f..b3b63488c1 100644 --- a/calico_versioned_docs/version-3.33/operations/upgrading/openshift-upgrade.mdx +++ b/calico_versioned_docs/version-3.33/operations/upgrading/openshift-upgrade.mdx @@ -1,7 +1,9 @@ --- -description: Upgrade Calico Open Source on OpenShift 4 by reapplying manifests and updating OwnerReferences for projectcalico.org/v3 resources. +description: Upgrade Calico Open Source on OpenShift 4 by reapplying the manifests for the new release. --- +import UpgradeSupportedVersions from '../../_includes/partials/_upgrade-supported-versions.mdx'; + import AutoHostendpointsMigrate from '@site/calico_versioned_docs/version-3.33/_includes/components/AutoHostendpointsMigrate'; import InstallOpenShiftManifests from '@site/calico_versioned_docs/version-3.33/_includes/components/InstallOpenShiftManifests'; @@ -9,19 +11,11 @@ import InstallOpenShiftManifests from '@site/calico_versioned_docs/version-3.33/ ## About upgrading $[prodname] -This page describes how to upgrade to $[version] for OpenShift 4 from an existing $[prodname] cluster. - -## Upgrade OwnerReferences +Before you start, review the [upgrade notes](upgrade-notes.mdx) for changes in each release that need your attention. -If you do not use OwnerReferences on resources in the projectcalico.org/v3 API group, you can skip this section. + -Starting in Calico v3.28, a change in the way UIDs are generated for projectcalico.org/v3 resources requires that you update any OwnerReferences -that refer to projectcalico.org/v3 resources as an owner. After upgrade, the UID for all projectcalico.org/v3 resources will be changed, resulting in any -owned resources being garbage collected by Kubernetes. - -1. Remove any OwnerReferences from resources in your cluster that have `apiGroup: projectcalico.org/v3`. -1. Perform the upgrade normally. -1. Add new OwnerReferences to your resources referencing the new UID. +It applies to an existing $[prodname] cluster on OpenShift 4. ## Upgrading Calico on OpenShift 4 @@ -53,7 +47,4 @@ You can now monitor the upgrade progress with the following command: watch oc get tigerastatus ``` -If you were upgrading from a version of Calico prior to v3.14 and followed the pre-upgrade steps for host endpoints above, review traffic logs from the temporary policy, -add any global network policies needed to allow traffic, and delete the temporary network policy **allow-all-upgrade**. - diff --git a/calico_versioned_docs/version-3.33/operations/upgrading/openstack-upgrade.mdx b/calico_versioned_docs/version-3.33/operations/upgrading/openstack-upgrade.mdx index 91e306dd17..98b299a75d 100644 --- a/calico_versioned_docs/version-3.33/operations/upgrading/openstack-upgrade.mdx +++ b/calico_versioned_docs/version-3.33/operations/upgrading/openstack-upgrade.mdx @@ -1,13 +1,18 @@ --- -description: Upgrade Calico Open Source on OpenStack from v3.0 or later by updating system packages on CentOS or Ubuntu compute and control nodes. +description: Upgrade Calico Open Source on OpenStack by updating system packages on CentOS or Ubuntu compute and control nodes. --- +import UpgradeSupportedVersions from '../../_includes/partials/_upgrade-supported-versions.mdx'; + # Upgrade Calico on OpenStack ## $[prodname] package update -This page describes how to upgrade to $[version] from $[prodname] v3.0 or later. The procedure -varies by Linux distribution. +Before you start, review the [upgrade notes](upgrade-notes.mdx) for changes in each release that need your attention. + + + +The procedure varies by Linux distribution. - [Upgrading an OpenStack cluster based on CentOS](#upgrading-an-openstack-cluster-based-on-centos) @@ -33,9 +38,8 @@ This may result in unexpected behavior and data. sudo sed -i 's/calico-X.X/calico-Y.Y/g' /etc/yum.repos.d/calico.repo ``` - Replace `X.X` in the above command with the version you're upgrading from (must be v3.0 or later). - Replace `Y.Y` with the version of the release you're upgrading to. Example: if you are upgrading from v3.1 - to v3.5, replace `X.X` with `3.1` and replace `Y.Y` with `3.5`. + Replace `X.X` with the version you're upgrading from and `Y.Y` with the version you're upgrading to, + each written as major and minor numbers only, with no leading `v`. 1. On all compute nodes, update packages: @@ -120,8 +124,8 @@ This may result in unexpected behavior and data. EOF ``` - Replace `X_X` and `X.X` with the version you're upgrading to. Example: if you're upgrading to v3.5, replace `X_X` with - `3_5` and replace `X.X` with `3.5`. Also replace `trusty` with the code name of your Ubuntu version. + Replace `X_X` and `X.X` with the version you're upgrading to, with no leading `v`, written with an + underscore and a dot respectively. Also replace `trusty` with the code name of your Ubuntu version. 1. On all compute nodes, update packages: diff --git a/calico_versioned_docs/version-3.33/operations/upgrading/upgrade-notes.mdx b/calico_versioned_docs/version-3.33/operations/upgrading/upgrade-notes.mdx new file mode 100644 index 0000000000..897e72749e --- /dev/null +++ b/calico_versioned_docs/version-3.33/operations/upgrading/upgrade-notes.mdx @@ -0,0 +1,227 @@ +--- +description: Changes in each Calico Open Source release that need your attention before or during an upgrade, with the action to take for each. +title: Upgrade notes +--- + +# Upgrade notes + +Review this page before you upgrade. +It lists the changes in each release that alter behavior you may depend on, and says what to do about each one. +Each note applies to every upgrade to $[version] unless it says otherwise. + +Each note says who it affects, what changes, and what you need to do. +Where a note applies only to some upgrade paths, it says so. + +{/* 3.33 · calico#12225 */} + +## Calico ships as a single image + +This affects you if you mirror $[prodname] images into a private registry, pin image names or digests, or scan specific images. + +Most components now ship inside one `calico/calico` image. +The images it replaces are not published for 3.33 at all, so a mirror or a pinned reference to any of them fails to pull after the upgrade. +Fourteen images are no longer published: `calico/typha`, `calico/cni`, `calico/ctl`, `calico/apiserver`, `calico/kube-controllers`, `calico/goldmane`, `calico/dikastes`, `calico/csi`, `calico/node-driver-registrar`, `calico/pod2daemon-flexvol`, `calico/key-cert-provisioner`, `calico/flannel-migration-controller`, `calico/whisker-backend`, and `flexvol`. +`calico/node`, `calico/whisker`, the Windows images and the Envoy images are still published separately. + +1. **Before you upgrade**, mirror `calico/calico` into your registry. +2. Update any image pins, digests, or scanner configuration that name the replaced images. +3. Upgrade $[prodname]. + +{/* 3.33 · calico#12250 */} + +## Limits on policy rules and selectors + +This affects you if you generate $[prodname] network policy programmatically, or have policies with very large rule lists, address lists, or selectors. + +$[prodname] network policy types now declare size limits in their CRD schemas, which the Kubernetes API server enforces on every write: + +| Field | Limit | +| --- | --- | +| Ingress rules, egress rules | 1024 each | +| `selector`, `notSelector`, `namespaceSelector`, `serviceAccountSelector` | 1024 characters | +| `nets`, `notNets` | 256 entries per rule | +| `ports`, `notPorts` | 50 entries per rule | +| HTTP `methods`, `paths` | 20 entries per rule | + +Policies already stored in the datastore keep working, and an update that does not touch an over-limit field is still accepted, because Kubernetes ratchets CRD validation. +What fails is creating a policy over a limit, or updating the field that exceeds one. +These limits live in the CRDs, so they do not apply on the etcdv3 datastore. + +1. **Before you upgrade**, check whether any existing policy exceeds a limit, and whether the tooling that generates your policy can produce one that does. +2. Split any policy that exceeds a limit, or narrow the field that does. +3. Upgrade $[prodname]. + +{/* 3.33 */} + +## Calico Ingress Gateway proxies move namespace + +:::warning[Breaking change] + +Gateway proxies move namespace on upgrade, and merged gateways are no longer supported. + +::: + +This affects you if you use $[prodname] Ingress Gateway. + +Each gateway's proxy now runs in the same namespace as its `Gateway`, and the controller moves to `calico-system`. +Existing proxies move out of the `tigera-gateway` namespace, so anything pinned to `tigera-gateway` — network policy, monitoring, and external DNS — stops matching them. +Merged gateways (`mergeGateways: true`) are no longer supported, so each gateway gets its own load balancer. + +1. **Before you upgrade**, if you run a global default deny policy, create a network policy in each Gateway's namespace that allows the proxy pods, so they can start as soon as they move. For the policy, see [Create an ingress gateway](../../networking/ingress-gateway/create-ingress-gateway.mdx). +2. Upgrade $[prodname]. +3. Re-point monitoring and external DNS from `tigera-gateway` to each Gateway's namespace. If you used merged gateways, plan for one load balancer, DNS record, and certificate per gateway. + +{/* 3.33 · calico#14049 */} + +## Calico Ingress Gateway moves to Gateway API v1.6 + +This affects you if you use $[prodname] Ingress Gateway. + +The bundled Envoy Gateway moves to v1.9.1, which takes the bundled Gateway API CRDs from v1.5.1 to v1.6.1. +Gateway API v1.6 removes `sessionPersistence.idleTimeout` from `HTTPRoute`, and Envoy Gateway v1.9 rejects an empty `clientIPDetection` in `ClientTrafficPolicy`. +A manifest using either is rejected once the CRDs are upgraded. + +1. **Before you upgrade**, remove `sessionPersistence.idleTimeout` from any `HTTPRoute`, and any empty `clientIPDetection` from a `ClientTrafficPolicy`. + +{/* 3.33 · calico#12128 */} + +## eBPF data plane requires kernel 5.10 or later + +This affects you if you run the eBPF data plane on nodes with a kernel earlier than 5.10, or a kernel built without BTF and CO-RE support. +Red Hat 8.4 with kernel 4.18.0-305 or above is supported, because Red Hat backported the required features to that build. + +The runtime fallback paths for older kernels are gone. +Instead of degrading, $[prodname] now reports a clear health message and does not program the data plane on an unsupported node. + +1. **Before you upgrade**, check every node running the eBPF data plane with `uname -r`, and confirm BTF support with `ls /sys/kernel/btf/vmlinux`. +2. Upgrade nodes that are too old, or move them to the standard data plane. +3. Upgrade $[prodname]. + +Some kernels inside the supported range have known problems in this release. Check the known issues in the [release notes](../../release-notes/index.mdx) before you plan the upgrade. + +{/* 3.33 · calico#13576 */} + +## eBPF programs attach through netkit by default + +This affects you if you run the eBPF data plane and may need to roll back to 3.32 or earlier. + +`BPFAttachType` gains a `Netkit` value, which is now the default. +Felix attaches BPF programs through the netkit API on workload netkit devices, and through TCX elsewhere. +A release before 3.33 does not understand netkit devices, so rolling back without preparing first leaves those devices unmanaged. + +1. Upgrade $[prodname]. +2. **Before rolling back** to a release without netkit support, set `BPFAttachType` to `TCX` or `TC` in your `FelixConfiguration`, so Felix drives the existing netkit devices with that mechanism instead. + +{/* 3.33 · calico#11919 */} + +## eBPF overlay traffic now uses the node's main IP + +This affects you if you run the eBPF data plane with VXLAN or IPIP, and have policy or firewall rules that match the tunnel device address. + +VXLAN and IPIP devices no longer carry their own IP. +When a node talks to a pod over the overlay it now uses the host's main device address, the one Kubernetes reports as the node's internal IP. +Any host endpoint policy, global network policy, or external firewall rule written against the tunnel address stops matching. + +1. **Before you upgrade**, find any rule that matches a tunnel device address and rewrite it against the node's internal IP. +2. To keep the old behavior instead, set `BPFOverlayIPOnDevice` to `true` in your `FelixConfiguration`. + +{/* 3.33 · calico#13352 */} + +## Default CNI configuration requires a newer container runtime + +This affects you if any node runs containerd earlier than v1.6, or CRI-O earlier than v1.24. + +The default CNI configuration now declares `cniVersion` 1.0.0, up from 0.3.1. +Older runtimes do not understand that version, so CNI ADD fails and pods cannot start on those nodes. + +1. **Before you upgrade**, check the container runtime version on every node. +2. Upgrade any node below containerd v1.6 or CRI-O v1.24. + +{/* 3.33 · calico#13953 */} + +## Overlapping IP pools are rejected + +This affects you if any two of your IP pools have overlapping CIDRs. + +Creating or updating an IP pool is now rejected when its CIDR overlaps an existing pool. +Pools already stored keep working, but you cannot edit one that overlaps another until the overlap is resolved. + +1. **Before you upgrade**, check your pools for overlapping CIDRs if you expect to edit them afterwards. + +{/* 3.33 · calico#13072 */} + +## Felix metrics endpoint no longer requires client certificates by default + +This affects you if you scrape the Felix Prometheus metrics endpoint and have never set `prometheusMetricsClientAuth`. + +The default changes from `RequireAndVerifyClientCert` to `NoClientCert`. +Nothing fails, and no scrape breaks. +The endpoint simply stops requiring a client certificate, so a protection you had by default is gone after the upgrade. + +1. **Before you upgrade**, if you rely on that protection, set `prometheusMetricsClientAuth: RequireAndVerifyClientCert` explicitly in your `FelixConfiguration`. + +{/* 3.33 · calico#12883 */} + +## FIPS mode is removed + +This affects you if your `Installation` sets `fipsMode: Enabled`, which is how an operator-managed cluster runs the `-fips` images. + +$[prodname] no longer publishes `-fips` tagged images or boringcrypto binaries, and FIPS mode was deprecated in 3.30. +The `fipsMode` field still exists on the Installation API, but it is deprecated, and leaving it set to `Enabled` marks the installation degraded after the upgrade. + +1. **Before you upgrade**, remove `fipsMode` from your `Installation`, or set it to `Disabled`. +2. If you pin image tags anywhere, move off the `-fips` variants. + +{/* 3.33 */} + +## New installs default to native v3 CRDs + +No action is required. This note is here because the default changed, not because an upgrade changes your cluster. + +An upgrade never switches an existing cluster between the aggregation API server and native v3 CRDs. +The operator selects the mode from the CRDs already present. +What changed is the default for a brand new install, which is now v3 CRD mode. +On Kubernetes 1.35 that mode also needs the `MutatingAdmissionPolicy` feature gate enabled on the API server, because the beta API exists there but is not on by default. +From 1.36 the feature is generally available and enabled for you. + +1. Upgrade $[prodname]. Your cluster keeps the mechanism it already uses. +2. To move an existing cluster onto native v3 CRDs deliberately, follow [Migrate from API server to native CRDs](../crd-migration.mdx). Plan a maintenance window: new pod scheduling and policy changes are blocked until the migration completes, and IPAM allocations are blocked during its final phase. + +{/* 3.33 · calico#12658 */} + +## OpenStack no longer resyncs on a timer + +This affects you if you run $[prodname] for OpenStack and relied on the periodic resync to recover from drift. + +The periodic resync is gone. +`resync_interval_secs` and `resync_max_interval_secs` are now no-ops, retained only so that an existing `neutron.conf` does not break. +The driver resyncs once when the Neutron server starts, and on demand after that. + +1. Upgrade $[prodname]. +2. Remove `resync_interval_secs` and `resync_max_interval_secs` from `neutron.conf` at your convenience. +3. If you install from packages, install the `calico-resync` package on each control node. The command ships separately from `calico-control`. +4. Run `calico-resync` when you need an immediate reconciliation. To drive reconciliation entirely by hand, set `startup_resync = never`. See [Resync between Neutron and etcd](../../networking/openstack/resync.mdx). + +{/* 3.32 */} + +## AdminNetworkPolicy and BaselineAdminNetworkPolicy are no longer enforced + +This affects you if you are upgrading from 3.31 and have `AdminNetworkPolicy` or `BaselineAdminNetworkPolicy` resources. If you are already on 3.32 this has happened. + +3.32 removed support for both in favor of `ClusterNetworkPolicy`. +$[prodname] does not enforce them from 3.32 onward, so they stop taking effect silently: the resources remain in the cluster and nothing reports an error. + +1. **Before you upgrade**, replace each `AdminNetworkPolicy` and `BaselineAdminNetworkPolicy` with an equivalent `ClusterNetworkPolicy`, or remove it. + +{/* 3.32 */} + +## OpenStack policy names change in the etcd datastore + +This affects you if you are upgrading from 3.31 and run $[prodname] for OpenStack on the etcd datastore. If you are already on 3.32 this has happened. + +In 3.32 the naming convention for stored policies changed: policies in the default tier are stored under their plain name, where 3.29.4 through 3.31.x stored them under a tier-prefixed name. +Kubernetes clusters migrate this automatically through kube-controllers. +OpenStack clusters do not run kube-controllers, so the migration has to be run once, by hand. + +1. Upgrade $[prodname]. +2. Run the one-time migration described in [Migrating policy data](openstack-upgrade.mdx#migrating-policy-data-when-upgrading-from-earlier-than-v332). diff --git a/calico_versioned_docs/version-3.33/release-notes/index.mdx b/calico_versioned_docs/version-3.33/release-notes/index.mdx index 157a94a388..09d7c447eb 100644 --- a/calico_versioned_docs/version-3.33/release-notes/index.mdx +++ b/calico_versioned_docs/version-3.33/release-notes/index.mdx @@ -268,47 +268,9 @@ You should consider migrating away from a deprecated feature before it is remove ## Upgrade notes -### Calico Ingress Gateway +3.33 changes several things that may need action before or during an upgrade, including the move to a single `calico/calico` image, new size limits on policy rules and selectors, and a namespace move for Calico Ingress Gateway proxies. -:::warning[Breaking change] - -Gateway proxies move namespace on upgrade, and merged gateways are no longer supported. - -::: - -Calico Ingress Gateway now runs each gateway's proxy in the same namespace as its `Gateway`, and the controller moves to `calico-system`. -Existing proxies move out of the `tigera-gateway` namespace into each Gateway's namespace, so anything pinned to `tigera-gateway` — network policy, monitoring, and external DNS — must move with them. -Merged gateways (`mergeGateways: true`) are no longer supported, so each gateway gets its own load balancer. - -1. **Before you upgrade**, if you run a global default deny policy, create a network policy in each Gateway's namespace that allows the proxy pods, so they can start as soon as they move. For the policy, see [Create an ingress gateway](../networking/ingress-gateway/create-ingress-gateway.mdx). -2. Upgrade $[prodname]. -3. Re-point monitoring and external DNS from `tigera-gateway` to each Gateway's namespace. If you used merged gateways, plan for one load balancer, DNS record, and certificate per gateway. - -### Native v3 CRDs by default - -This is not a breaking change. An upgrade leaves an existing cluster on the mechanism it already uses. - -New installs now default to v3 CRD mode, where `projectcalico.org/v3` resources are served directly by CRDs with no aggregation API server. -The default applies to new clusters only, so upgrading does not move you to it. - -1. Upgrade $[prodname]. Nothing is required to keep serving the API the way you do today. -2. When you next install a new cluster, check that it runs Kubernetes 1.32 or later, which v3 CRD mode requires. To put a new cluster on the aggregation API server instead, apply the v1 CRDs before you install the operator. -3. To move an existing cluster onto native v3 CRDs, follow [Migrate from API server to native CRDs](../operations/crd-migration.mdx). The datastore is briefly locked during the migration. - -For more information, see [Native v3 CRDs](../operations/native-v3-crds.mdx). - -### OpenStack resync - -This is not a breaking change. An existing `neutron.conf` keeps working untouched. - -The periodic resync is gone. -`resync_interval_secs` and `resync_max_interval_secs` are now no-ops, retained only so that an existing configuration does not break. - -1. Upgrade $[prodname]. The driver resyncs once when the Neutron server restarts. -2. Remove `resync_interval_secs` and `resync_max_interval_secs` from `neutron.conf` at your convenience. -3. If you relied on the periodic resync to recover from drift, run `calico-resync` when you need an immediate reconciliation. To resync from somewhere other than the Neutron server's own startup, set `startup_resync = never` and drive it entirely from the command. - -For more information, see [Resync between Neutron and etcd](../networking/openstack/resync.mdx). +Review the [upgrade notes](../operations/upgrading/upgrade-notes.mdx) before you upgrade. ## Release details @@ -320,7 +282,7 @@ Calico Open Source release 3.33.0 is now generally available. #### Updating -To update a previous version of Calico, see [our upgrade guides](../operations/upgrading/index.mdx). +Review the [upgrade notes](../operations/upgrading/upgrade-notes.mdx), then follow [our upgrade guides](../operations/upgrading/index.mdx). {/* ### Calico Open Source 3.33.1 bug fix release diff --git a/calico_versioned_sidebars/version-3.33-sidebars.json b/calico_versioned_sidebars/version-3.33-sidebars.json index 2646bf649e..46d4df79bf 100644 --- a/calico_versioned_sidebars/version-3.33-sidebars.json +++ b/calico_versioned_sidebars/version-3.33-sidebars.json @@ -173,6 +173,7 @@ "id": "operations/upgrading/index" }, "items": [ + "operations/upgrading/upgrade-notes", "operations/upgrading/kubernetes-upgrade", "operations/upgrading/openshift-upgrade", "operations/upgrading/openstack-upgrade"