Install managed gateway proxies
In Gloo Gateway 2.3 and later, you can easily manage and update gateway proxies in the gloo-platform
Helm chart, instead of managing individual gateway lifecycle manager CRDs. If you installed Gloo Gateway by using the legacy gloo-mesh-enterpise
, gloo-mesh-agent
, and other included Helm charts, or if you used meshctl
version 2.2 or earlier to install Gloo Gateway, migrate your legacy installation to the new gloo-platform
Helm chart. Then, you can follow the steps in the gloo-platform
upgrade guide to perform in-place and canary upgrades for the gateway proxy.
Streamline the gateway installation process by using the Gloo management plane to install Istio in your clusters, as part of the Istio lifecycle management. In Gloo Gateway, you install an Istio control plane and Istio gateways to allow incoming traffic to your cluster environment. If you use Gloo Mesh Enterprise, you can also add Istio sidecars to your workloads to create a managed service mesh.
By using a Gloo-managed installation, you no longer need to use istioctl
to individually install the Istio control plane and gateways. Instead, you can supply IstioOperator
configurations in your gloo-platform
Helm chart. Gloo translates this configuration into an Istio control plane and gateway proxy in the cluster.
-
Choose the Istio version you want to use for installation.
To use the default supported version of Gloo Istio, set the
REVISION
environment variable toauto
. This setting automatically uses the default supported Gloo Istio version for the image tag (such as1.17.2-solo
) and the revision (such as1-17-2
).export REVISION=auto
Note that in future upgrades, the version set by the
auto
setting does not change unless you manually specify different values for the image tag, revision, and image repository.Save the Istio version information as environment variables.
- For
REPO
, use a Gloo Istio repo key that you can get by logging in to the Support Center and reviewing the Istio images built by Solo.io support article. For more information, see Get the Gloo Istio version that you want to use. - For
ISTIO_IMAGE
, save the version that you downloaded, such as 1.17.2, and append thesolo
tag, which is required to use many enterprise features. You can optionally append other Gloo Istio tags, as described in About Gloo Istio. If you downloaded a different version than the following, make sure to specify that version instead. Note: The Istio lifecycle manager is supported only for Istio versions 1.15.4 or later. - For
REVISION
, take the Istio major and minor version numbers and replace the period with a hyphen, such as1-17-2
.
export REPO=<repo-key> export ISTIO_IMAGE=1.17.2-solo export REVISION=1-17-2
Istio version 1.17 does not support the Gloo legacy metrics pipeline. If you run the legacy metrics pipeline, before you upgrade or deploy gateway proxies with Istio 1.17, be sure that you set up the Gloo OpenTelemetry (OTel) pipeline instead in your new or existing Gloo Gateway installation.
- For
-
Prepare an
IstioLifecycleManager
resource to manageistiod
control planes.- Download the example file.
curl -0L https://raw.githubusercontent.com/solo-io/gloo-mesh-use-cases/main/gloo-mesh/istio-install/gm-managed/single-cluster/gm-istiod.yaml > gm-istiod.yaml
- Elevate the permissions of the following service accounts that will be created. These permissions allow the gateways to make use of a user ID that is normally restricted by OpenShift. For more information, see the Istio on OpenShift documentation.
oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system oc adm policy add-scc-to-group anyuid system:serviceaccounts:gloo-mesh-gateways # Update revision as needed oc adm policy add-scc-to-group anyuid system:serviceaccounts:gm-iop-1-17-2
- Create the
gloo-mesh-gateways
project, and create a NetworkAttachmentDefinition custom resource for the project.kubectl create ns gloo-mesh-gateways cat <<EOF | oc -n gloo-mesh-gateways create -f - apiVersion: "k8s.cni.cncf.io/v1" kind: NetworkAttachmentDefinition metadata: name: istio-cni EOF
- Repeat the following steps for each project where you want to deploy workloads, in each registered cluster.
- Create a NetworkAttachmentDefinition custom resource.
cat <<EOF | oc -n <project> create -f - apiVersion: "k8s.cni.cncf.io/v1" kind: NetworkAttachmentDefinition metadata: name: istio-cni EOF
- Elevate the permissions of the service account to allow the gateway to make use of a user ID that is normally restricted by OpenShift.
oc adm policy add-scc-to-group anyuid system:serviceaccounts:<project>
- Create a NetworkAttachmentDefinition custom resource.
- Download the
gm-istiod.yaml
example file.curl -0L https://raw.githubusercontent.com/solo-io/gloo-mesh-use-cases/main/gloo-mesh/istio-install/gm-managed/single-cluster/gm-istiod-openshift.yaml > gm-istiod.yaml
- Elevate the permissions of the following service accounts that will be created. These permissions allow the gateways to make use of a user ID that is normally restricted by OpenShift. For more information, see the Istio on OpenShift documentation.
- Update the example file with the environment variables that you previously set, and optionally further edit the file to provide your own details. Save the updated file as
gm-istiod-values.yaml
. For more information, see the API reference.- Tip: Instead of updating the file manually, try running a terminal command to substitute values, such as the following command.
envsubst < gm-istiod.yaml > gm-istiod-values.yaml open gm-istiod-values.yaml
- Tip: Instead of updating the file manually, try running a terminal command to substitute values, such as the following command.
- Apply the
IstioLifecycleManager
resource to your management cluster.kubectl apply -f gm-istiod-values.yaml
- Download the example file.
-
Prepare a
GatewayLifecycleManager
custom resource to manage the ingress gateway proxies.- Download the
gm-ingress-gateway.yaml
example file.curl -0L https://raw.githubusercontent.com/solo-io/gloo-mesh-use-cases/main/gloo-mesh/istio-install/gm-managed/single-cluster/gm-ingress-gateway.yaml > gm-ingress-gateway.yaml
- Update the example file with the environment variables that you previously set, and optionally further edit the file to provide your own details. Save the updated file as
gm-ingress-gateway-values.yaml
. For more information, see the API reference.- Tip: Instead of updating the file manually, try running a terminal command to substitute values, such as the following command.
envsubst < gm-ingress-gateway.yaml > gm-ingress-gateway-values.yaml open gm-ingress-gateway-values.yaml
- Tip: Instead of updating the file manually, try running a terminal command to substitute values, such as the following command.
- Apply the
GatewayLifecycleManager
resource to your management cluster.kubectl apply -f gm-ingress-gateway-values.yaml
- Download the
-
Optional: If you have a multicluster setup, prepare a
GatewayLifecycleManager
custom resource to manage the east-west gateways.- Download the
gm-ew-gateway.yaml
example file.curl -0L https://raw.githubusercontent.com/solo-io/gloo-mesh-use-cases/main/gloo-mesh/istio-install/gm-managed/gm-ew-gateway.yaml > gm-ew-gateway.yaml
- Update the example file with the environment variables that you previously set, and optionally further edit the file to provide your own details. For more information, see the API reference.
- Tip: Instead of updating the file manually, try running a terminal command to substitute values, such as the following command.
envsubst < gm-ew-gateway.yaml > gm-ew-gateway-values.yaml open gm-ew-gateway.yaml
- Tip: Instead of updating the file manually, try running a terminal command to substitute values, such as the following command.
- Apply the
GatewayLifecycleManager
resource to your management cluster.kubectl apply -f gm-ew-gateway.yaml
- Download the
-
Verify that the namespaces for your Istio installations are created.
kubectl get ns
For example, the
gm-iop-1-17-2
,gloo-mesh-gateways
, andistio-system
namespaces are created:NAME STATUS AGE default Active 56m gloo-mesh Active 36m gm-iop-1-17-2 Active 91s gloo-mesh-gateways Active 90s istio-system Active 91s kube-node-lease Active 57m kube-public Active 57m kube-system Active 57m
-
In each namespace, verify that the Istio resources that you specified in your Istio operator configuration are successfully installing. For example, verify that the Istio control plane pods are running.
kubectl get all -n gm-iop-1-17-2
Example output:
NAME READY STATUS RESTARTS AGE pod/istio-operator-1-17-2-678fd95cc6-ltbvl 1/1 Running 0 4m12s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/istio-operator-1-17-2 ClusterIP 10.204.15.247 <none> 8383/TCP 4m12s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/istio-operator-1-17-2 1/1 1 1 4m12s NAME DESIRED CURRENT READY AGE replicaset.apps/istio-operator-1-17-2-678fd95cc6 1 1 1 4m12s
kubectl get all -n istio-system
Example output:
NAME READY STATUS RESTARTS AGE pod/istiod-1-17-2-b65676555-g2vmr 1/1 Running 0 8m57s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/istiod-1-17-2 ClusterIP 10.204.6.56 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 8m56s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/istiod-1-17-2 1/1 1 1 8m57s NAME DESIRED CURRENT READY AGE replicaset.apps/istiod-1-17-2-b65676555 1 1 1 8m57s NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE horizontalpodautoscaler.autoscaling/istiod-1-17-2 Deployment/istiod-1-17-2 1%/80% 1 5 1 8m58s
Note that the gateways might take a few minutes to be created.
kubectl get all -n gloo-mesh-gateways
Example output:
NAME READY STATUS RESTARTS AGE pod/istio-ingressgateway-1-17-2-77d5f76bc8-j6qkp 1/1 Running 0 2m18s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/istio-ingressgateway LoadBalancer 10.44.4.140 34.150.235.221 15021:31321/TCP,80:32525/TCP,443:31826/TCP 2m16s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/istio-ingressgateway-1-17-2 1/1 1 1 2m18s NAME DESIRED CURRENT READY AGE replicaset.apps/istio-ingressgateway-1-17-2-77d5f76bc8 1 1 1 2m18s NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE horizontalpodautoscaler.autoscaling/istio-ingressgateway-1-17-2 Deployment/istio-ingressgateway-1-17-2 4%/80% 1 5 1 2m19s
-
Optional for OpenShift: Expose the gateways by using OpenShift routes.
oc -n gloo-mesh-gateways expose svc istio-eastwestgateway --port=http2
oc -n gloo-mesh-gateways expose svc istio-ingressgateway --port=http2
In multicluster setups, one Gloo Gateway for north-south traffic is deployed to each workload cluster. To learn about your gateway options, such as creating a global load balancer to route to each gateway IP address or registering each gateway IP address in one DNS entry, see the gateway deployment patterns page.
Next steps
Now that the gateway proxies are installed, check out the following resources to explore Gloo Gateway capabilities:
- When it's time to upgrade Istio, see Upgrade managed gateway proxies.
- Organize team resources with workspaces.
- Deploy sample apps in your cluster to follow the guides in the documentation.
- Configure HTTP or HTTPS listeners for your gateway.
- Review routing examples, such as header matching, redirects, or direct responses that you can configure for your API Gateway.
- Explore traffic policies that you can apply to your routes and upstream services.