Migra desde una VM de Linux con Migrate to Containers

En esta guía de inicio rápido, crearás una máquina virtual (VM) de Compute Engine y, luego, usarás Migrate to Containers para migrar la VM a Google Kubernetes Engine (GKE).

Antes de comenzar

  1. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  2. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud. Obtén información sobre cómo verificar si la facturación está habilitada en un proyecto.

  3. Habilita la API de Compute Engine.

    Habilitar la API de Compute Engine

  4. Habilita la API de GKE:

    Habilita la API de GKE

  5. Para usar los ejemplos de la línea de comandos de esta guía, haz lo siguiente:

    1. Instala Google Cloud CLI o actualízala a la última versión.
    2. Configura una región y una zona predeterminadas.

Crea una VM de Compute Engine con un servidor web

En esta sección, se describe cómo crear una VM simple de Compute Engine que entrega un mensaje “Hello World!”, que puedes usar para realizar pruebas después de que se complete la migración.

  1. En la consola de Google Cloud, haz clic en Botón de activar ShellActivar CloudShell.

    Ir a la consola de Google Cloud

  2. Para crear una VM, ejecuta el siguiente comando:

    gcloud compute instances create quickstart-instance \
      --zone=us-central1-a --machine-type=e2-standard-2 \
      --subnet=default --scopes="cloud-platform" \
      --tags=http-server,https-server --image=ubuntu-minimal-1604-xenial-v20210119a \
      --image-project=ubuntu-os-cloud --boot-disk-size=10GB --boot-disk-type=pd-standard \
      --boot-disk-device-name=quickstart-instance
    
  3. Para crear una regla de firewall que permita solicitudes a la instancia a través de HTTP, ejecuta el siguiente comando:

    gcloud compute firewall-rules create default-allow-http \
     --direction=INGRESS --priority=1000 --network=default --action=ALLOW \
     --rules=tcp:80 --source-ranges=0.0.0.0/0 --target-tags=http-server
    
  4. En la consola de Google Cloud, ve a la página Instancias de VM.

    Ir a Instancias de VM

  5. Para conectarte a la VM quickstart-instance, ubica la fila de la VM y haz clic en SSH.

    La conexión se establece en una pestaña nueva.

  6. Para instalar el paquete apache2, en la pestaña nueva del comando quickstart-instance, ejecuta el siguiente comando:

    sudo apt-get update && sudo apt-get install apache2 -y
    
  7. Después de instalar Apache, el sistema operativo inicia el servidor Apache de forma automática.

  8. En la misma pestaña, para reemplazar la página web predeterminada de Apache Web Server por una página nueva, ejecuta el siguiente comando:

    echo '<!doctype html><html><body><h1>Hello World!</h1></body></html>' | sudo tee /var/www/html/index.html
    
  9. Vuelve a la página Instancias de VM y copia la dirección IP externa que se muestra para quickstart-instance.

  10. Pega la dirección IP de la VM en la barra de direcciones del navegador. Agrega el prefijo http://.

    Debería ver la página "Hello World!".

  11. En la página Instancias de VM, selecciona la casilla de verificación que se encuentra en el extremo izquierdo de la fila de quickstart-instance.

  12. Para detener la VM, haz clic en Detener en la parte superior de la página.

    Debes detener la VM antes de iniciar una migración. Puedes volver a iniciarla después de que se complete la migración.

Cree un clúster de procesamiento

En esta sección, crearás un clúster de GKE en Google Cloud que usarás como clúster de procesamiento.

  1. En la consola de Google Cloud, haz clic en Botón de activar ShellActivar CloudShell.

    Ir a la consola de Google Cloud

  2. Para crear un clúster de Kubernetes nuevo a fin de usarlo como un clúster de procesamiento, ejecuta el siguiente comando:

    gcloud container clusters create migration-processing \
     --zone=us-central1-a --machine-type e2-standard-4 \
     --image-type ubuntu_containerd --num-nodes 1 \
     --enable-stackdriver-kubernetes \
     --subnetwork "projects/PROJECT_ID/regions/us-central1/subnetworks/default"
    

    Reemplaza PROJECT_ID con el ID del proyecto.

    Espera unos minutos a que finalice la creación del clúster.

