Gloo Operator
Use the Gloo Operator to upgrade your managed ambient service meshes.
By using the Gloo Operator, you can perform safe in-place upgrades of your manage ambient service meshes, without the hassle of upgrading multiple Helm charts for each component.
Considerations
Before you upgrade your ambient components, review the following limitations and recommendations.
Revision and canary upgrade limitations
The upgrade guides in this documentation show you how to perform in-place upgrades for your Istio components, which is the recommended upgrade strategy.
Version and license requirements
Multicluster setups:
- In Gloo Mesh (OSS APIs) version 2.7 and later, multicluster setups require the Solo distribution of Istio version 1.24.3 or later (
1.24.3-solo
), including the Solo distribution ofistioctl
. - This feature requires your mesh to be installed with the Solo distribution of Istio and an Enterprise-level license for Gloo Mesh (OSS APIs). Contact your account representative to obtain a valid license.
Single cluster
Save your Istio upgrade values in environment variables.
If you do not already have a license, decide the level of licensed features that you want, and contact an account representative to obtain the license.
Choose the version of Istio that you want to install or upgrade to by reviewing the supported versions table.
Save each value in an environment variable. If you prefer to specify license keys in a secret instead, see Licensing. Note that the Gloo Operator installs the Solo distribution of Istio by default for the version you specify, so neither the
-solo
image tag nor the repo key are required.Install or upgrade
istioctl
with the same version of Istio that you saved.
Upgrade the custom resources of the Kubernetes Gateway API to the latest supported version, 1.2.1.
Upgrade the Gloo Operator to the latest version.
Verify that the operator pod is running.
Example output:
Edit the ServiceMeshController custom resource to make changes to your ambient mesh. For example, to upgrade the Istio patch or minor version of your service mesh, you might update the value of
spec.version
. For a description of each configurable field, see the ServiceMeshController reference.Save and close the editor to apply your changes in-place.
Verify that the ServiceMeshController is ready. In the
Status
section of the output, make sure that all statuses areTrue
, and that the phase isSUCCEEDED
.Example output:
Verify that the istiod control plane, Istio CNI, and ztunnel pods are running.
Example output:
Multicluster
Upgrade the Solo distribution of Istio binary.
Get the operating system and architecture that you use on your machine.
Set environment variables for the Solo distribution of Istio that you want to upgrade to. You can find these values in the Istio images built by Solo.io support article.
Download the Solo distribution of Istio binary and upgrade
istioctl
.Verify that the
istioctl
client is upgradedExample output:
Save the kubeconfig context of a cluster where you want to upgrade an ambient mesh in the following environment variables. Each time you repeat the steps in this guide, you change these variables to the next workload cluster’s context.
Upgrade the custom resources of the Kubernetes Gateway API to the latest supported version, 1.2.1.
Upgrade the Gloo Operator to the latest version.
Verify that the operator pod is running.
Example output:
Edit the ServiceMeshController custom resource to make changes to your ambient mesh. For example, to upgrade the Istio patch or minor version of your service mesh, you might update the value of
spec.version
. For a description of each configurable field, see the ServiceMeshController reference.Save and close the editor to apply your changes in-place.
Verify that the ServiceMeshController is ready. In the
Status
section of the output, make sure that all statuses areTrue
, and that the phase isSUCCEEDED
.Example output:
Verify that the istiod control plane, Istio CNI, and ztunnel pods are running.
Example output:
For each cluster, repeat steps 2 - 9. Be sure to change the value of the
$CLUSTER_CONTEXT
environment variable for each cluster.