Migra contenedores a Google Cloud: comienza ahora

Con este documento, podrás planificar, diseñar e implementar la migración de tus contenedores a Google Cloud. Si se hace de forma incorrecta, mover las cargas de trabajo de un entorno a otro puede ser una tarea desafiante, por lo que debes planificar y ejecutar la migración con cuidado.

Este documento es parte de una serie de varias partes sobre la migración a Google Cloud. Si te interesa ver una descripción general de la serie, consulta Migración a Google Cloud: elige tu ruta de migración.

Este documento es parte de una serie en la que se analiza la migración de contenedores a Google Cloud:

Este documento es útil para una gran variedad de situaciones, ya sea que comiences con contenedores que se ejecutan de manera local, en un entorno de hosting privado o en otro proveedor de servicios en la nube, o si migras toda tu carga de trabajo a Google Cloud, o bien mantienes parte de ella en un entorno local o en uno de hosting privado.

Este documento también es útil si estás evaluando la posibilidad de migrar y deseas explorar cómo podría ser y qué opciones tienes. En Google Cloud, hay varios tipos de entornos disponibles para que un contenedor ejecute cargas de trabajo. Elegir una opción por sobre otras depende de varios factores, y ninguna opción es intrínsecamente mejor que las otras. Cada entorno tiene sus propias fortalezas y debilidades. Para elegir un entorno, haz lo siguiente:

  1. Establece un conjunto de criterios a fin de evaluar los entornos de contenedores para ejecutar cargas de trabajo.
  2. Evalúa cada entorno en función de los criterios de evaluación.
  3. Elige el entorno que mejor se adapte a tus necesidades.

No es necesario que elijas el mismo entorno para todas tus cargas de trabajo. Si tienes diferentes tipos o clases de cargas de trabajo, puedes elegir diferentes entornos para cada uno de esos tipos o esas clases.

Diseña la migración a Google Cloud

Para migrar los contenedores de tu entorno de origen a Google Cloud, te recomendamos que sigas el framework descrito en la serie de Migración a Google Cloud.

En el siguiente diagrama, se ilustra la ruta del recorrido de tu migración.

Ruta de migración con cuatro fases

El framework que se ilustra en el diagrama anterior consta de las siguientes cuatro fases:

  1. Evaluación. En esta fase, debes evaluar tu entorno de origen, examinar las cargas de trabajo que deseas migrar a Google Cloud y evaluar qué entornos son compatibles con cada una de ellas.
  2. Planificación. En esta fase, debes crear la infraestructura básica para tus cargas de trabajo. Para ello, tienes que aprovisionar la jerarquía de recursos y configurar el acceso a la red.
  3. Implementación. En esta fase, debes migrar los contenedores del entorno de origen a Google Cloud.
  4. Optimización. En esta fase, debes comenzar a aprovechar las tecnologías y capacidades de la nube.

Establece los criterios para evaluar los entornos de contenedores a fin de ejecutar cargas de trabajo.

A fin de establecer los criterios para evaluar los entornos de contenedores para ejecutar cargas de trabajo, considera las características más importantes que necesitas en estos entornos. Para recopilar información sobre las características que más necesitas, evalúa tus cargas de trabajo. Para obtener más información sobre cómo evaluar tus cargas de trabajo, consulta Migración a Google Cloud: evalúa y descubre tus cargas de trabajo.