Instala Migrate to Containers

  1. En la consola de Google Cloud, ve a la página Migrate to Containers.

    Ir a Migrate to Containers

  2. Haz clic en la pestaña Clústeres de procesamiento y, luego, en Agregar clúster de procesamiento.

  3. En la lista Tipo de SO de las cargas de trabajo, selecciona Linux y haz clic en Siguiente.

  4. En la lista Seleccionar un clúster, selecciona migration-processing y haz clic en Siguiente.

  5. En la sección Configuración, deja los valores predeterminados tal como están y haz clic en Siguiente.

  6. En la sección Cuenta de servicio, selecciona Crear una cuenta de servicio nueva.

  7. En el campo Nombre de la cuenta de servicio, ingresa quickstart-sa1.

  8. Haz clic en Continuar y, luego, en Implementar.

    Espera unos minutos para que se complete la configuración del clúster de procesamiento.

Migra la VM de Compute Engine

En las siguientes secciones, debes especificar la fuente de migración como una VM de Compute Engine. En este paso, se agrega la especificación de origen al plan de migración. Luego, debes crear un plan de migración con los detalles de la migración y usarlo para migrar la VM.

Especifica la fuente de migración

  1. En la consola de Google Cloud, ve a la página Migrate to Containers.

    Ir a Migrate to Containers

  2. Haz clic en Agregar fuente.

  3. En la lista Seleccionar un clúster de procesamiento, selecciona migration-processing y haz clic en Siguiente.

  4. En el campo Nombre, ingresa quickstart-source.

  5. Deja el Tipo de origen como Compute Engine y haz clic en Siguiente.

  6. En el campo Proyecto, especifica el ID del proyecto que contiene la VM que deseas migrar.

  7. Selecciona Crear una cuenta de servicio nueva para crear una cuenta que te permita usar Compute Engine como fuente de migración.

  8. En el campo Nombre de la cuenta de servicio, ingresa quickstart-sa2.

  9. Haz clic en Continuar y, luego, en Agregar fuente.

Cree una migración

  1. En la consola de Google Cloud, ve a la página Migrate to Containers.

    Ir a Migrate to Containers

  2. Haz clic en Crear migración.

  3. En el campo Nombre de la migración, ingresa quickstart-migration.

  4. En la lista Seleccionar fuente, selecciona quickstart-source.

  5. En la lista Tipo de carga de trabajo, selecciona Contenedor del sistema Linux.

  6. En el campo Nombre de la instancia, ingresa quickstart-instance.

  7. Haz clic en Crear migración.

    La migración se agrega a la tabla Migraciones. Sin embargo, la creación de la migración puede tomar varios minutos en completarse. Cuando se completa, la columna Estado se actualiza en la tabla Migraciones.

Implementa la carga de trabajo migrada

