Chapter 3. Updating OpenShift Service Mesh in ambient mode
Updating Red Hat OpenShift Service Mesh in ambient mode follows the same pattern as sidecar mode. You can check the specific Istio update in the "Updating OpenShift Service Mesh" documentation. In addition to the control plane, update other resources, such as waypoint proxies, to ensure a smooth transition between control plane revisions. After updating, verify that Layer 7 (L7) features continue to function correctly.
3.1. Updating waypoint proxies with InPlace strategy in ambient mode Copy linkLink copied to clipboard!
During an InPlace update in ambient mode, waypoint proxies are going to be updated to the latest control plane version without restarting application workloads because they are deployed and managed as separate Gateway API resources that scale and upgrade independently.
Prerequisites
-
You have updated the Istio control plane with
InPlaceupdate strategy.
Procedure
Confirm that the waypoint proxy was updated proxy version by running the following command:
istioctl proxy-status | grep waypoint
$ istioctl proxy-status | grep waypointCopy to Clipboard Copied! Toggle word wrap Toggle overflow You should see an output similar to the following example:
waypoint-5d9c8b7f9-abc12.bookinfo SYNCED SYNCED SYNCED SYNCED istiod-6cf8d4f9cb-wm7x6.istio-system 1.27.3
waypoint-5d9c8b7f9-abc12.bookinfo SYNCED SYNCED SYNCED SYNCED istiod-6cf8d4f9cb-wm7x6.istio-system 1.27.3Copy to Clipboard Copied! Toggle word wrap Toggle overflow You can run the command to query the Istio control plane and verify that the waypoint proxy connects and synchronizes. The output lists the waypoint proxy name and namespace, the synchronization status for each configuration type, the connected
istiodpod, and the Istio version of the running proxy. Columns showingSYNCEDconfirm that the waypoint proxy is successfully receiving configuration from the control plane.
3.2. Updating waypoint proxies with RevisionBased strategy in ambient mode Copy linkLink copied to clipboard!
In ambient mode, you can update waypoint proxies by using the RevisionBased update strategy. During the migration period, the proxies remain compatible with many control plane versions and automatically connect to the active control plane revision.
Keep waypoint proxies within one minor version of the control plane (same version or n–1). This recommendation aligns with the support policy of Istio, which states that data plane components must not run ahead of the control plane version. Apply the same versioning guidance to Istio Container Network Interface (CNI) and Ztunnel components. For more details, see the "Istio Supported Releases" documentation.
Prerequisites
-
You have updated the Istio control plane with
RevisionBasedupdate strategy.
Procedure
After the new Istio control plane revision is ready, verify waypoint proxy pods are running by entering the following command:
oc get pods -n bookinfo -l gateway.networking.k8s.io/gateway-name=waypoint
$ oc get pods -n bookinfo -l gateway.networking.k8s.io/gateway-name=waypointCopy to Clipboard Copied! Toggle word wrap Toggle overflow You should see an output similar to the following example:
NAME READY STATUS RESTARTS AGE waypoint-5d9c8b7f9-abc12 1/1 Running 0 5m
NAME READY STATUS RESTARTS AGE waypoint-5d9c8b7f9-abc12 1/1 Running 0 5mCopy to Clipboard Copied! Toggle word wrap Toggle overflow Confirm that the waypoint proxy is updated to the latest version by running the following command:
istioctl proxy-status | grep waypoint
$ istioctl proxy-status | grep waypointCopy to Clipboard Copied! Toggle word wrap Toggle overflow You should see an output similar to the following example:
waypoint-5d9c8b7f9-abc12.bookinfo SYNCED SYNCED SYNCED SYNCED istiod-1-27-3-7b9f8c5d6-xyz78.istio-system 1.27.3
waypoint-5d9c8b7f9-abc12.bookinfo SYNCED SYNCED SYNCED SYNCED istiod-1-27-3-7b9f8c5d6-xyz78.istio-system 1.27.3Copy to Clipboard Copied! Toggle word wrap Toggle overflow You can run the command to query the Istio control plane and verify that the waypoint proxy is connected to the new revision. The output lists the revision-specific
istiodpod (for example,istiod-1-27-3) and shows that the waypoint proxy is running the updated version, 1.27.3. The revision-specific name in theISTIODcolumn confirms that the waypoint proxy has successfully migrated to the new control plane revision.
3.3. Verifying Layer 7 (L7) features with traffic routing Copy linkLink copied to clipboard!
After updating the waypoint proxies, verify that Layer 7 (L7) features function as expected. If you use traffic routing rules such as HTTPRoute, confirm that they continue to enforce the intended behavior.
Prerequisites
- You have updated the waypoint proxies.
-
You have deployed the
bookinfoapplication. -
You have created an
HTTPRouteresource.
Procedure
Optional: Create the
HTTPRouteresource if it does not already exist by running the following command:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Verify that the
HTTPRouterules distribute traffic correctly by running the following command:Copy to Clipboard Copied! Toggle word wrap Toggle overflow The output should reflect the traffic distribution defined in your
HTTPRoute. For example, with a90/10weight split betweenreviews-v1andreviews-v2, you should observe about nine requests routed toreviews-v1and one request routed toreviews-v2. The exact ratio can vary slightly due to load-balancing behavior, but should closely match the configured weights over multiple test runs.
3.4. Verifying Layer 7 (L7) features with authorization policies Copy linkLink copied to clipboard!
After updating the waypoint proxies, verify that the Layer 7 (L7) authorization policies are enforced correctly. In this example, the AuthorizationPolicy resource named productpage-waypoint allows only requests from the default/sa/curl service account to send GET requests to the productpage service.
Prerequisites
- You have updated the waypoint proxies.
-
You have created an application pod using the described service account in the
AuthorizationPolicyresource. -
You have created an
AuthorizationPolicyresource.
Procedure
Optional: Create the
AuthorizationPolicyresource if it does not already exist by running the following command:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Verify that services not included in the allow list, such as the ratings service, are denied access by running the following command:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow The request will be denied because the
ratingsservice is not included in the authorization policy’sallowlist. Only thecurlpod using thedefault/curlservice account can accessproductpageservice.Verify that the
curlservice can access theproductpageservice withGETrequests by running the following command:Copy to Clipboard Copied! Toggle word wrap Toggle overflow The request will succeed because the
curlservice meets the authorization policy rules. It uses thecluster.local/ns/default/sa/curlprincipal and performs aGEToperation, both allowed by the policy. The successful response containing the page title confirms that the waypoint proxy correctly enforces L7 authorization rules and allows valid traffic.
3.5. Updating cross-namespace waypoint Copy linkLink copied to clipboard!
If you are using cross-namespace waypoints, verify that the istio.io/use-waypoint-namespace and istio.io/use-waypoint labels are correctly applied to the relevant namespaces before updating.
Verify the namespace with any of the waypoint labels by running the following command:
oc get ns bookinfo --show-labels | grep waypoint
$ oc get ns bookinfo --show-labels | grep waypointCopy to Clipboard Copied! Toggle word wrap Toggle overflow If there is no namespace with the label or if the label is wrong, re-apply the labels:
Apply the
istio.io/use-waypoint-namespaceby running the following command:oc label ns bookinfo istio.io/use-waypoint-namespace=foo --overwrite
$ oc label ns bookinfo istio.io/use-waypoint-namespace=foo --overwriteCopy to Clipboard Copied! Toggle word wrap Toggle overflow Apply the
istio.io/use-waypointby running the following command:oc label ns bookinfo istio.io/use-waypoint=waypoint-foo --overwrite
$ oc label ns bookinfo istio.io/use-waypoint=waypoint-foo --overwriteCopy to Clipboard Copied! Toggle word wrap Toggle overflow