Migrate to Containers CLI release notes

This page documents production updates to Migrate to Containers CLI. You can periodically check this page for announcements about new or updated features, bug fixes, known issues, and deprecated functionality.

January 03, 2024

On January 03, 2024, we released version 1.4.1 of the Migrate to Containers modernization plugins which includes bug fixes for Tomcat migrations.

December 04, 2023

On December 04, 2023, we released Migrate to Containers CLI version 1.2.2.

Deprecated

The websphere-traditional plugin is now deprecated. For existing customers, this plugin is still supported till December 2023, after which it will no longer be available. If you're new to WebSphere workload modernization, then use the websphere-container plugin with the Migrate to Containers CLI instead.

November 02, 2023

On November 02, 2023, we released Migrate to Containers CLI version 1.2.1 which includes bug fixes.

October 30, 2023

On October 30, 2023, we released Migrate to Containers CLI version 1.2.0.

Features

Added support for migrating Linux applications offline

The Migrate to Containers CLI now supports working with no connection to the internet using the new offline mode. The offline mode lets you migrate Linux applications in an offline environment.

This is beneficial if your local environment, which includes the local and source machines and the deployment cluster, is located in a secured network that requires pre-approval and security scanning for downloading external files and binaries. With the offline mode, we've simplified the process of receiving software updates from external sources into a secured network by adding files bundling and unbundling options. In addition, you can specify a local and secured registry as source for artifacts required for the migrated application.

To set up for offline migrations, after you've downloaded Migrate to Containers CLI, perform the following steps:

  1. Download the offline Migrate to Containers CLI plugins bundle:

    curl -O https://storage.googleapis.com/modernize-plugins-prod/$(curl -s https://storage.googleapis.com/modernize-plugins-prod/latest)/m2c-offline-bundle-linux.tar
    
  2. If required, copy the Migrate to Containers CLI and offline Migrate to Containers CLI plugins bundle to the offline environment.

  3. Unpack the offline Migrate to Containers CLI plugins bundle:

    ./m2c plugins unpack -i m2c-offline-bundle-linux.tar
    

    To add support for offline data migration, specify a container registry that is available in your local network:

    ./m2c plugins unpack -i m2c-offline-bundle-linux.tar --registry HOSTNAME
    

    Replace HOSTNAME with the container registry hostname.

For more information, see Set up for offline migration.

August 22, 2023

On August 22, 2023, we released Migrate to Containers CLI version 1.1.0.

Features

Added support for Windows IIS services migration

The Migrate to Containers CLI now supports Windows IIS services migration. Migrating Windows IIS services requires running the Migrate to Containers CLI on a Windows machine.

To modernize Windows IIS services, follow these steps:

  1. Export the source VM disk images to VHD files.

    For example, to export an image from Compute Engine, first export the image to Cloud Storage, and then download the image on your local machine:

    gcloud compute images export \
        --export-format vhdx \
        --destination-uri DESTINATION_URI \
        --image IMAGE_NAME
    gsutil cp DESTINATION_URI LOCAL_PATH
    
  2. Analyze the disk images to create a migration plan:

    ./m2c analyze \
       -s PATH_TO_IMAGE \
       -p windows-iis-container \
       -o ANALYSIS_OUTPUT_PATH
    
  3. Edit the migration plan.

  4. Generate migration artifacts from the disk images and migration plan:

    ./m2c generate \
       -i ANALYSIS_PATH \
       -o OUTPUT_ARTIFACTS_PATH
    

Enhanced support for IBM WebSphere applications migration

IBM WebSphere support has been modified and expanded. The existing plugin supports WebSphere Application Server traditional as a migration source. A new plugin has been added to support WebSphere Application Server Liberty as a migration source.

Changes in IBM WebSphere Application Server traditional migration

The following changes have been made to the IBM WebSphere Application Server traditional migration:

  • The websphere-traditional-container plugin is now used for migrating IBM WebSphere Application Server traditional workloads.
  • Added support for WebSphere Application Server Liberty as a target.
  • The was-home parameter is now mandatory, even if you scan the source VM using mFit.

To migrate a IBM WebSphere Application Server traditional workload, run the following command:

./m2c analyze \
    -s PATH_TO_COPIED_FILESYSTEM \
    -p websphere-traditional-container -o ANALYSIS_OUTPUT_PATH \
    -r was-home=PATH_TO_WAS_HOME \
    --volume PATH_TO_BINARYAPPSCANNER:/binaryAppScanner.jar

For more information, see Create a migration plan for WebSphere traditional workloads.

Added support for IBM WebSphere Application Server Liberty migration

Modernization of WebSphere Application Server Liberty is now generally available with the websphere-container plugin.

To migrate IBM WebSphere Liberty workload, run the following command:

./m2c analyze \
    -s PATH_TO_COPIED_FILESYSTEM \
    -p websphere-container \
    -o ANALYSIS_OUTPUT_PATH \
    -r websphere-home=WEBSPHERE_HOME \
    -r websphere-java-home=WEBSPHERE_JAVA_HOME
    -r target-base-image=TARGET_BASE_IMAGE

For more information, see Create a migration plan for WebSphere Application Server Liberty workloads.

Updated the Tomcat plugin