A fin de generar los artefactos del contenedor de destino como parte del procesamiento de una VM para la migración, haz lo siguiente:

  1. En la consola de Google Cloud, ve a la página Migrate to Containers.

    Ir a Migrate to Containers

  2. Para quickstart-migration, en la columna Próximos pasos, selecciona Opciones: Generar artefactos. Cuando se generan los artefactos, se actualiza la columna Estado de la migración.

  3. Una vez que se complete la migración, haz clic en Botón de activar ShellActivar Cloud Shell.

  4. Para descargar los artefactos YAML generados, ejecuta el siguiente comando:

    migctl migration get-artifacts quickstart-migration
    

    El comando descarga los siguientes archivos que se generaron durante la migración:

    • deployment_spec.yaml: El archivo YAML que configura la carga de trabajo
    • Dockerfile: El Dockerfile que se usa para compilar la imagen de la VM migrada
    • migration.yaml: Una copia del plan de migración
    • blocklist.yaml: La lista de servicios de contenedor que deseas inhabilitar según tu configuración del plan de migración
  5. Para abrir el editor de Cloud Shell, haz clic en Abrir editor.

  6. Abre el archivo deployment_spec.yaml y ubica el objeto Service con el nombre quickstart-instance. Debería aparecer como se muestra a continuación:

    apiVersion: v1
    kind: Service
    metadata:
      creationTimestamp: null
      name: quickstart-instance
    spec:
      clusterIP: None
      selector:
        app: quickstart-instance
      type: ClusterIP
    status:
      loadBalancer: {}
    
    ---
    
  7. Debajo de la definición Service que se muestra arriba, pega la definición Service destacada en azul a continuación, que expone el puerto 80 para acceder a tu servidor web a través de HTTP:

    apiVersion: v1
    kind: Service
    metadata:
      creationTimestamp: null
      name: quickstart-instance
    spec:
      clusterIP: None
      selector:
        app: quickstart-instance
      type: ClusterIP
    status:
      loadBalancer: {}
    
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: hello-service
    spec:
      selector:
        app: quickstart-instance
      ports:
        - protocol: TCP
          port: 80
          targetPort: 80
      type: LoadBalancer
    
    ---
    

    Si es necesario, corrige la sangría de la definición Service en el archivo.

  8. Guarda el archivo.

  9. Haz clic en Abrir terminal.

  10. Para implementar la VM migrada, ejecuta el siguiente comando:

    skaffold run -d eu.gcr.io/PROJECT_ID
    

    Reemplaza PROJECT_ID con el ID del proyecto.

  11. Para obtener la dirección IP externa de la VM migrada, ejecuta el siguiente comando:

    kubectl get service hello-service
    

    Cuando el servidor web esté listo, verás una dirección IP externa para el hello-service que agregaste.

    kubectl get service hello-service
    NAME            TYPE           CLUSTER-IP      EXTERNAL-IP    PORT(S)        AGE
    hello-service   LoadBalancer   10.23.241.124   ##.##.###.##   80:32611/TCP   5m4s
    
  12. Para comprobar si la migración se realizó correctamente, abre una pestaña nueva del navegador y visita la página web en la dirección IP externa (asegúrate de usar HTTP y no HTTPS).

    http://##.##.###.##
    

    Si ves el texto Hello World! en la pantalla, la migración de VM se realizó de forma correcta.

    Si no puedes acceder a la carga de trabajo migrada, consulta cómo solucionar problemas conocidos.

Realiza una limpieza

Sigue estos pasos para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que usaste en esta página.

Borra la migración

  1. En la consola de Google Cloud, ve a la página Migrate to Containers.

    Ir a Migrate to Containers

  2. Haz clic en la pestaña Migraciones para ver una tabla con las migraciones disponibles.
  3. En quickstart-migration, haz clic en Borrar a la derecha de la tabla y, luego, selecciona Borrar migración.

Borra la fuente de migración

  1. En la consola de Google Cloud, ve a la página Migrate to Containers.

    Ir a Migrate to Containers

  2. Haz clic en Administrar fuentes para ver la lista de fuentes disponibles.
  3. En quickstart-source, haz clic en Borrar, en la parte derecha de la tabla.
  4. Para confirmar la eliminación, ingresa el texto que se muestra y haz clic en Borrar de nuevo.

Borra el clúster de GKE

  1. En la consola de Google Cloud, ve a la página Google Kubernetes Engine.

    Ir a Google Kubernetes Engine

  2. Selecciona migration-processing y, luego, haz clic en Borrar.
  3. Cuando se te solicite confirmación, haz clic en Borrar de nuevo.

Borra las cuentas de servicio

  1. En Google Cloud Console, ve a la página Cuentas de servicio.

    Ir a Cuentas de servicio

  2. Selecciona el proyecto en el que creaste las cuentas de servicio.
  3. Selecciona quickstart-sa1 y quickstart-sa2 y, luego, haz clic en Borrar.
  4. Cuando se te solicite confirmación, haz clic en Borrar de nuevo.

Borra la VM

  1. En la consola de Google Cloud, ve a la página Instancias de VM.

    Ir a Instancias de VM

  2. Haz clic en el nombre quickstart-instance.
  3. En la parte superior de la página de detalles de la instancia, haz clic en Borrar.

¿Qué sigue?