Single cluster

Uninstall Gloo Mesh Gateway from a single-cluster setup.

Gateway proxies

Uninstall the Istio control plane and gateway proxies. Note: For demo installations, skip to the next section.

OpenShift installations: Revoke the extra permissions and resources required for OpenShift to run Istio.

  1. Revoke the Istio namespace ID permissions for the Istio service accounts.

      oc adm policy remove-scc-from-group anyuid system:serviceaccounts:gloo-mesh
    oc adm policy remove-scc-from-group anyuid system:serviceaccounts:istio-system
    oc adm policy remove-scc-from-group anyuid system:serviceaccounts:gloo-mesh-gateways
    # Update revision as needed
    oc adm policy remove-scc-from-group anyuid system:serviceaccounts:gm-iop-1-18
      
  2. Revoke the Istio namespace ID permissions for sample app project service accounts.

      oc adm policy remove-scc-from-group anyuid system:serviceaccounts:bookinfo
    oc adm policy remove-scc-from-group anyuid system:serviceaccounts:httpbin
      
  3. Delete the NetworkAttachmentDefinition resources and the Istio namespace ID permissions for your workload projects.

      oc adm policy remove-scc-from-group anyuid system:serviceaccounts:<workload_projects>
      
      oc delete network-attachment-definition istio-cni -n <workload_projects>
      

Gloo Mesh Gateway

  1. Uninstall Gloo Mesh Gateway.

  2. Delete the gloo-mesh and gloo-mesh-addons namespaces.

      kubectl delete namespace gloo-mesh
    kubectl delete namespace gloo-mesh-addons
      

Optional: Sample apps

If you installed the Bookinfo and httpbin sample apps, run the following commands to uninstall their resources.

  1. Export the Istio version that your cluster runs as an environment variable, such as 1.18.7 in the following example.

      export ISTIO_VERSION=1.18.7
      
  2. Remove the Bookinfo application components and service accounts.

      kubectl -n bookinfo delete -f https://raw.githubusercontent.com/istio/istio/$ISTIO_VERSION/samples/bookinfo/platform/kube/bookinfo.yaml -l 'app,version notin (v3)'
    kubectl -n bookinfo delete -f https://raw.githubusercontent.com/istio/istio/$ISTIO_VERSION/samples/bookinfo/platform/kube/bookinfo.yaml -l 'account'
      
  3. Delete the bookinfo namespace.

      kubectl delete ns bookinfo
      
  4. Remove the httpbin application components.

      kubectl -n httpbin delete -f https://raw.githubusercontent.com/solo-io/gloo-mesh-use-cases/main/policy-demo/httpbin.yaml
      
  5. Delete the httpbin namespace.

      kubectl delete ns httpbin
      

Multicluster

Uninstall Gloo Mesh Gateway from a multicluster setup.

Gateway proxies

  1. Save the names and contexts of the clusters you want to uninstall Gloo Mesh Gateway from.

      export MGMT_CLUSTER=<management-cluster>
    export REMOTE_CLUSTER1=<remote-cluster1>
    export REMOTE_CLUSTER2=<remote-cluster2>
      
      export MGMT_CONTEXT=<management-cluster-context>
    export REMOTE_CONTEXT1=<remote-cluster1-context>
    export REMOTE_CONTEXT2=<remote-cluster2-context>
      
  2. Uninstall the Istio control plane and gateway proxies. These steps differ depending on how you installed them.

  3. OpenShift installations: Revoke the extra permissions and resources required for OpenShift to run Istio.

    1. Revoke the Istio namespace ID permissions for the Istio service accounts.

        oc adm policy remove-scc-from-group anyuid system:serviceaccounts:gloo-mesh --context $REMOTE_CONTEXT1
      oc adm policy remove-scc-from-group anyuid system:serviceaccounts:istio-system --context $REMOTE_CONTEXT1
      oc adm policy remove-scc-from-group anyuid system:serviceaccounts:gloo-mesh-gateways --context $REMOTE_CONTEXT1
      # Update revision as needed
      oc adm policy remove-scc-from-group anyuid system:serviceaccounts:gm-iop- --context $REMOTE_CONTEXT1
        
        oc adm policy remove-scc-from-group anyuid system:serviceaccounts:gloo-mesh --context $REMOTE_CONTEXT2
      oc adm policy remove-scc-from-group anyuid system:serviceaccounts:istio-system --context $REMOTE_CONTEXT2
      oc adm policy remove-scc-from-group anyuid system:serviceaccounts:gloo-mesh-gateways --context $REMOTE_CONTEXT2
      # Update revision as needed
      oc adm policy remove-scc-from-group anyuid system:serviceaccounts:gm-iop- --context $REMOTE_CONTEXT2
        
    2. Revoke the Istio namespace ID permissions for sample app project service accounts.

        oc --context $REMOTE_CONTEXT1 adm policy remove-scc-from-group anyuid system:serviceaccounts:bookinfo
      oc --context $REMOTE_CONTEXT1 adm policy remove-scc-from-group anyuid system:serviceaccounts:httpbin
        
        oc --context $REMOTE_CONTEXT2 adm policy remove-scc-from-group anyuid system:serviceaccounts:bookinfo
      oc --context $REMOTE_CONTEXT2 adm policy remove-scc-from-group anyuid system:serviceaccounts:httpbin
        
    3. Delete the NetworkAttachmentDefinition resources and the Istio namespace ID permissions for your workload projects.

        oc --context $REMOTE_CONTEXT1 adm policy remove-scc-from-group anyuid system:serviceaccounts:<workload_projects>
      oc --context $REMOTE_CONTEXT2 adm policy remove-scc-from-group anyuid system:serviceaccounts:<workload_projects>
        
        oc --context $REMOTE_CONTEXT1 delete network-attachment-definition istio-cni -n <workload_projects>
      oc --context $REMOTE_CONTEXT2 delete network-attachment-definition istio-cni -n <workload_projects>
        

