Update stateless workloads

This page explains how to update existing stateless workloads running in a Google Distributed Cloud (GDC) air-gapped Kubernetes cluster. As your application evolves based on resource usage and configuration optimizations, you must update your underlying pod specification in the Kubernetes cluster to reflect those workload changes.

This page is for developers within the application operator group, who are responsible for updating application workloads for their organization. For more information, see Audiences for GDC air-gapped documentation.

Before you begin

To run commands against a Kubernetes cluster, make sure you have the following resources:

  1. Locate the Kubernetes cluster name, or ask your Platform Administrator what the cluster name is.

  2. Sign in and generate the kubeconfig file for the Kubernetes cluster if you don't have one.

  3. Use the kubeconfig path of the Kubernetes cluster to replace KUBERNETES_CLUSTER_KUBECONFIG in these instructions.

To get the required permissions to update stateless workloads, ask your Organization IAM Admin to grant you the Namespace Admin role (namespace-admin) in your project namespace.

Update the deployment

To update a Deployment object, run:

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG -n NAMESPACE \
    apply -f DEPLOYMENT_FILE

Replace the following:

  • KUBERNETES_CLUSTER_KUBECONFIG: the kubeconfig file for the cluster running the deployment.

  • NAMESPACE: the project namespace.

  • DEPLOYMENT_FILE: the name of the Deployment manifest file to update.

The kubectl apply command applies a manifest file to a resource. If the specified resource does not exist, it is created by the command.

There are also several other ways to update resources within your deployment.

Update a container image

To change the image of a Deployment object, run:

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG -n NAMESPACE \
    set image deployment DEPLOYMENT_NAME \
    IMAGE=IMAGE:TAG

Replace the following:

  • KUBERNETES_CLUSTER_KUBECONFIG: the kubeconfig file for the cluster running the deployment.

  • NAMESPACE: the project namespace.

  • DEPLOYMENT_NAME: the name of the Deployment object containing the image.

  • IMAGE: the name of the container image.

  • TAG: the tag to update for the container image.

Updating the image of a deployment is useful to change selector fields or resources, such as requests or limits.

For example, to update a Deployment object named nginx to use version 1.9.1, run:

kubectl --kubeconfig /tmp/kubeconfig.yaml -n my-namespace \
    set image deployment nginx nginx=nginx:1.9.1

Roll back an update

If you want to roll back an update, such as when your deployment becomes unstable, use the kubectl CLI. A Deployment object's rollout history is preserved in the system so you can roll back at any time.

To roll back an in-progress or completed update to its previous revision, run:

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG \
    -n NAMESPACE \
    rollout undo deployment DEPLOYMENT_NAME

Replace the following:

  • KUBERNETES_CLUSTER_KUBECONFIG: the kubeconfig file for the cluster running the deployment.

  • NAMESPACE: the project namespace.

  • DEPLOYMENT_NAME: the name of the Deployment object to roll back.

To roll back to a specific revision, run:

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG \
    -n NAMESPACE \
    rollout undo deployment DEPLOYMENT_NAME \
    --to-revision=REVISION_NUMBER

Replace the following:

  • KUBERNETES_CLUSTER_KUBECONFIG: the kubeconfig file for the cluster running the deployment.

  • NAMESPACE: the project namespace.

  • DEPLOYMENT_NAME: the name of the Deployment object to roll back.

  • REVISION_NUMBER: the integer that defines the revision to roll back to, such as 3.