Quick upgrade

Quickly upgrade your Gloo Gateway Enterprise or Gloo Gateway Open Source installation to the latest version of 1.18 in testing or sandbox environments.

Step 1: Prepare to upgrade

Before you begin, follow the Prepare to upgrade guide to complete these preparatory steps:

Step 2: Upgrade glooctl

Follow the steps in Update glooctl CLI version to update glooctl to the version you want to upgrade to.

Step 3: Apply minor version-specific changes

Each minor version might add custom resource definitions (CRDs) or otherwise have changes that Helm upgrades cannot handle seamlessly. For these changes, you must make any necessary adjustments before you upgrade.

  1. Update the Gloo Gateway Helm repositories.

    helm repo update
    
  2. Set the version to upgrade Gloo Gateway to in an environment variable, such as the latest patch version for open source ( 1.19.0-beta2) or enterprise ( 1.18.0).

    export NEW_VERSION=<version>
    
  3. Check the CRD changes to see which CRDs are new, deprecated, or removed in version 1.18.

    1. Delete any removed CRDs.
    2. Apply the new and updated CRDs.
      helm pull gloo/gloo --version $NEW_VERSION --untar
      kubectl apply -f gloo/crds
      
      helm pull glooe/gloo-ee --version $NEW_VERSION --untar
      kubectl apply -f gloo-ee/charts/gloo/crds
      # If Gloo Federation is enabled
      kubectl apply -f gloo-ee/charts/gloo-fed/crds
      
    3. Verify that the deployed CRDs use the version that you want to upgrade to.
      glooctl check-crds
      
  4. Check the Feature changes to see whether there are breaking changes you must address in your resources before you upgrade to 1.18.

  5. Check the Helm changes to see whether there are new, deprecated, or removed Helm settings you might address before you upgrade to 1.18.

    1. Get the Helm values file for your current installation.
      helm get values -n gloo-system gloo gloo/gloo > values.yaml
      open values.yaml
      
      helm get values -n gloo-system gloo glooe/gloo-ee > values.yaml
      open values.yaml
      
    2. Edit the Helm values file or prepare the --set flags to make any changes that you want. If you do not want to use certain settings, comment them out.

Step 4: Upgrade Gloo Gateway

Upgrade your Gloo Gateway installation. The following example upgrade commands assume that Gloo Gateway is installed with Helm, the Helm release exists in the gloo-system namespace of a Kubernetes cluster that uses the Kubernetes load balancer, and that the Kubernetes context is set to the cluster.

  1. Upgrade the Helm release. Include your installation values in a Helm values file (such as -f values.yaml) or in --set flags.

    helm upgrade -n gloo-system gloo gloo/gloo \
      -f values.yaml \
      --version=$NEW_VERSION
    

    Note that you must set your license key by using the --set-string license_key=$LICENSE_KEY flag or including the license_key: $LICENSE_KEY setting in your values file. If you do not have a license key, request a Gloo Gateway Enterprise trial.

    helm upgrade -n gloo-system gloo glooe/gloo-ee \
      -f values.yaml \
      --version=$NEW_VERSION \
      --set license_key=$LICENSE_KEY
    

  2. Verify that Gloo Gateway runs the upgraded version.

    kubectl -n gloo-system get pod -l gloo=gloo -ojsonpath='{.items[0].spec.containers[0].image}'
    

    Example output:

    quay.io/solo-io/gloo:
    1.19.0-beta2
    
  3. Verify that all server components run the upgraded version.

    glooctl version
    
  4. Check that your Gloo Gateway components are OK. If a problem is reported by glooctl check, Gloo Gateway might not work properly or Envoy might not get the updated configuration.

    glooctl check
    

    Example output:

    Checking Deployments... OK
    Checking Pods... OK
    Checking Upstreams... OK
    Checking UpstreamGroups... OK
    Checking Secrets... OK
    Checking VirtualServices... OK
    Checking Gateways... OK
    Checking Proxies... OK
    No problems detected.
    
  5. Now that your upgrade is complete, you can enable any other new features in version 1.18 that you want to use.