Workload clusters

Uninstall the Gloo data plane components from the workload clusters.

  1. Uninstall the Gloo agent that runs on each workload cluster.

  2. Uninstall the Gloo CRDs Helm releases in each workload cluster.

      helm uninstall gloo-platform-crds -n gloo-mesh --kube-context $REMOTE_CONTEXT1
    helm uninstall gloo-platform-crds -n gloo-mesh --kube-context $REMOTE_CONTEXT2
      
  3. Delete the gloo-mesh and gloo-mesh-addons namespaces from each workload cluster.

      kubectl --context $REMOTE_CONTEXT1 delete namespace gloo-mesh
    kubectl --context $REMOTE_CONTEXT1 delete namespace gloo-mesh-addons
    kubectl --context $REMOTE_CONTEXT2 delete namespace gloo-mesh
    kubectl --context $REMOTE_CONTEXT2 delete namespace gloo-mesh-addons
      
  4. Repeat these steps for any other cluster that is registered with Gloo Mesh. For example, if you ran the management plane in a cluster that was also registered, repeat these steps for the MGMT_CLUSTER and specify the MGMT_CONTEXT. If you registered multiple workload clusters, repeat these steps for each workload cluster.

Management cluster

Uninstall the Gloo management plane components from the management cluster.

  1. Uninstall the Gloo management plane components.

  2. Uninstall the Gloo CRDs Helm release from the management cluster.

      helm uninstall gloo-platform-crds -n gloo-mesh --kube-context $MGMT_CONTEXT
      
  3. Delete the gloo-mesh namespace, and if applicable, the gloo-mesh-config namespace.

      kubectl --context $MGMT_CONTEXT delete namespace gloo-mesh
    kubectl --context $MGMT_CONTEXT delete namespace gloo-mesh-config
      

Optional: Sample apps

If you installed the Bookinfo and httpbin sample apps, run the following commands to uninstall their resources.

  1. Export the Istio version that your cluster runs as an environment variable, such as 1.18.7 in the following example.

      export ISTIO_VERSION=1.18.7
      
  2. Remove the Bookinfo application components and service accounts.

      kubectl -n bookinfo delete -f https://raw.githubusercontent.com/istio/istio/$ISTIO_VERSION/samples/bookinfo/platform/kube/bookinfo.yaml -l 'app,version notin (v3)' --context $REMOTE_CONTEXT1
    kubectl -n bookinfo delete -f https://raw.githubusercontent.com/istio/istio/$ISTIO_VERSION/samples/bookinfo/platform/kube/bookinfo.yaml -l 'app,version notin (v3)' --context $REMOTE_CONTEXT2
    kubectl -n bookinfo delete -f https://raw.githubusercontent.com/istio/istio/$ISTIO_VERSION/samples/bookinfo/platform/kube/bookinfo.yaml -l 'account' --context $REMOTE_CONTEXT1
    kubectl -n bookinfo delete -f https://raw.githubusercontent.com/istio/istio/$ISTIO_VERSION/samples/bookinfo/platform/kube/bookinfo.yaml -l 'account' --context $REMOTE_CONTEXT2
      
  3. Delete the bookinfo namespace.

      kubectl delete ns bookinfo --context $REMOTE_CONTEXT1
    kubectl delete ns bookinfo --context $REMOTE_CONTEXT2
      
  4. Remove the httpbin application components.

      kubectl -n httpbin delete -f https://raw.githubusercontent.com/solo-io/gloo-mesh-use-cases/main/policy-demo/httpbin.yaml --context $REMOTE_CONTEXT1
    kubectl -n httpbin delete -f https://raw.githubusercontent.com/solo-io/gloo-mesh-use-cases/main/policy-demo/httpbin.yaml --context $REMOTE_CONTEXT2
      
  5. Delete the httpbin namespace.

      kubectl delete ns httpbin --context $REMOTE_CONTEXT1
    kubectl delete ns httpbin --context $REMOTE_CONTEXT2