Stay organized with collections
Save and categorize content based on your preferences.
Uninstall the Knative serving "GKE add-on" from your cluster,
including related resources and labels.
In this task, the migration script is used to
remove only the "GKE add-on" from your
cluster, all of your existing Knative serving resources remain in your cluster
and continue serving traffic.
The commands on this page use the environment variables and migration script
from the upgrade preparation step.
It is important that you perform each step of this process in the
specified order.
Overview
Uninstalling the GKE add-on includes:
Validating that the node pool meets the requirements for upgrading.
Applying migration labels and creating the admission webhook
ValidatingWebhookConfiguration to prevent your Knative serving resources
from being deleted in the following namespaces:
knative-serving
cloud-run-system
gke-system
Uninstalling the "GKE add-on", including removing the
related manager labels from your Knative serving resources.
Note that this process can run for more than 10 minutes.
Adding the appdevexperience-operator annotations.
Removing the stale cloudrun.operator.run.cloud.google.com
resource that is not used with fleets.
Uninstall the Knative serving GKE add-on
In this section, the migration script is used to
uninstall the "GKE add-on".
Run the following command to start the migration script:
In the terminal, the migration script prompts you for your confirmation to
perform each action. Enter y to begin the process and also to continue at
each prompt.
The prompts during the process of uninstalling the
"GKE add-on" look similar to the following:
In this process, the script performs the following:
1. Validating the node pool to make sure it meets the requirements for
upgrading. Confirming node pool requirements for
my-gcp-project/us-central1-c/my-gke-cluster...
2. Applying the required migration labels
namespace/knative-serving labeled
3. Create a ValidatingWebhookConfiguration admission webhook to prevent
the deletion of resources under the following namespaces:
knative-serving, cloud-run-system, and gke-system
Continue? [Y/n] y
validatingwebhookconfiguration.admissionregistration.k8s.io/prevent-deletion-cloud-run-resources created
ValidatingWebhookConfiguration prevent-deletion-cloud-run-resources for preventing deleting Knative serving resources is effective.
4. Uninstall the Knative serving GKE add-on? Your
Knative serving resources remain in your cluster.
Continue? [Y/n] y
Updating my-gke-cluster...
5. Removing the add-on manager labels and adding the Operator related
annotations. This step will take about 10 minutes.
customresourcedefinition.apiextensions.k8s.io/certificates.networking.internal.knative.dev annotated
6. Clean up unused stale Knative serving operator.
cloudrun.operator.run.cloud.google.com "cloud-run" deleted
No resources found
Knative serving GKE add-on is successfully uninstalled.
Verify that the "GKE add-on" was disabled by running
the following command:
In the terminal, the migration script prompts you for your confirmation to
perform each action. Enter y to at each prompt to proceed.
The prompts during the process of re-enabling the
"GKE add-on" look similar to the following:
In this step, the script performs the following:
1. Enable Knative serving GKE add-on
2. Remove the ValidatingWebhookConfiguration added for uninstalling addon
Continue? [Y/n] Y
1. Enable Knative serving GKE add-on?
Continue? [Y/n] Y
Updating my-gke-cluster...done.
Knative serving GKE add-on is enabled
2. Remove the ValidatingWebhookConfiguration added for uninstalling addon?
Continue? [Y/n] Y
Removing the ValidatingWebhookConfiguration used to prevent deletion
Verify the Knative serving "GKE add-on" is re-enabled:
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-28 UTC."],[],[],null,["# Uninstall the Knative serving GKE add-on\n\nUninstall the Knative serving \"*GKE add-on*\" from your cluster,\nincluding related resources and labels.\n\nIn this task, the [migration script](/kubernetes-engine/enterprise/knative-serving/docs/install/on-gcp/upgrade/prepare) is used to\nremove only the \"*GKE add-on*\" from your\ncluster, all of your existing Knative serving resources remain in your cluster\nand continue serving traffic.\n\nBefore you begin\n----------------\n\n- You must first review and ensure that you meet the\n [requirements for upgrading](/kubernetes-engine/enterprise/knative-serving/docs/install/on-gcp/upgrade).\n\n- The commands on this page use the environment variables and migration script\n from the [upgrade preparation step](/kubernetes-engine/enterprise/knative-serving/docs/install/on-gcp/upgrade/prepare).\n\n- It is important that you perform each step of this process in the\n [specified order](/kubernetes-engine/enterprise/knative-serving/docs/install/on-gcp/upgrade#upgrading).\n\nOverview\n--------\n\nUninstalling the *GKE add-on* includes:\n\n1. Validating that the node pool meets the requirements for upgrading.\n2. Applying migration labels and creating the admission webhook `ValidatingWebhookConfiguration` to prevent your Knative serving resources from being deleted in the following namespaces:\n - `knative-serving`\n - `cloud-run-system`\n - `gke-system`\n3. Uninstalling the \"*GKE add-on*\", including removing the\n related manager labels from your Knative serving resources.\n\n Note that this process can run for more than 10 minutes.\n4. Adding the `appdevexperience-operator` annotations.\n\n5. Removing the stale `cloudrun.operator.run.cloud.google.com`\n resource that is not used with fleets.\n\n| **Note:** While the traffic to your services remain unaffected, the GKE control plane (\"*master*\") node is updated and therefore, becomes temporarily unavailable during the process. Any operations that require access to the GKE control plane such as Kubernetes resource operations like delete, update, or create will not occur until the update completes.\n\nUninstall the Knative serving GKE add-on\n----------------------------------------\n\nIn this section, the [migration script](/kubernetes-engine/enterprise/knative-serving/docs/install/on-gcp/upgrade/prepare) is used to\nuninstall the \"*GKE add-on*\".\n\n1. Run the following command to start the migration script:\n\n ./migration-addon.sh --command uninstall-cloudrun-addon\n\n2. In the terminal, the migration script prompts you for your confirmation to\n perform each action. Enter `y` to begin the process and also to continue at\n each prompt.\n\n The prompts during the process of uninstalling the\n \"*GKE add-on*\" look similar to the following: \n\n In this process, the script performs the following:\n 1. Validating the node pool to make sure it meets the requirements for\n upgrading. Confirming node pool requirements for\n my-gcp-project/us-central1-c/my-gke-cluster...\n 2. Applying the required migration labels\n namespace/knative-serving labeled\n 3. Create a ValidatingWebhookConfiguration admission webhook to prevent\n the deletion of resources under the following namespaces:\n knative-serving, cloud-run-system, and gke-system\n Continue? [Y/n] y\n\n validatingwebhookconfiguration.admissionregistration.k8s.io/prevent-deletion-cloud-run-resources created\n ValidatingWebhookConfiguration prevent-deletion-cloud-run-resources for preventing deleting Knative serving resources is effective.\n\n 4. Uninstall the Knative serving GKE add-on? Your\n Knative serving resources remain in your cluster.\n Continue? [Y/n] y\n\n Updating my-gke-cluster...\n\n 5. Removing the add-on manager labels and adding the Operator related\n annotations. This step will take about 10 minutes.\n\n customresourcedefinition.apiextensions.k8s.io/certificates.networking.internal.knative.dev annotated\n\n 6. Clean up unused stale Knative serving operator.\n\n cloudrun.operator.run.cloud.google.com \"cloud-run\" deleted\n No resources found\n\n Knative serving GKE add-on is successfully uninstalled.\n\n3. Verify that the \"*GKE add-on* \" was `disabled` by running\n the following command:\n\n gcloud container clusters describe ${CLUSTER_NAME} --region ${CLUSTER_LOCATION} --project ${PROJECT_ID} --format='get(addonsConfig.cloudRunConfig.disabled)'\n\n `True` is returned if the \"*GKE add-on*\" was successfully\n removed from your cluster.\n\nWhat's next\n-----------\n\n[Migrate to Cloud Service Mesh](/kubernetes-engine/enterprise/knative-serving/docs/install/on-gcp/upgrade/migrate-service-mesh)\n\nRollback\n--------\n\nIf you need to rollback the changes that you made through the steps above, you\ncan use the migration script to:\n\n- Re-enable the Knative serving \"GKE add-on\".\n- Remove the `ValidatingWebhookConfiguration` admission webhook.\n\nTo begin the rollback process:\n\n1. Run the following command to start the migration script:\n\n ./migration-addon.sh --command rollback-uninstall-cloudrun-addon\n\n2. In the terminal, the migration script prompts you for your confirmation to\n perform each action. Enter `y` to at each prompt to proceed.\n\n The prompts during the process of re-enabling the\n \"*GKE add-on*\" look similar to the following: \n\n In this step, the script performs the following:\n 1. Enable Knative serving GKE add-on\n 2. Remove the ValidatingWebhookConfiguration added for uninstalling addon\n Continue? [Y/n] Y\n\n 1. Enable Knative serving GKE add-on?\n Continue? [Y/n] Y\n\n Updating my-gke-cluster...done.\n Knative serving GKE add-on is enabled\n\n 2. Remove the ValidatingWebhookConfiguration added for uninstalling addon?\n Continue? [Y/n] Y\n\n Removing the ValidatingWebhookConfiguration used to prevent deletion\n\n3. Verify the Knative serving \"*GKE add-on*\" is re-enabled:\n\n gcloud container clusters describe ${CLUSTER_NAME} --region ${CLUSTER_LOCATION} --project ${PROJECT_ID} --format='get(addonsConfig.cloudRunConfig)'\n\n If the add-on is running in your cluster, the configuration details for the\n add-on are returned. Example: \n\n loadBalancerType=LOAD_BALANCER_TYPE_EXTERNAL"]]