Estos criterios de evaluación y el orden en el que se enumeran son un ejemplo. Debes evaluar tus cargas de trabajo a fin de crear una lista con los criterios que son importantes para ti y para ellas, y ordenarlos según su importancia. Por ejemplo, después de evaluar las cargas de trabajo, puedes considerar los siguientes criterios de evaluación, que se muestran según su importancia:

  1. Rendimiento. ¿El entorno agrega una sobrecarga que puede degradar el rendimiento de tus cargas de trabajo?
  2. Escalabilidad. ¿Qué características de escalabilidad ofrece el entorno? ¿Son suficientes los requisitos de escalabilidad de tus cargas de trabajo en cuanto a los tiempos de reacción y la lógica de escalabilidad?
  3. Grado de control y flexibilidad. ¿Cuánto control quieres tener sobre el entorno? ¿Puedes personalizar el entorno según tus necesidades?
  4. Confiabilidad. ¿Qué garantías ofrece el entorno? ¿Son suficientes para tus cargas de trabajo? ¿El entorno es lo suficientemente confiable como para implementar estrategias eficaces de alta disponibilidad y recuperación ante desastres?
  5. Carga en la administración. ¿Cuánto esfuerzo debes invertir para administrar el entorno? ¿Necesitas capacitar a tus equipos para que recopilen las habilidades necesarias o puedes usar sus conocimientos existentes?
  6. Requisitos para usar el servicio. ¿Existen requisitos, interfaces o contratos técnicos que tus cargas de trabajo deben seguir? ¿Necesitas dedicar un esfuerzo significativo para que tu carga de trabajo sea compatible con el entorno?
  7. Persistencia de datos. ¿El entorno de contenedor en el que es ejecutarán las cargas de trabajo admite la persistencia de datos? ¿Esta persistencia es compatible con los requisitos de las cargas de trabajo, incluidos el rendimiento, la confiabilidad y las normativas legales?
  8. Costos y modelo de precios. ¿Es posible usar el entorno de manera rentable? ¿Puedes obtener un retorno de la inversión adecuado por cambiarte a un entorno de contenedores para ejecutar cargas de trabajo?
  9. Preparación para el futuro. ¿El entorno ofrece rutas de actualización que puedes usar para que tus tus cargas de trabajo evolucionen?
  10. Integración en otros servicios. ¿El entorno se integra en otros servicios de Google Cloud y en otros servicios de proveedores de servicios en la nube?
  11. Dependencia. ¿El entorno depende de tecnologías, paradigmas o tecnologías particulares? ¿El entorno afecta la portabilidad de tus cargas de trabajo?
  12. Seguridad. ¿El entorno cumple con tus requisitos de seguridad y privacidad?

Evalúa el entorno del contenedor para ejecutar cargas de trabajo

En Google Cloud, tienes diferentes opciones para ejecutar contenedores. Para elegir la mejor opción para tus cargas de trabajo, primero debes evaluarlas según los criterios de evaluación que estableciste. Debes asignar una puntuación a cada entorno por cada criterio de evaluación con una escala ordenada arbitraria. Por ejemplo, puedes asignar a cada entorno una puntuación de una escala de 1 a 10 por cada criterio de evaluación.

Para ejecutar contenedores en Google Cloud, recomendamos las siguientes opciones, que se presentan en orden creciente según el control que tienes en la infraestructura subyacente:

  1. Entorno flexible de App Engine
  2. Cloud Run y Cloud Run for Anthos
  3. Google Kubernetes Engine (GKE) y clústeres de Anthos
  4. Compute Engine

Para asignar puntuaciones basadas en algunos de los criterios, lee la documentación del producto. Por ejemplo, puedes evaluar el entorno flexible de App Engine según los criterios de rendimiento, escalabilidad, grado de control y flexibilidad, integración en otros servicios y dependencia. Sin embargo, para asignar puntuaciones basadas en otros criterios, es posible que debas diseñar y ejecutar comparativas y simulaciones más detalladas. Por ejemplo, podrías tener que realizar una comparativa sobre el rendimiento de diferentes entornos de ejecución de contenedores para evaluar si agregan una sobrecarga considerable a tus cargas de trabajo.

Entorno flexible de App Engine

El entorno flexible de App Engine te permite ejecutar una implementación de un entorno de ejecución flexible que puedes personalizar según tus necesidades, a partir de una conjunto predefinido de imágenes de contenedor. Luego, las instancias alojadas en contenedores de tus cargas de trabajo se ejecutan en máquinas virtuales (VM) administradas de Compute Engine.