The discovery parameters for the Tomcat plugin have been updated.

  • The java-version parameter is now added as input to Tomcat migrations.
  • The catalina-base parameter can now include multiple directories delimited with colons (:).
  • The java-version, catalina-base and catalina-home parameters are now required, even if you scan the source VM using mFit.

For more information, see Create a migration plan for Tomcat workloads.

Updated the Linux system container plugin

Linux system service endpoints are no longer automatically discovered and must be manually specified while customizing the Linux migration plan, even if you scan the source VM using mFit.

Fixed

In the earlier versions of Migrate to Containers CLI, the copy command could fail when trying to use a socket in the /tmp directory, which is automatically deleted in some systems. In this version, the defaults have changed, and to customize the socket location, you can set the SOCKDIR environment variable.

Issues

  • Skaffold build for Windows images might fail on a Windows machine because Skaffold tries to pull the base image for the wrong target.

    As a workaround for this issue, pull the image manually with the docker pull command, and run the Skaffold build again.

  • The deployment of Windows IIS workloads might be marked as not ready due to short timeouts. If you're deploying your workloads using Skaffold, then the deployment might show as failed.

    As a workaround for this issue, increase the readiness probe timeout and period using PowerShell:

    foreach ($file in (Get-ChildItem . -Recurse -Include "deployment_spec.yaml")) { (Get-Content $file).replace("periodSeconds: 10", "periodSe
    conds: 30").replace("timeoutSeconds: 1", "timeoutSeconds: 10") | Set-Content $file }
    

June 27, 2023

On June 27, 2023, we released Migrate to Containers CLI version 1.0.0.

Features

Upgraded Skaffold API version

Migrate to Containers CLI now generates the Skaffold configuration with the Skaffold API version v4beta4 instead of version v2beta25.

Added support for Linux VM containerization

Migrate to Containers CLI now lets you migrate Linux VMs to system containers. It discovers the source application files and processes them to generate migration artifacts, which include a Dockerfile, Kubernetes manifest, and automated deployment scripts based on Skaffold.

Migrate to Containers CLI uses a prebuilt Linux system container which functions as a boot loader for the services required by the modernized application. With Migrate to Containers CLI, you can modernize a wide range of stateless Linux-based applications to run on GKE, Cloud Run, or GKE Enterprise clusters.

For more information, see Create a migration plan for a Linux VM container.

Enhanced the copy operation

The following improvements to the copy operation are now available:

  • The Migrate to Containers CLI copy operation now uses a local container to copy the source VM file system into a local directory instead of using a local tar file. This enhancement eliminates the need to install rsync on your local machine and reduces the disk space required for copying the source machine's file system.

  • In case of failures, Migrate to Containers CLI now continues the copy process from the point of failure.

For more information, see Copy the source machine's file system.

Added the ability to clean up the copied file system

After your migration is complete, you can use the new cleanup command to remove the copy of the source machine's file system that you created with the copy command on your local machine without facing any permission issues.

For more information, see Clean up your local machine.

Added support for data migration

After executing a migration, you can now copy data directories into a new or an existing persistent volume claim (PVC) on the target cluster with the new migrate-data command.

This step is required in cases where you might need to migrate persistent data directories from the source VM to persistent volumes mounted on the target container.

For more information, see Migrate data.

June 13, 2023

On June 13, 2023, we announced that Migrate to Containers CLI is now generally available.

The Migrate to Containers CLI lets you modernize application components running on VMs to containers running on GKE, GKE Autopilot, Cloud Run, or GKE Enterprise clusters.

For more information , see Shift your applications to container-based workloads on the command-line | Google Cloud Blog.

May 2, 2023

On May 2, 2023 we released Migrate to Containers CLI version 0.2.0 in preview. The Migrate to Containers CLI lets you modernize application components running on VMs to containers running on GKE, GKE Autopilot, Cloud Run, or GKE Enterprise clusters. The tool offers a simplified flow which is comprised of 4 main steps:

  1. Copy application files from a source VM using SSH or gcloud CLI.
  2. Analyze the local copy of the application files to generate a migration plan.
  3. Edit the migration plan files to customize the migration plan.
  4. Generate artifacts required as container image, deployment YAML, and Skaffold configuration file.

For more information, see About Migrate to Containers | Google Cloud.

Features

Copy source application files

Copy your application files from a remote VM on-premises using SSH, or from a VM running on Google Cloud using gcloud CLI.

Analyze application files for modernization changes

Analyze application binaries and configuration files, and generate migration plan file report and migration plan using parameters extracted from the copied files.

Generate application artifacts to run as a container

Generate artifacts that you require to run the application as a container with a Skaffold configuration file which lets you automate the deployment of the generated artifacts on your target cluster.

Supported modernization flows

With the new Migrate to Containers CLI, you can work on your application modernization at your local environment and deploy the generated artifacts directly on a local or remote cluster.

The Migrate to Containers CLI supports the following modernization flows:

  • Tomcat application to container that uses a community base image
  • Apache application to container that uses a community base image
  • IBM JBoss application to container that uses a community WildFly base image
  • IBM Websphere Application Server traditional to container that uses an IBM WebSphere Application Server traditional image
  • IBM Websphere Application Server traditional to container that uses a Open Liberty container image