Stay organized with collections
Save and categorize content based on your preferences.
Migrate and deploy applications to GKE Autopilot clusters
To deploy your migrated container workloads to GKE Autopilot clusters,
you use the same procedure to migrate your workloads as you use for the existing architecture.
The only changes are that:
You have to set v2kServiceManager to true in the migration plan
before you generate the container artifacts.
You have to review the new services-config.yaml file and make any edits to the
initialization services. See Using services-config.yaml.
For example, for a migration named "my-migration":
migctl migration get my-migration
Open the downloaded migration plan, my-migration.yaml, in a text editor.
Verify the enhanced Linux service manager. The v2kServiceManager flag is
set to true by default. However, if Migrate to Containers
detects a system service that is not supported by the service
manager, you will be alerted and the v2kServiceManager flag will be set to false.
When the flag is false the migration will use a legacy runtime which supports your
service.
The following alert is provided alongside the unsupported service:
Service is not supported by v2k service manager, therefore legacy runtime
will be used instead of v2k service manager, and migrated workload would
not fit running on Autopilot clusters of Cloudrun.
When an unsupported service is found, you can also choose to manually set the flag to true.
In this instance, you can either choose to keep the unsupported service on the generated image
where it may not run or you can exclude the service by removing it from the migration plan.
To enable the new service manager, reset the flag to true:
Edit the new services-config.yaml file to configure the initialization properties
of the container. Save the file and rebuild your container image to apply the changes.
Example: Deploying the Quickstart container on an Autopilot cluster
Use the current Quickstart guide to migrate a container containing
a simple web server and then deploy it on an Autopilot cluster. The only changes
that you have to make to the Quickstart process are:
In Step 3 of Migrating the VM, where you review
the migration plan, set v2kServiceManager to true in the migration plan
and then save the plan:
v2kServiceManager:true
In the Deploying the migrated workload section,
create and connect to a GKE Autopilot cluster before you deploy the container:
[[["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,["# Migrate and deploy applications to GKE Autopilot clusters\n=========================================================\n\nTo deploy your migrated container workloads to GKE Autopilot clusters,\nyou use the same procedure to migrate your workloads as you use for the existing architecture.\nThe only changes are that:\n\n- You have to set `v2kServiceManager` to `true` in the migration plan\n before you generate the container artifacts.\n\n- You have to review the new `services-config.yaml` file and make any edits to the\n initialization services. See [Using services-config.yaml](/migrate/containers/docs/services-config).\n\nTo perform a migration:\n\n1. [Install Migrate to Containers version 1.15.0](/migrate/containers/docs/install-overview).\n\n2. [Add a migration source](/migrate/containers/docs/adding-a-migration-source) and [create a migration](/migrate/containers/docs/creating-a-migration)\n as you do today with the existing runtime.\n\n3. [Customize your migration plan](/migrate/containers/docs/customizing-a-migration-plan) as necessary.\n\n | **Note:** Prior to Migrate to Containers 1.10, use of the enhanced Linux service manager was disabled by default. If you are using Migrate to Containers 1.9 or older, you should have `v2kServiceManager` set to `true` in your migration plan (`my-migration.yaml`). If the enhanced Linux service manager is disabled for you, check your `services.yaml` file for comments about services that may not work with your new runtime. If you would like to include any of the disabled services, contact your support channel.\n 1. Download the migration plan. The migration plan is represented by\n [AppXGenerateArtifactsFlow](https://github.com/GoogleCloudPlatform/migrate-to-containers/blob/main/references/crds/m2c-crds.md#appxgenerateartifactsflow).\n\n For example, for a migration named \"my-migration\": \n\n ```\n migctl migration get my-migration\n ```\n 2. Open the downloaded migration plan, `my-migration.yaml`, in a text editor.\n\n 3. Verify the enhanced Linux service manager. The `v2kServiceManager` flag is\n set to `true` by default. However, if Migrate to Containers\n detects a system service that is not supported by the service\n manager, you will be alerted and the `v2kServiceManager` flag will be set to `false`.\n When the flag is `false` the migration will use a legacy runtime which supports your\n service.\n\n The following alert is provided alongside the unsupported service: \n\n ```\n Service is not supported by v2k service manager, therefore legacy runtime\n will be used instead of v2k service manager, and migrated workload would\n not fit running on Autopilot clusters of Cloudrun.\n ```\n\n When an unsupported service is found, you can also choose to manually set the flag to `true`.\n In this instance, you can either choose to keep the unsupported service on the generated image\n where it may not run or you can exclude the service by removing it from the migration plan.\n\n To enable the new service manager, reset the flag to `true`: \n\n ```yaml\n v2kServiceManager: true\n ```\n 4. Perform any other customizations necessary for your migration as described\n in [Customize the migration plan](/migrate/containers/docs/customizing-a-migration-plan).\n\n 5. When your edits are complete, save the edited file.\n\n 6. Upload the edited migration plan:\n\n ```\n migctl migration update my-migration --main-config my-migration.yaml\n ```\n4. [Generate](/migrate/containers/docs/executing-a-migration) and [review the migration artifacts](/migrate/containers/docs/review-deployment-files)\n as you do today with the existing runtime.\n\n5. Edit the new `services-config.yaml` file to configure the initialization properties\n of the container. Save the file and rebuild your container image to apply the changes.\n\n See [Using services-config.yaml](/migrate/containers/docs/services-config) for more.\n6. [Deploy the container to a GKE Autopilot cluster](/migrate/containers/docs/deploying-to-target-cluster)\n using `kubectl`:\n\n ```\n kubectl apply -f deployment_spec.yaml\n ```\n\n### Example: Deploying the Quickstart container on an Autopilot cluster\n\nUse the current [Quickstart](/migrate/containers/docs/quickstart) guide to migrate a container containing\na simple web server and then deploy it on an Autopilot cluster. The only changes\nthat you have to make to the Quickstart process are:\n\n1. In Step 3 of [Migrating the VM](/migrate/containers/docs/quickstart#migrating_the_vm), where you review\n the migration plan, set `v2kServiceManager` to `true` in the migration plan\n and then save the plan:\n\n ```yaml\n \n v2kServiceManager: true\n ```\n2. In the [Deploying the migrated workload](/migrate/containers/docs/quickstart#deploying_the_migrated_workload) section,\n create and connect to a GKE Autopilot cluster before you deploy the container:\n\n 1. Create a GKE Autopilot cluster:\n\n ```\n gcloud container clusters create-auto \"CLUSTER_NAME\"\n --project \"PROJECT_NAME\" --region \"REGION\" --release-channel \"regular\"\n --subnetwork \"projects/PROJECT_NAME/regions/us-central1/subnetworks/default\"\n ```\n 2. Connect to the cluster:\n\n ```\n gcloud container clusters get-credentials CLUSTER_NAME \n --zone REGION --project PROJECT_NAME \n ```\n 3. Deploy the container as described in the\n [Deploying the migrated workload](/migrate/containers/docs/quickstart#deploying_the_migrated_workload) section.\n\n### Changes to the AppXGenerateArtifactsFlow CRD\n\nIf you are using CRD files to control your migration, edit the [AppXGenerateArtifactsFlow](https://github.com/GoogleCloudPlatform/migrate-to-containers/blob/main/references/crds/m2c-crds.md#appxgenerateartifactsflow) CRD\nto set `v2kServiceManager` to `true`. See [Customizing a migration plan](/migrate/containers/docs/customizing-a-migration-plan#crd)\nfor more on using CRD files to control migration.\n\nWhat's next\n-----------\n\n- Learn how to [deploy containers to Cloud Run](/migrate/containers/docs/deploy-run)."]]