Utiliza la siguiente lista para evaluar el entorno flexible de App Engine en función de los criterios que estableciste antes:

  1. Rendimiento. El entorno flexible de App Engine usa contenedores de Docker, que tienen un rendimiento similar al de las cargas de trabajo no alojadas en contenedores, por lo que los contenedores no agregan una sobrecarga significativa al rendimiento.
  2. Escalabilidad. El entorno flexible de App Engine es más adecuado para aplicaciones que reciben tráfico constante y que experimentan fluctuaciones de tráfico regulares y mayormente predecibles. El entorno flexible de App Engine tiene un tiempo de inicio de instancia que se mide en minutos y te permite reducir la escala de las instancias de tus cargas de trabajo a una sola instancia. Si necesitas un entorno que reduzca la escala a cero instancias, te recomendamos que elijas una de las otras opciones.
  3. Grado de control y flexibilidad. El entorno flexible de App Engine es útil cuando necesitas ejecutar un servicio web que el entorno estándar no admite y cuando necesitas personalizar un entorno predefinido. El entorno flexible de App Engine no te permite personalizar las VM subyacentes de Compute Engine, por lo que, si necesitas controlar la infraestructura subyacente, te recomendamos que elijas una de las otras opciones.
  4. Confiabilidad. Las VM de Compute Engine que ejecutan tus cargas de trabajo alojadas en contenedores se administran completamente y su estado se verifica constantemente. Las VM se actualizan de forma continua con actualizaciones del sistema operativo y parches de seguridad, y se reinician todas las semanas. No necesitas preocuparte por la confiabilidad del entorno, así que puedes enfocarte en la confiabilidad de tus cargas de trabajo.
  5. Carga en la administración. El entorno flexible de App Engine ejecuta tus cargas de trabajo alojadas en contenedores en VM de Compute Engine completamente administradas, por lo que no necesitas dedicarte a administrar el entorno de contenedores para ejecutar cargas de trabajo.
  6. Requisitos para usar el servicio. Para ejecutarse en el entorno flexible de App Engine, tus cargas de trabajo deben cumplir con un conjunto de reglas que se explican en Compila entornos de ejecución personalizados. Por ejemplo, la carga de trabajo debe escuchar en el puerto 8080 y debe controlar ciertas señales de POSIX. Si no es posible dedicar más esfuerzo para que tus cargas de trabajo sean compatibles con el entorno flexible de App Engine, recomendamos elegir una de las otras opciones. Para obtener más información sobre las limitaciones del entorno flexible de App Engine, consulta los problemas conocidos del entorno flexible de App Engine.
  7. Persistencia de los datos. El entorno flexible de App Engine admite el almacenamiento efímero cuando inicializas un disco cada vez que se inicia una VM de Compute Engine. Si las cargas de trabajo tienen requisitos de persistencia de datos, analízalos con cuidado para evaluar si también necesitas un servicio externo de persistencia de datos.
  8. Costos y modelo de precios. El costo del entorno flexible de App Engine incluye los recursos de VM de Compute Engine que tus cargas de trabajo usan.
  9. Preparación para el futuro. El entorno flexible de App Engine te permite compilar entornos personalizados para tus cargas de trabajo alojadas en contenedores. Puedes usar esta característica para las rutas de actualización y las canalizaciones de implementación que necesitas para tus cargas de trabajo. Por ejemplo, puedes actualizar los componentes preinstalados en las imágenes base del entorno flexible de App Engine para que coincidan con las versiones que necesitas.
  10. Integración en otros servicios. El entorno flexible de App Engine se integra en otras API y servicios de Google Cloud.
  11. Dependencia. El entorno flexible de App Engine requiere que alojes tus cargas de trabajo en contenedores a partir de un conjunto de imágenes de contenedores predefinidas. Es posible que debas considerar invertir un esfuerzo adicional para refactorizar tus imágenes de contenedor si migras del entorno flexible de App Engine a otro servicio.
  12. Seguridad. Las cargas de trabajo que se ejecutan en el entorno flexible de App Engine se valen de dos capas de aislamiento: la capa de Docker y la capa de Compute Engine. También puedes proteger las cargas de trabajo que se ejecutan en el entorno flexible de App Engine con las solicitudes HTTPS, el control de acceso, el firewall de App Engine y el Web Security Scanner.

Para obtener más información, consulta Elige un entorno de App Engine.

Cloud Run y Cloud Run for Anthos

Cloud Run es una plataforma administrada que sirve para ejecutar cargas de trabajo en contenedores sin estado y compiladas en Knative. Las cargas de trabajo en contenedores administradas por Cloud Run pueden ejecutarse en los siguientes casos:

  • Si eliges Cloud Run, tus cargas de trabajo se ejecutan en la infraestructura administrada por Google.
  • Si eliges Cloud Run for Anthos, tus cargas de trabajo se ejecutan en GKE, que puede estar en Google Cloud, en un entorno local o en otros proveedores de servicios en la nube.

