GSP682
Descripción general
Las instancias de VM pueden existir a nivel local (administradas por productos como VMware vSphere) y en nubes públicas (como AWS o Azure), además de las instancias de Google Cloud Compute Engine.
Anthos es una plataforma de aplicaciones de código abierto que te permite modernizar tus aplicaciones existentes en un entorno híbrido o de múltiples nubes. Puedes compilar VM nuevas y ejecutarlas en cualquier lugar de forma segura. Anthos usa las tecnologías de código abierto introducidas por Google, como Kubernetes, Istio y Knative, y brinda coherencia entre los entornos locales y de nube.
Cuando las cargas de trabajo se actualizan a contenedores, los departamentos de TI ya no deben encargarse del mantenimiento ni de los parches de seguridad a nivel del SO para las VM, y pueden automatizar las actualizaciones de políticas y seguridad a gran escala. La supervisión en entornos locales y en la nube se realiza a través de una única interfaz en la consola de Cloud.
Migrate to Containers proporciona una solución casi en tiempo real para tomar una VM existente y ponerla a disposición como un Pod alojado en Kubernetes con todos los valores asociados con la ejecución de tus aplicaciones en un clúster de Kubernetes.
En este lab, crearás una máquina virtual (VM) de Compute Engine simple y, luego, utilizarás Migrate to Containers para migrarla a un clúster de procesamiento de GKE en la nube.
Puedes realizar los pasos con la herramienta migctl
o con la consola de Cloud. migctl
es una herramienta de línea de comandos que se utiliza para configurar y administrar un entorno de migración de Migrate to Containers en Google Cloud. migctl
está disponible en Cloud Shell.
Migrate to Containers te permite crear contenedores más rápido que otras posibilidades de esta manera:
Objetivos
Aprenderás a realizar las siguientes tareas:
- Crear una instancia de Compute Engine que aloje un servidor web
- Crear un clúster de GKE para alojar la instancia migrada de Compute Engine
- Migrar la instancia de Compute Engine con Migrate to Containers
- Probar el servidor web existente en GKE
Configuración y requisitos
Antes de hacer clic en el botón Comenzar lab
Lee estas instrucciones. Los labs son cronometrados y no se pueden pausar. El cronómetro, que comienza a funcionar cuando haces clic en Comenzar lab, indica por cuánto tiempo tendrás a tu disposición los recursos de Google Cloud.
Este lab práctico te permitirá realizar las actividades correspondientes en un entorno de nube real, no en uno de simulación o demostración. Para ello, se te proporcionan credenciales temporales nuevas que utilizarás para acceder a Google Cloud durante todo el lab.
Para completar este lab, necesitarás lo siguiente:
- Acceso a un navegador de Internet estándar (se recomienda el navegador Chrome)
Nota: Usa una ventana de navegador privada o de Incógnito para ejecutar este lab. Así evitarás cualquier conflicto entre tu cuenta personal y la cuenta de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.
- Tiempo para completar el lab: Recuerda que, una vez que comienzas un lab, no puedes pausarlo.
Nota: Si ya tienes un proyecto o una cuenta personal de Google Cloud, no los uses en este lab para evitar cargos adicionales en tu cuenta.
Cómo iniciar tu lab y acceder a la consola de Google Cloud
-
Haga clic en el botón Comenzar lab. Si debe pagar por el lab, se abrirá una ventana emergente para que seleccione su forma de pago.
A la izquierda, se encuentra el panel Detalles del lab, que tiene estos elementos:
- El botón Abrir la consola de Google Cloud
- El tiempo restante
- Las credenciales temporales que debe usar para el lab
- Otra información para completar el lab, si es necesaria
-
Haz clic en Abrir la consola de Google Cloud (o haz clic con el botón derecho y selecciona Abrir el vínculo en una ventana de incógnito si ejecutas el navegador Chrome).
El lab inicia recursos y abre otra pestaña en la que se muestra la página de acceso.
Sugerencia: Ordene las pestañas en ventanas separadas, una junto a la otra.
Nota: Si ves el diálogo Elegir una cuenta, haz clic en Usar otra cuenta.
-
De ser necesario, copia el nombre de usuario a continuación y pégalo en el diálogo Acceder.
{{{user_0.username | "Username"}}}
También puedes encontrar el nombre de usuario en el panel Detalles del lab.
-
Haz clic en Siguiente.
-
Copia la contraseña que aparece a continuación y pégala en el diálogo Te damos la bienvenida.
{{{user_0.password | "Password"}}}
También puedes encontrar la contraseña en el panel Detalles del lab.
-
Haz clic en Siguiente.
Importante: Debes usar las credenciales que te proporciona el lab. No uses las credenciales de tu cuenta de Google Cloud.
Nota: Usar tu propia Cuenta de Google podría generar cargos adicionales.
-
Haga clic para avanzar por las páginas siguientes:
- Acepta los Términos y Condiciones.
- No agregues opciones de recuperación o autenticación de dos factores (esta es una cuenta temporal).
- No te registres para obtener pruebas gratuitas.
Después de un momento, se abrirá la consola de Google Cloud en esta pestaña.
Nota: Para ver un menú con una lista de productos y servicios de Google Cloud, haz clic en el menú de navegación que se encuentra en la parte superior izquierda.
Activa Cloud Shell
Cloud Shell es una máquina virtual que cuenta con herramientas para desarrolladores. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud. Cloud Shell proporciona acceso de línea de comandos a tus recursos de Google Cloud.
- Haz clic en Activar Cloud Shell en la parte superior de la consola de Google Cloud.
Cuando te conectes, habrás completado la autenticación, y el proyecto estará configurado con tu PROJECT_ID. El resultado contiene una línea que declara el PROJECT_ID para esta sesión:
Your Cloud Platform project in this session is set to YOUR_PROJECT_ID
gcloud
es la herramienta de línea de comandos de Google Cloud. Viene preinstalada en Cloud Shell y es compatible con la función de autocompletado con tabulador.
- Puedes solicitar el nombre de la cuenta activa con este comando (opcional):
gcloud auth list
-
Haz clic en Autorizar.
-
Ahora, el resultado debería verse de la siguiente manera:
Resultado:
ACTIVE: *
ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- Puedes solicitar el ID del proyecto con este comando (opcional):
gcloud config list project
Resultado:
[core]
project = <project_ID>
Resultado de ejemplo:
[core]
project = qwiklabs-gcp-44776a13dea667a6
Nota: Para obtener toda la documentación de gcloud
, consulta la guía con la descripción general de gcloud CLI en Google Cloud.
- Establece una variable de entorno para tu ID del proyecto:
export PROJECT_ID=$DEVSHELL_PROJECT_ID
Tarea 1. Crea una instancia de Compute Engine de origen
- Ejecuta el siguiente comando para crear y configurar una instancia de Compute Engine que actuará como el origen de la VM que se migrará:
gcloud compute instances create source-vm --zone={{{project_0.startup_script.lab_zone | zone}}} --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=source-vm \
--metadata startup-script={{{project_0.startup_script.metadata_script|METADATA_SCRIPT}}}
Instalaste el servidor web Apache y creaste una página web básica mediante la secuencia de comandos de inicio.
Resultado de muestra:
Created [https://www.googleapis.com/compute/beta/projects/qwiklabs-gcp-02-ace18e67a4ba/zones/{{{project_0.startup_script.lab_zone | zone}}}/instances/source-vm].
NAME: source-vm
ZONE: {{{project_0.startup_script.lab_zone | zone}}}
MACHINE_TYPE: e2-standard-2
PREEMPTIBLE:
INTERNAL_IP: 10.128.0.2
EXTERNAL_IP: 34.70.249.10
STATUS: RUNNING
- Crea una regla de firewall para permitir HTTP:
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
Resultado de muestra:
Creating firewall...working..Created [https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-04-1126b7a391de/global/firewalls/default-allow-http].
Creating firewall...done.
NAME: default-allow-http
NETWORK: default
DIRECTION: INGRESS
PRIORITY: 1000
ALLOW: tcp:80
DENY:
DISABLED: False
Haz clic en Revisar mi progreso para verificar el objetivo.
Crear una instancia de Compute Engine de origen
-
En Cloud Console, navega a Compute Engine > Instancias de VM, ubica la fila de la instancia que creaste y copia la dirección IP externa.
-
Pega la dirección IP de la instancia en la barra de direcciones del navegador. Agrégale el prefijo http://
.
Deberías ver la página “Hello World!”.
Para migrar la VM, primero detén su ejecución.
- En la consola de Cloud, navega a Compute Engine > Instancias de VM, marca la casilla de verificación a la izquierda de
source-vm
y, luego, haz clic en el botón DETENER en la parte superior.
Nota: Si no ves el botón Detener, selecciona el botón Más acciones (tres puntos verticales) y elige “detener” en el menú desplegable.
- Haz clic en Detener en la ventana emergente para confirmar el apagado. Puedes continuar con la siguiente sección mientras se apaga la VM.
Nota: La VM debe detenerse para que puedas migrarla. Puedes volver a iniciarla después de crear la migración usando la IU o el comando migctl migration create
.
Tarea 2. Crea un clúster de procesamiento
En los siguientes pasos, crearás un clúster de GKE en la nube que utilizarás como clúster de procesamiento. Allí, instalarás Migrate to Containers y ejecutarás la migración.
- En Cloud Shell, ejecuta el siguiente comando para crear un nuevo clúster de Kubernetes y utilizarlo como centro de procesamiento:
gcloud container clusters create migration-processing --project=$PROJECT_ID --zone={{{project_0.startup_script.lab_zone | zone}}} --machine-type e2-standard-4 --image-type ubuntu_containerd --num-nodes 3 --enable-stackdriver-kubernetes --subnetwork "projects/$PROJECT_ID/regions/{{{project_0.startup_script.lab_region | region}}}/subnetworks/default"
Nota: Asegúrate de especificar aquí la misma zona que especificaste cuando creaste la VM.
Resultado de muestra:
Creating cluster migration-processing in {{{project_0.startup_script.lab_zone | zone}}} ...done.
Created [https://container.googleapis.com/v1/projects/qwiklabs-gcp-04-1126b7a391de/zones/{{{project_0.startup_script.lab_zone | zone}}}/clusters/migration-processing].
To inspect the contents of your cluster, go to: https://console.cloud.google.com/kubernetes/workload_/gcloud/{{{project_0.startup_script.lab_zone | zone}}}/migration-processing?project=qwiklabs-gcp-04-1126b7a391de
kubeconfig entry generated for migration-processing.
NAME: migration-processing
LOCATION: {{{project_0.startup_script.lab_zone | zone}}}
MASTER_VERSION: 1.20.10-gke.301
MASTER_IP: 35.202.0.171
MACHINE_TYPE: e2-standard-4
NODE_VERSION: 1.20.10-gke.301
NUM_NODES: 3
STATUS: RUNNING
Haz clic en Revisar mi progreso para verificar el objetivo.
Crear un clúster de procesamiento
Tarea 3. Instala Migrate to Containers
Para permitir que Migrate to Containers acceda a Container Registry y Cloud Storage, debes crear una cuenta de servicio con el rol storage.admin
.
- En Cloud Shell, crea la cuenta de servicio
m4a-install
:
gcloud iam service-accounts create m4a-install \
--project=$PROJECT_ID
- Otorga el rol
storage.admin
a la cuenta de servicio:
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:m4a-install@$PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/storage.admin"
- Descarga el archivo de claves para la cuenta de servicio:
gcloud iam service-accounts keys create m4a-install.json \
--iam-account=m4a-install@$PROJECT_ID.iam.gserviceaccount.com \
--project=$PROJECT_ID
- Conéctate al clúster:
gcloud container clusters get-credentials migration-processing --zone {{{project_0.startup_script.lab_zone | zone}}}
- Configura los componentes de Migrate to Containers en tu clúster de procesamiento con la herramienta de línea de comandos
migctl
que incluye Migrate to Containers:
migctl setup install --json-key=m4a-install.json --gcp-project $PROJECT_ID --gcp-region {{{project_0.startup_script.lab_region | region}}}
- Valida la instalación de Migrate to Containers. Ejecuta el comando
migctl doctor
para verificar que la implementación se haya completado correctamente:
migctl doctor
Es posible que el comando demore más de un minuto en mostrar el resultado correcto que aparece a continuación.
Resultado de muestra:
[✓] Deployment
[✓] Docker registry
[✓] Artifacts repo
[x] Source Status
Nota: Source Status muestra [x] hasta que definas tu primera fuente de migración (más adelante).
- Vuelve a ejecutar el comando hasta que veas que la implementación se haya completado correctamente.
Tarea 4. Migra la VM
Ahora crearás un plan de migración con sus respectivos detalles y, luego, lo utilizarás para migrar la VM.
Para utilizar Compute Engine como una fuente de migración, primero debes crear una cuenta de servicio con las funciones de compute.viewer
y compute.storageAdmin
:
- En Cloud Shell, crea la cuenta de servicio
m4a-ce-src
:
gcloud iam service-accounts create m4a-ce-src \
--project=$PROJECT_ID
- Otorga el rol
compute.viewer
a la cuenta de servicio:
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:m4a-ce-src@$PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/compute.viewer"
- Otorga el rol
compute.storageAdmin
a la cuenta de servicio:
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:m4a-ce-src@$PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/compute.storageAdmin"
- Descarga el archivo de claves para la cuenta de servicio:
gcloud iam service-accounts keys create m4a-ce-src.json \
--iam-account=m4a-ce-src@$PROJECT_ID.iam.gserviceaccount.com \
--project=$PROJECT_ID
- Crea la fuente de migración:
migctl source create ce source-vm --project $PROJECT_ID --json-key=m4a-ce-src.json
m4a-ce-src.json
especifica la cuenta de servicio que creaste anteriormente.
Crea una migración
Para comenzar a migrar las VM, debes crear una migración. Esto da como resultado un objeto del plan de migración.
Una migración es el objeto central con el que realizas acciones de migración, supervisas sus actividades y su estado con la herramienta migctl o en la consola de Cloud. El objeto de migración se implementa como una definición de recurso personalizado (CRD) de Kubernetes.
A continuación, crearás una migración ejecutando la herramienta migctl
.
- Crea el plan de migración que defina qué migrar:
migctl migration create my-migration --source source-vm --vm-id source-vm --type linux-system-container
Resultado de muestra:
Migration my-migration was created. Run `migctl migration status my-migration` to see its status.
- Ejecuta el siguiente comando para verificar el estado:
migctl migration status my-migration
Cuando el estado de la migración sea Completed, puedes avanzar al paso siguiente.
NAME CURRENT-OPERATION PROGRESS STEP STATUS AGE
my-migration GenerateMigrationPlan [3/3] Discovery Completed 1m30s
Revisa el plan de migración
- En este lab, utilizarás el plan de migración predeterminado. Ahora descargarás el plan de migración solo para revisarlo:
migctl migration get my-migration
- Abre el archivo
my-migration.yaml
en tu editor de texto preferido o en el editor de código de Cloud Shell para revisarlo.
Si debes hacerle cambios, sube el plan nuevo con el comando migctl migration update my-migration
.
Tarea 5. Migra la VM mediante el plan de migración
- Con este comando, se migrará la VM y se generarán artefactos que puedes utilizar para implementar la carga de trabajo:
migctl migration generate-artifacts my-migration
Nota: Si el resultado es Error: Migration plan generation is not completed, vuelve a ejecutar el comando hasta que veas el siguiente resultado de muestra.
Resultado de muestra:
Generate Artifacts task started for Migration my-migration. Run `migctl migration status my-migration` to see its status.
- Tras comenzar la migración, ejecuta el siguiente comando para verificar su estado:
migctl migration status my-migration
La migración puede tardar varios minutos.
- Vuelve a ejecutar el comando hasta que su estado sea Completed.
NAME CURRENT-OPERATION PROGRESS STEP STATUS AGE
my-migration GenerateArtifacts [3/3] GenerateDeploymentFiles Completed 7m35s
- Puedes agregar la marca
-v
para determinar la verbosidad:
migctl migration status my-migration -v
Tarea 6. Implementa la carga de trabajo migrada
En los siguientes pasos, obtendrás los artefactos de implementación que generó durante la migración y luego los utilizarás para implementar la carga de trabajo migrada al clúster. Como último paso, confirmarás que la página web "Hello World!" esté disponible desde la aplicación migrada.
- Tras completar la migración, obtén los artefactos YAML generados:
migctl migration get-artifacts my-migration
El comando descarga los 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
-
Si el editor de Cloud Shell no está abierto, haz clic en el botón Abrir editor.
-
Abre el archivo deployment_spec.yaml y ubica el objeto Service
con el nombre source-vm
.
-
Debajo de la siguiente definición Service
, agrega otro Service
al final que exponga el puerto 80 para acceder al servidor web a través de HTTP:
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: source-vm
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer
Tu archivo debería verse así:
apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
name: source-vm
spec:
clusterIP: None
selector:
app: source-vm
type: ClusterIP
status:
loadBalancer: {}
---
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: source-vm
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer
-
Guarda el archivo.
-
Aplica deployment_spec.yaml
para implementar la carga de trabajo:
kubectl apply -f deployment_spec.yaml
Resultado de muestra:
deployment.apps/source-vm created
service/source-vm created
service/my-service created
Es posible que la implementación tarde unos minutos en completarse.
- Ahora busca una dirección IP externa:
kubectl get service
Resultado de muestra:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hello-service LoadBalancer 10.23.253.140 35.184.157.83 80:31060/TCP 11m
kubernetes ClusterIP 10.23.240.1 443/TCP 31m
my-service LoadBalancer 10.23.244.80 104.197.196.94 80:31026/TCP 2m3s
source-vm ClusterIP None 11m
Cuando el servidor web esté listo, verás una dirección IP externa para el servicio my-service
que agregaste.
Tarea 7. Prueba la migración
- Para probar la migración, abre un navegador y visita la página web en la dirección IP externa de
my-service
(asegúrate de utilizar HTTP en lugar de HTTPS).
Por ejemplo:
http://<my-service-external-IP>
Haz clic en Revisar mi progreso para verificar el objetivo.
Verificar la creación de my-service mediante la migración
¡Felicitaciones!
Migraste una instancia de Compute Engine a un Pod de Kubernetes con Migrate to Containers. Esta misma técnica puede utilizarse para otras fuentes de VM, incluidas VMware vSphere, AWS y Azure.
Finaliza la Quest
Este lab de autoaprendizaje es parte de la Quest VM Migration. Una Quest es una serie de labs relacionados que forman una ruta de aprendizaje. Si completas esta Quest, obtendrás una insignia como reconocimiento por tu logro. Puedes hacer públicas tus insignias y agregar vínculos a ellas en tu currículum en línea o en tus cuentas de redes sociales. Inscríbete en cualquier Quest que contenga este lab y obtén un crédito inmediato de finalización. Consulta el catálogo de Google Cloud Skills Boost para ver todas las Quests disponibles.
Realiza tu próximo lab
Próximos pasos/Más información
Finaliza el lab
Cuando completes el lab, haz clic en Finalizar lab. Tu cuenta y los recursos que usaste se quitaron de la plataforma del lab.
Tendrás la oportunidad de calificar tu experiencia en el lab. Selecciona la cantidad de estrellas que corresponda, ingresa un comentario y haz clic en Enviar.
La cantidad de estrellas indica lo siguiente:
- 1 estrella = Muy insatisfecho
- 2 estrellas = Insatisfecho
- 3 estrellas = Neutral
- 4 estrellas = Satisfecho
- 5 estrellas = Muy satisfecho
Puedes cerrar el cuadro de diálogo si no deseas proporcionar comentarios.
Para enviar comentarios, sugerencias o correcciones, usa la pestaña Asistencia.
Actualización más reciente del manual: 18 de noviembre de 2022
Prueba más reciente del lab: 6 de junio de 2022
Copyright 2025 Google LLC. All rights reserved. Google y el logotipo de Google son marcas de Google LLC. Los demás nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que estén asociados.