Usa la siguiente lista para evaluar Cloud Run y Cloud Run for Anthos con los criterios que estableciste antes:

  1. Rendimiento. Cloud Run y Cloud Run for Anthos usan contenedores de Docker, que tienen un rendimiento similar al de las cargas de trabajo no alojadas en contenedores, por lo que los contenedores no agregan una sobrecarga significativa al rendimiento.
  2. Escalabilidad. Cloud Run escala automáticamente las instancias de tus cargas de trabajo y te permite reducir la escala de tu aplicación a cero instancias. Esta capacidad es útil si tus cargas de trabajo no necesitan tener instancias que se ejecuten todo el tiempo. Para minimizar el tiempo de inicio de la instancia, optimiza la inicialización de tus cargas de trabajo.
  3. Grado de control y flexibilidad. Cloud Run y Cloud Run for Anthos son adecuados para las cargas de trabajo que requieren control total del entorno alojado en contenedores en el que se ejecutan tus cargas de trabajo, pero que no necesitan personalización.
  4. Confiabilidad. Cloud Run y Cloud Run para Anthos se integran en Cloud Monitoring, Cloud Logging, Registros de auditoría de Cloud y Error Reporting para que puedas supervisar el rendimiento y acceder los registros de los contenedores, las solicitudes, los errores y las auditorías.
  5. Carga en la administración. Cloud Run y Cloud Run for Anthos administran el entorno para que puedas enfocarte en tus cargas de trabajo en lugar de invertir esfuerzo en aprovisionar, configurar y mantener la infraestructura subyacente.
  6. Requisitos para usar el servicio. Tus cargas de trabajo deben cumplir con un contrato de entorno de ejecución del contenedor, por lo que si no puedes invertir más esfuerzo para que sean compatibles con Cloud Run, recomendamos elegir una de las otras opciones. Para obtener más información sobre las limitaciones de Cloud Run, consulta los problemas conocidos de Cloud Run.
  7. Persistencia de datos. Cloud Run y Cloud Run for Anthos están diseñados para ejecutar contenedores sin estado. Si tus cargas de trabajo tienen requisitos de persistencia de datos, debes aprovisionar y configurar otro sistema de persistencia de datos. Si necesitas un entorno de ejecución de contenedores para cargas de trabajo con estado, te recomendamos que elijas una opción diferente.
  8. Costos y modelo de precios. Cloud Run cobra por los recursos de procesamiento que tus cargas de trabajo usan. Cloud Run for Anthos se incluye en la suscripción a Anthos.
  9. Preparación para el futuro. Cloud Run te permite realizar reversiones, lanzamientos graduales y migraciones de tráfico. Puedes usar estas características para tus canalizaciones de implementación.
  10. Integración en otros servicios. Cloud Run puede conectarse a una red de nube privada virtual (VPC) que permita el acceso a las VM de Compute Engine y a cualquier otro recurso con direcciones IP internas.
  11. Dependencia. Cloud Run está compilado en Knative. Si te dedicas a que tus cargas de trabajo sean compatibles con Knative, puedes ejecutar tus cargas de trabajo alojadas en contenedores en los clústeres de Cloud Run, en GKE, en los clústeres de Anthos alojados en VMware o en cualquier otro entorno de ejecución compatible con Knative tener que realizar modificaciones adicionales.
  12. Seguridad. Las cargas de trabajo que se ejecutan en Cloud Run se colocan en una zonas de pruebas con gVisor. Cloud Run for Anthos no usa ninguna zona de pruebas del contenedor, pero usa las funciones predeterminadas de aislamiento de contenedores de Kubernetes. Para proteger los recursos de Cloud Run, administra el acceso con Identity and Access Management (IAM) y configura una identidad de servicio.

Para obtener más información, consulta Elige una plataforma de Cloud Run.

Clústeres de GKE y Anthos

Los clústeres de GKE y Anthos son servicios administrados por Google que proporcionan un entorno de contenedor para ejecutar cargas de trabajo. Los clústeres de GKE y Anthos ejecutan tus cargas de trabajo alojadas en contenedores en los clústeres de Kubernetes. Con GKE, los clústeres se ejecutan en Google Cloud, y con los clústeres de Anthos, los clústeres pueden ejecutarse en Google Cloud, de manera local o en otros entornos de nube pública.

Usa la siguiente lista para evaluar los clústeres de GKE y Anthos según los criterios que estableciste con anterioridad:

  1. Rendimiento. Los clústeres de GKE y Anthos usan contenedores de Docker, que tienen un rendimiento similar al de las cargas de trabajo no alojadas en contenedores, por lo que los contenedores no agregan una sobrecarga significativa al rendimiento.
  2. Escalabilidad. Los clústeres de GKE y Anthos incluyen una lógica de escalamiento precisa que puedes adaptar a tus propias necesidades. Puedes escalar las cargas de trabajo y los clústeres de GKE y Anthos de manera vertical y horizontal. Si no necesitas una lógica compleja de escalamiento, te recomendamos que elijas una opción diferente, ya que, de lo contrario, deberás dedicar un esfuerzo significativo a configurar mecanismos de escalabilidad eficaces.
  3. Grado de control y flexibilidad. Puedes aprovisionar y configurar clústeres de GKE y Anthos según tus necesidades. Puedes personalizar todos los aspectos de los nodos del clúster, incluidos el almacenamiento, las herramientas de redes y la seguridad. Google administra el plano de control por ti, de modo que si necesitas personalizar su configuración, te recomendamos que elijas una opción diferente.
  4. Confiabilidad. Los clústeres de GKE y Anthos se integran en Cloud Monitoring y Cloud Logging para que puedas supervisar completamente el rendimiento y el acceso a los registros de los contenedores, las solicitudes, los errores y las auditorías. Puedes aumentar la confiabilidad de tu entorno con los clústeres regionales de GKE y las opciones de alta disponibilidad de los clústeres de Anthos.
  5. Carga en la administración. Con GKE, no necesitas administrar el plano de control de tus clústeres, y los clústeres de Anthos te permiten administrar todos los clústeres de Kubernetes con la misma cadena de herramientas y los mismos procesos. Esta función reduce en gran medida el esfuerzo que necesitas para administrar el entorno, pero debes administrar parte de la infraestructura subyacente. Por ejemplo, con GKE, puedes administrar nodos de clústeres. La mayoría de las operaciones de administración se pueden automatizar, pero es algo que debes tener en cuenta cuando planifiques cuánto esfuerzo debes dedicar para mantener el entorno. Si necesitas un entorno de contenedor completamente administrado para ejecutar cargas de trabajo, recomendamos que elijas una opción diferente.
  6. Requisitos para usar el servicio. Para implementar tus cargas de trabajo en clústeres de GKE o Anthos, debes alojarlas en contenedores.
  7. Persistencia de los datos. GKE y Anthos pueden ejecutar aplicaciones con estado y almacenamiento en discos persistentes.
  8. Costos y modelo de precios. GKE cobra una tarifa por la administración de clústeres y por los recursos que los nodos del clúster usan. Los clústeres de Anthos se incluyen en la suscripción a Anthos.
  9. Preparación para el futuro. Los clústeres de GKE y Anthos cuentan con las funciones para manejar procesos de implementación complejos.
  10. Integración en otros servicios. Las cargas de trabajo implementadas en clústeres de GKE y Anthos pueden tener acceso a otros servicios de Google Cloud si configuras los sistemas necesarios de conectividad, autenticación y autorización.
  11. Dependencia. Después alojar tus cargas de trabajo en contenedores para que se ejecuten en clústeres de GKE o Anthos, puedes transferirlas a otros entornos realizando ajustes menores. Kubernetes es una plataforma portátil que no te retiene en el entorno de un proveedor.
  12. Seguridad. GKE ofrece muchos métodos para proteger los nodos, el plano de control y las cargas de trabajo:

Consulta la descripción general de la seguridad de GKE para obtener más información.

Para obtener más información sobre la migración a clústeres de GKE y Anthos, consulta Migra contenedores a Google Cloud: migra de Kubernetes a GKE y Migra contenedores a Google Cloud: migra de OpenShift a Anthos

Compute Engine

Compute Engine te permite crear y ejecutar VM en la infraestructura de Google.

Si bien es posible ejecutar contenedores en las VM de Compute Engine, recomendamos que elijas uno de los otros entornos de contenedor para ejecutar las cargas de trabajo que se describen en este documento. El esfuerzo que debes dedicar para operar un entorno autoadministrado que se ejecuta en Compute Engine supera considerablemente los beneficios que podrías obtener.

Sin embargo, si eliges ejecutar contenedores en las VM de Compute Engine, usa la siguiente lista para evaluar Compute Engine en función de los criterios que estableciste antes:

  1. Rendimiento. Las VM de Compute Engine no tienen ningún entorno de ejecución de contenedores preinstalado, así que elige la que mejor se adapte a tus requisitos.
  2. Escalabilidad. Compute Engine usa grupos de instancias administrados para escalar de forma automática las instancias de VM. Cuando configuras los mecanismos de ajuste de escala automático de un grupo de instancias administrado, debes definir los indicadores de ajuste de escala automático que Compute Engine usará para aumentar o reducir la escala del grupo de instancias administrado.
  3. Grado de control y flexibilidad. Puedes personalizar todos los aspectos del aprovisionamiento y la configuración de todas las VM de Compute Engine, siempre y cuando cumplas con las cuotas de recursos de Compute Engine.
  4. Confiabilidad. Puedes supervisar las VM de Compute Engine con Cloud Monitoring, Cloud Logging y los Registros de auditoría de Cloud para que puedas supervisar completamente el rendimiento y los registros. Compute Engine también aprovecha los grupos de instancias administrados, la verificación de estado de las instancias y la reparación automática.
  5. Carga en la administración. Las VM de Compute son autoadministradas, por lo que debes planificar un esfuerzo operativo considerable para administrar el entorno de forma efectiva.
  6. Requisitos para usar el servicio. Si tus cargas de trabajo se ejecutan en uno de los sistemas operativos compatibles, puedes ejecutarlas en las VM de Compute Engine. Para obtener más información sobre las limitaciones de Compute Engine, consulta Problemas conocidos de Compute Engine.
  7. Persistencia de los datos. Compute Engine tiene diferentes opciones para la persistencia de datos, como los discos persistentes zonales, los discos persistentes regionales y las unidades de estado sólido locales.
  8. Costos y modelo de precios. Compute Engine cobra por los recursos que tus cargas de trabajo necesitan.
  9. Preparación para el futuro. Puedes instalar cualquier herramienta de integración, implementación, aprovisionamiento o configuración de administración en las VM de Compute Engine para tus procesos de implementación.
  10. Integración en otros servicios. Las cargas de trabajo implementadas en Compute Engine pueden tener acceso a otros servicios de Google Cloud si configuras los sistemas necesarios de conectividad, autenticación y autorización.
  11. Dependencia. Cuando usas Compute Engine, no estás limitado a ningún producto o servicio privado. Puedes compilar tus propias imágenes de sistema operativo para que tus procesos de aprovisionamiento y configuración sean automatizados y portátiles.
  12. Seguridad. Compute Engine ayuda a mejorar la seguridad del entorno:

Para obtener más información, consulta Protege Google Cloud.

Elige la opción correcta para tu entorno de destino

En las secciones anteriores, asignaste un valor a cada criterio para cada producto. A fin de calcular la puntuación total de cada entorno de contenedor para ejecutar cargas de trabajo, agrega todas las calificaciones de ese entorno basadas en los criterios. Por ejemplo, si un entorno obtuvo 10 puntos en el criterio de rendimiento y 6 en el criterio de escalabilidad, la puntuación total de ese entorno será 16.

También puedes asignar pesos diferentes a la puntuación de cada criterio a fin de representar la importancia que cada uno de ellos tiene en tu evaluación. Por ejemplo, si el rendimiento es más importante que la escalabilidad en tu evaluación, podrías definir multiplicadores para reflejar eso: un multiplicador de 1.0 para rendimiento y uno de 0.7 para la escalabilidad. Luego, usa estos multiplicadores para calcular la puntuación total de una opción.

Después de calcular la puntuación total de cada entorno que evaluaste, debes organizar los entornos según su puntuación total, en orden descendente. Luego, elige la opción con la puntuación más alta como tu entorno.

Existen varias formas de representar estos datos, por ejemplo, puedes visualizar los resultados con un gráfico adecuado para representar los datos de variables múltiples, como un gráfico radial.

¿Qué sigue?