Migra contenedores a Google Cloud: Migra de Kubernetes a GKE

Last reviewed 2024-06-22 UTC

Mediante este documento, podrás planificar, diseñar y, también, implementar tu migración desde un entorno de Kubernetes autoadministrado en Google Kubernetes Engine (GKE). Si se hace de forma incorrecta, mover las aplicaciones de un entorno a otro puede ser una tarea desafiante, por lo que debes planificar y ejecutar tu migración con cuidado.

Este documento resulta útil si planeas migrar de un entorno de Kubernetes autoadministrado a GKE. Es posible que tu entorno se ejecute en un entorno local, en un entorno de hosting privado o en otro proveedor de servicios en la nube. Este documento también te resultará útil si estás evaluando la posibilidad de migrar y deseas explorar cómo podría ser.

GKE es un servicio de Kubernetes administrado por Google que puedes usar para implementar y operar aplicaciones alojadas en contenedores a gran escala con la infraestructura de Google. Además, proporciona funciones que te ayudan a administrar tu entorno de Kubernetes, como las siguientes:

  • Dos ediciones: GKE Standard y GKE Enterprise. Con GKE Standard, obtienes acceso a un nivel estándar de funciones principales. Con GKE Enterprise, obtienes acceso a todas las funciones de GKE. Para obtener más información, consulta las ediciones de GKE.
  • Dos modos de operación: Standard y Autopilot. Con Standard, administras la infraestructura subyacente y la configuración de cada nodo en tu clúster de GKE. Con Autopilot, GKE administra la infraestructura subyacente, como la configuración de nodos, el ajuste de escala automático, las actualizaciones automáticas, la seguridad de referencia y la configuración de red. Para obtener más información sobre los modos de operación de GKE, consulta Elige un modo de operación de GKE.
  • Acuerdo de nivel de servicio único en la industria para Pods cuando se usa Autopilot en varias zonas
  • Creación y eliminación automatizadas de grupos de nodos con el aprovisionamiento automático de nodos
  • Herramientas de redes de varios clústeres administradas por Google para ayudarte a diseñar e implementar arquitecturas distribuidas de alta disponibilidad para tus cargas de trabajo

Para obtener más información sobre GKE, consulta la descripción general de GKE.

Para esta migración a Google Cloud, te recomendamos que sigas el framework de migración que se describe en Migra a Google Cloud: Comienza ahora.

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

Ruta de migración con cuatro fases

Puedes migrar de tu entorno de origen a Google Cloud en una serie de iteraciones, por ejemplo, puedes migrar algunas cargas de trabajo primero y otras más tarde. Para cada iteración de migración independiente, debes seguir las fases del framework de migración general:

  1. Evalúa y descubre las cargas de trabajo y los datos.
  2. Planifica y compila una base en Google Cloud.
  3. Migra tus cargas de trabajo y datos a Google Cloud.
  4. Optimiza tu Google Cloud entorno.

Para obtener más información sobre las fases de este framework, consulta Migra a Google Cloud: Comienza ahora.

Para diseñar un plan de migración eficaz, te recomendamos que valides cada paso del plan y te asegures de tener una estrategia de reversión. Para ayudarte a validar tu plan de migración, consulta Migra a Google Cloud: prácticas recomendadas para validar un plan de migración.

Evalúa el entorno

En la fase de evaluación, determinarás los requisitos y las dependencias para migrar tu entorno de origen a Google Cloud.

La fase de evaluación es fundamental para el éxito de la migración. Debes obtener un conocimiento profundo sobre las cargas de trabajo que deseas migrar, sus requisitos, sus dependencias y tu entorno actual. Debes saber cuál es tu punto de partida para planificar y ejecutar de forma correcta una migración de Google Cloud.

La fase de evaluación consta de las siguientes tareas:

  1. Crea un inventario completo de tus aplicaciones.
  2. Cataloga tus cargas de trabajo según sus propiedades y dependencias.
  3. Capacita y educa a tus equipos sobre Google Cloud.
  4. Crea experimentos y pruebas de concepto en Google Cloud.
  5. Calcula el costo total de propiedad (TCO) del entorno de destino.
  6. Elige la estrategia de migración para tus cargas de trabajo.
  7. Elige tus herramientas de migración.
  8. Define el plan y el cronograma de migración.
  9. Valida tu plan de migración.

Para obtener más información sobre la fase de evaluación y estas tareas, consulta Migra a Google Cloud: Evalúa y descubre tus cargas de trabajo. Las siguientes secciones se basan en la información de ese documento.

Compila tus inventarios

Para definir el alcance de la migración, crea dos inventarios:

  1. El inventario de tus clústeres.
  2. El inventario de tus cargas de trabajo que se implementan en esos clústeres

Después de crear estos inventarios, puedes hacer lo siguiente:

  1. Evalúa los procesos operativos y de implementación de tu entorno de origen.
  2. Evalúa los servicios de asistencia y las dependencias externas.

Compila el inventario de tus clústeres

Con el fin de compilar el inventario de los clústeres, considera lo siguiente para cada clúster:

  • Cantidad y tipo de nodos. Cuando sabes cuántos nodos tienes en tu entorno actual y las características de cada uno, puedes clasificar los clústeres cuando migras a GKE. Los nodos de tu entorno nuevo pueden ejecutarse en una generación o arquitectura de hardware diferente de la que usas en tu entorno. El rendimiento de cada arquitectura y generación es diferente, por lo que la cantidad de nodos que necesitas en tu entorno nuevo puede ser diferente de la de tu entorno actual. Evalúa cualquier tipo de hardware que uses en tus nodos, como dispositivos de almacenamiento de alto rendimiento, GPU y TPU. Evalúa qué imagen del sistema operativo estás usando en tus nodos.
  • Clúster interno o externo. Evalúa a qué actores está expuesto cada clúster, ya sean internos o externos del entorno. Para respaldar tus casos de uso, esta evaluación incluye las cargas de trabajo que se ejecutan en el clúster y las interfaces que interactúan con tus clústeres.
  • Instancias múltiples. Si administras clústeres de instancias múltiples en tu entorno, evalúa si funcionan en tu entorno nuevo de Google Cloud. Este es un buen momento para evaluar cómo mejorar los clústeres de instancias múltiples, ya que tu estrategia de instancias múltiples influye en la manera en que creas tus bases en Google Cloud.
  • Versión de Kubernetes Recopila información sobre la versión de Kubernetes de tus clústeres para evaluar si existe una discrepancia entre esas versiones y las disponibles en GKE. Si estás ejecutando una versión anterior o muy reciente de Kubernetes, es posible que estés usando funciones que no están disponibles en GKE. Es posible que las funciones sean obsoletas o que la versión de Kubernetes que las envía aún no esté disponible en GKE.
  • Ciclo de actualización de Kubernetes. Para mantener un entorno confiable, debes saber cómo manejas las actualizaciones de Kubernetes y cómo se relaciona tu ciclo de actualización con las actualizaciones de GKE.
  • Grupos de nodos Si usas cualquier forma de agrupación de nodos, es posible que desees considerar la forma en que estas agrupaciones se asignan al concepto de grupos de nodos en GKE, ya que tus criterios de agrupación podrían no ser adecuados para GKE.
  • Inicialización de nodos. Evalúa cómo inicializar cada nodo antes de marcarlo como disponible para ejecutar las cargas de trabajo, de modo que puedas transferir esos procedimientos de inicialización a GKE.
  • Configuración de red. Evalúa la configuración de red de tus clústeres, su asignación de direcciones IP, cómo configuraste sus complementos de red, cómo configuraste sus servidores DNS y proveedores de servicios de DNS, si configuraste alguna forma de NAT o SNAT para estos clústeres y si forman parte de un entorno de varios clústeres.
  • Cumplimiento: Evalúa los requisitos normativos y de cumplimiento que deben satisfacer tus clústeres y si cumples con estos requisitos.
  • Cuotas y límites. Evalúa cómo configuraste las cuotas y los límites de tus clústeres. Por ejemplo, ¿cuántos Pods puede ejecutar cada nodo? ¿Cuántos nodos puede tener un clúster?
  • Etiquetas. Evalúa los metadatos que aplicaste a los clústeres, los grupos de nodos y los nodos, y cómo los usas. Por ejemplo, es posible que generes informes con atribución de costos detallada basada en etiquetas.

Los siguientes elementos que debes evaluar en tu inventario se centran en la seguridad de tu infraestructura y en los clústeres de Kubernetes:

  • Espacios de nombres Si usas espacios de nombres de Kubernetes en tus clústeres para separar los recursos de manera lógica, evalúa qué recursos hay en cada espacio de nombres y comprende por qué creaste esta separación. Por ejemplo, es posible que uses espacios de nombres como parte de tu estrategia de instancias múltiples. Es posible que tengas cargas de trabajo implementadas en espacios de nombres reservados para los componentes del sistema de Kubernetes y que no tengas tanto control en GKE.
  • Control de acceso según la función (RBAC): Si usas la autorización de RBAC en tus clústeres, enumera una descripción de todos los ClusterRoles y ClusterRoleBindings que configuraste en los clústeres.
  • Políticas de red Enumera todas las políticas de red que configuraste en los clústeres y comprende cómo funcionan las políticas de red en GKE.
  • Contextos de seguridad de pods Captura información sobre los contextos de seguridad de los pods que configuraste en los clústeres y obtén más información sobre cómo funcionan en GKE.
  • Cuentas de servicio. Si algún proceso de tu clúster está interactuando con el servidor de la API de Kubernetes, captura información sobre las cuentas de servicio que usa.

Cuando compilas el inventario de tus clústeres de Kubernetes, es posible que algunos de ellos deban retirarse como parte de tu migración. Asegúrate de que tu plan de migración incluya la eliminación de esos recursos.

Crea el inventario de tus cargas de trabajo de Kubernetes

Después de completar el inventario de clústeres de Kubernetes y evaluar la seguridad de tu entorno, crea el inventario de las cargas de trabajo implementadas en esos clústeres. Cuando evalúes las cargas de trabajo, recopila información sobre los siguientes aspectos:

  • Pods y controladores. Para calcular el tamaño de los clústeres en tu entorno nuevo, evalúa cuántas instancias de cada carga de trabajo implementaste y si usas Cuotas de recursos y límites de consumo de recursos de procesamiento. Recopila información sobre las cargas de trabajo que se ejecutan en los nodos del plano de control de cada clúster y los controladores que usa cada una de ellas. Por ejemplo, ¿cuántas implementaciones usas? ¿Cuántos DaemonSets usas?
  • Jobs y CronJobs. Es posible que tus clústeres y cargas de trabajo deban ejecutar Jobs o CronJobs como parte de sus procedimientos de inicialización o de operación. Evalúa cuántas instancias de Jobs y CronJobs implementaste, y las responsabilidades y los criterios de finalización para cada instancia.
  • Escaladores automáticos de Kubernetes Para migrar las políticas de ajuste de escala automático en el entorno nuevo, obtén información sobre cómo funcionan Horizontal Pod Autoscaler y Vertical Pod Autoscaler en GKE.
  • Cargas de trabajo sin estado y con estado. Las cargas de trabajo sin estado no almacenan datos ni estados en el clúster o en el almacenamiento continuo. Las aplicaciones con estado guardan los datos para usarlos más adelante. Para cada carga de trabajo, evalúa qué componentes tienen estado y cuáles no lo tienen, ya que migrar cargas de trabajo con estado suele ser más difícil que migrar las que no lo tienen.
  • Características de Kubernetes. En el inventario del clúster puedes encontrar la información sobre qué versión de Kubernetes ejecuta cada clúster. Revisa las notas de la versión de cada versión de Kubernetes para saber qué características incluye y cuáles no. Luego, evalúa tus cargas de trabajo en función de las características de Kubernetes que necesitas. El objetivo de esta tarea es saber si usas características obsoletas o que aún no están disponibles en GKE. Si encuentras características no disponibles, deja de usar las características obsoletas y adopta las nuevas cuando estén disponibles en GKE.
  • Almacenamiento. Para las cargas de trabajo con estado, evalúa si usan PersistenceVolumeClaims. Enumera los requisitos de almacenamiento, como el tamaño y el modo de acceso y la forma en que estos PersistenceVolumeClaims se asignan a PersistenceVolumes. Para tener en cuenta el crecimiento futuro, evalúa si necesitas expandir cualquier PersistenceVolumeClaim.
  • Incorpora secretos y configuración. Para evitar la necesidad de volver a compilar tus artefactos implementables cada vez que haya un cambio en la configuración de tu entorno, incorpora la configuración y los secretos en los pods mediante ConfigMaps y Secretos. Para cada carga de trabajo, evalúa qué ConfigMaps y Secretos usa esa carga de trabajo y cómo propagas esos objetos.
  • Dependencias. Es probable que tus cargas de trabajo no funcionen de forma aislada. Pueden tener dependencias, ya sean internas al clúster o de sistemas externos. Para cada carga de trabajo, captura las dependencias y si tus cargas de trabajo tienen alguna tolerancia cuando las dependencias no están disponibles. Por ejemplo, las dependencias comunes incluyen sistemas de archivos distribuidos, bases de datos, plataformas de distribución secretas, sistemas de administración de identidades y accesos, mecanismos de descubrimiento de servicios y cualquier otro sistema externo.
  • Servicios de Kubernetes. Para exponer tus cargas de trabajo a clientes internos y externos, usa Servicios. Para cada servicio, debes conocer su tipo. Para los servicios expuestos de forma externa, evalúa cómo ese servicio interactúa con el resto de tu infraestructura. Por ejemplo, ¿cómo admite tu infraestructura los servicios LoadBalancer, los objetos Gateway y los objetos Ingress? ¿Qué controladores de Ingress implementaste en tus clústeres?
  • Malla de servicios. Si usas una malla de servicios en tu entorno, debes evaluar cómo está configurada. También debes saber cuántos clústeres abarca, qué servicios forman parte de la malla y cómo modificar la topología de la malla.
  • Taints y tolerancias y afinidad y antiafinidad. Para cada Pod y nodo, evalúa si configuraste taints de nodo, tolerancias de Pod o afinidades para personalizar la programación de Pods en tus clústeres de Kubernetes. Estas propiedades también pueden brindarte estadísticas sobre las posibles configuraciones de nodos o Pods no homogéneas y podría implicar que los Pods, los nodos o ambos necesiten evaluarse con un enfoque y cuidado especiales. Por ejemplo, si configuraste un conjunto particular de Pods para que se programe solo en ciertos nodos de tu clúster de Kubernetes, puede significar que los Pods necesitan recursos especializados que solo están disponibles en esos nodos.
  • Autenticación: Evalúa cómo se autentican tus cargas de trabajo en los recursos de tu clúster y en los recursos externos.

Evalúa los servicios de asistencia y las dependencias externas

Después de evaluar tus clústeres y sus cargas de trabajo, evalúa el resto de los servicios y aspectos de asistencia en tu infraestructura, como los siguientes:

  • StorageClasses y PersistentVolumes. Evalúa cómo tu infraestructura respalda a PersistentVolumeClaims mediante la confección de una lista de StorageClasses para PersistentVolumes de aprovisionamiento dinámico y aprovisionamiento estático. Para cada PersistentVolume, ten en cuenta los siguientes aspectos: capacidad, modo de volumen, modo de acceso, clase, política de reclamo, opciones de activación y afinidad de nodos.
  • VolumeSnapshots y VolumeSnapshotContents. Para cada PersistentVolume, evalúa si configuraste VolumeSnapshot y si necesitas migrar cualquier VolumeSnapshotContents existente.
  • Controladores de Container Storage Interface (CSI). Si se implementa en tus clústeres, evalúa si estos controladores son compatibles con GKE y si necesitas adaptar la configuración de los volúmenes para que funcionen con controladores de CSI que son compatibles con GKE.
  • Almacenamiento de datos. Si dependes de sistemas externos para aprovisionar PersistentVolumes, proporciona una manera de que las cargas de trabajo en tu entorno de GKE usen esos sistemas. La localidad de los datos tiene un impacto en el rendimiento de las cargas de trabajo con estado, ya que la latencia entre tus sistemas externos y tu entorno de GKE es proporcional a la distancia entre ellos. Para cada sistema de almacenamiento de datos externo, ten en cuenta su tipo, como los volúmenes en bloque, el almacenamiento de archivos o el almacenamiento de objetos, y cualquier requisito de rendimiento y disponibilidad que deba cumplir.
  • Recursos personalizados y complementos de Kubernetes Recopila información sobre cualquier recurso personalizado de Kubernetes y cualquier complemento de Kubernetes que puedas haber implementado en los clústeres, ya que es posible que no funcionen en GKE o que debas modificarlos. Por ejemplo, si un recurso personalizado interactúa con un sistema externo, evalúa si es aplicable a tu entorno de Google Cloud .
  • Copia de seguridad. Evalúa cómo creas una copia de seguridad de la configuración de tus clústeres y los datos de cargas de trabajo con estado en tu entorno de origen.

Evalúa los procesos operativos y de implementación

Es fundamental comprender claramente cómo funcionan los procesos operativos y de implementación. Estas son una parte fundamental de las prácticas que preparan y mantienen tu entorno de producción y las cargas de trabajo que se ejecutan allí.

Tus procesos operativos y de implementación podrían compilar los artefactos que tus cargas de trabajo necesitan para funcionar. Por lo tanto, debes recopilar información sobre cada tipo de artefacto. Por ejemplo, un artefacto puede ser un paquete de sistema operativo, un paquete de implementación de aplicación, una imagen de sistema operativo, una imagen de contenedor o cualquier otro elemento.

Además del tipo de artefacto, considera cómo completas las siguientes tareas:

  • Desarrolla tus cargas de trabajo. Evalúa los procesos que los equipos de desarrollo tienen implementados para compilar tus cargas de trabajo. Por ejemplo, ¿cómo diseñan, codifican y prueban tus cargas de trabajo tus equipos de desarrollo?
  • Genera los artefactos que implementes en tu entorno de origen. Para implementar tus cargas de trabajo en tu entorno de origen, es posible que generes artefactos implementables, como imágenes de contenedores o de sistemas operativos, o que personalices artefactos existentes, como imágenes de sistemas operativos de terceros, instalando y configurando software. La recopilación de información sobre cómo generas estos artefactos te ayuda a garantizar que los artefactos generados sean adecuados para la implementación enGoogle Cloud.
  • Almacena los artefactos. Si produces artefactos que almacenas en un registro de artefactos en tu entorno de origen, debes hacer que los artefactos estén disponibles en tu entorno de Google Cloud . Para ello, puedes emplear estrategias como las siguientes:

    • Establece un canal de comunicación entre los entornos: Haz que los artefactos de tu entorno de origen sean accesibles desde el entorno deGoogle Cloud destino.
    • Refactoriza el proceso de compilación de artefactos: Completa una refactorización menor de tu entorno de origen para que puedas almacenar artefactos en el entorno de origen y en el de destino. Este enfoque admite tu migración, ya que compila la infraestructura como un repositorio de artefactos antes de que tengas que implementar procesos de compilación de artefactos en el entorno Google Cloudde destino. Puedes implementar este enfoque directamente o basarte en el enfoque anterior de establecer un canal de comunicación primero.

    Tener artefactos disponibles en los entornos de origen y de destino te permite enfocarte en la migración sin tener que implementar procesos de compilación de artefactos en el entorno Google Cloud de destino como parte de la migración.

  • Escanea y firma el código. Como parte de los procesos de compilación de artefactos, es posible que uses el análisis de código para protegerte contra vulnerabilidades comunes y la exposición de red no deseada, y la firma de código para garantizar que solo se ejecute código de confianza en tus entornos.

  • Implementa artefactos en tu entorno de origen. Después de generar artefactos implementables, es posible que los implementes en tu entorno de origen. Te recomendamos que evalúes cada proceso de implementación. La evaluación ayuda a garantizar que tus procesos de implementación sean compatibles con Google Cloud. También te ayuda a comprender el esfuerzo que se necesitará para refactorizar los procesos con el tiempo. Por ejemplo, si tus procesos de implementación solo funcionan con tu entorno de origen, es posible que debas refactorizarlos para orientarlos a tu entorno de Google Cloud .

  • Incorpora la configuración del entorno de ejecución. Es posible que estés insertando una configuración del entorno de ejecución para clústeres, entornos de ejecución o implementaciones de cargas de trabajo específicos. La configuración puede inicializar variables de entorno y otros valores de configuración, como secretos, credenciales y claves. Para garantizar que los procesos de inserción de configuración del entorno de ejecución funcionen en Google Cloud, te recomendamos que evalúes cómo estás configurando las cargas de trabajo que se ejecutan en tu entorno de origen.

  • Registro, supervisión y generación de perfiles. Evalúa los procesos de registro, supervisión y generación de perfiles que tienes implementados para supervisar el estado de tu entorno de origen, las métricas de interés y cómo consumes los datos que proporcionan estos procesos.

  • Autenticación: Evalúa cómo te autenticas en tu entorno de origen.

  • Aprovisiona y configura tus recursos. Para preparar tu entorno de origen, es posible que hayas diseñado e implementado procesos que aprovisionen y configuren recursos. Por ejemplo, puedes usar Terraform junto con herramientas de administración de configuración para aprovisionar y configurar recursos en tu entorno de origen.

Planifica y compila tu base

En la fase de planificación y compilación, aprovisionarás y configurarás la infraestructura para hacer lo siguiente:

  • Admite tus cargas de trabajo en tu entorno de Google Cloud .
  • Conectar tu entorno de origen y tu entorno de Google Cloud para completar la migración

La fase de planificación y compilación se compone de las siguientes tareas:

  1. Compila una jerarquía de recursos.
  2. Configura la administración de identidades y accesos (IAM) de Google Cloud.
  3. Configura la facturación.
  4. Configura la conectividad de red.
  5. Endurece tu seguridad.
  6. Configurar el registro, la supervisión y las alertas

Para obtener más información sobre cada una de estas tareas, consulta Migra a Google Cloud: planifica y construye tu base.

En las siguientes secciones, se integran las consideraciones de la guía Migra aGoogle Cloud: planifica y compila tu base.

Planifica la multiusuario

Para diseñar una jerarquía de recursos eficiente, considera la forma en que tu empresa y tus estructuras organizativas se asignan a Google Cloud. Por ejemplo, si necesitas un entorno multiusuario en GKE, puedes elegir entre las siguientes opciones:

  • Crear un proyecto de Google Cloud para cada instancia
  • Compartir un proyecto entre diferentes instancias y aprovisionar varios clústeres de GKE
  • Usar espacios de nombres de Kubernetes

Tu elección depende de tus necesidades de aislamiento, complejidad y escalabilidad. Por ejemplo, tener un proyecto por instancia aísla las instancias entre sí, pero la jerarquía de recursos se vuelve más compleja de administrar debido a la gran cantidad de proyectos. Sin embargo, aunque administrar los espacios de nombres de Kubernetes es relativamente más fácil que una jerarquía de recursos compleja, esta opción no garantiza tanto aislamiento. Por ejemplo, el plano de control podría compartirse entre instancias. Para obtener más información, consulta Clúster de multiusuarios.

Configura la administración de identidades y accesos

GKE admite varias opciones para administrar el acceso a los recursos de tu proyecto de Google Cloud y sus clústeres mediante el RBAC. Para obtener más información, consulta Control de acceso.

Configura las herramientas de redes de GKE

La configuración de red es un aspecto fundamental de tu entorno. Antes de aprovisionar y configurar cualquier clúster, te recomendamos que evalúes el modelo de red de GKE, las prácticas recomendadas para las herramientas de redes de GKE y cómo planificar las direcciones IP cuando migres a GKE.

Configura la supervisión y las alertas

Tener un panorama claro del rendimiento de tu infraestructura y tus cargas de trabajo es clave para encontrar áreas a mejorar. GKE se integra a Google Cloud Observability a la perfección, por lo que obtienes información de registro, supervisión y generación de perfiles de tus clústeres de GKE y las cargas de trabajo de estos.

Migra datos y, luego, implementa tus cargas de trabajo

En la fase de implementación, debes realizar las siguientes tareas:

  1. Aprovisionar y configurar tu entorno de GKE.
  2. Configurar tus clústeres de GKE.
  3. Refactoriza tus cargas de trabajo.
  4. Refactoriza los procesos operativos y de implementación.
  5. Migra datos de tu entorno de origen a Google Cloud.
  6. Implementar tus cargas de trabajo en tu entorno de GKE.
  7. Validar tus cargas de trabajo y el entorno de GKE
  8. Exponer las cargas de trabajo que se ejecutan en GKE.
  9. Cambiar el tráfico del entorno de origen al entorno de GKE.
  10. Retirar de servicio el entorno de origen.

Aprovisiona y configura tu Google Cloud entorno

Antes de migrar cualquier carga de trabajo a tu nuevo entorno de Google Cloud , debes aprovisionar los clústeres de GKE.

GKE admite la habilitación de ciertas funciones en clústeres existentes, pero es posible que haya funciones que solo puedas habilitar en el momento de la creación del clúster. Para ayudarte a evitar interrupciones y simplificar la migración, te recomendamos que habilites las funciones del clúster que necesites en el momento de su creación. De lo contrario, es posible que debas destruir y volver a crear tus clústeres en caso de que las funciones que necesitas no se puedan habilitar después de crear un clúster.

Después de la fase de evaluación, sabrás cómo aprovisionar los clústeres de GKE en tu entorno Google Cloud nuevo para satisfacer tus necesidades. Para aprovisionar tus clústeres, ten en cuenta lo siguiente:

Para obtener más información sobre el aprovisionamiento de clústeres de GKE, consulta los siguientes vínculos:

Administración de flotas

Cuando aprovisiones tus clústeres de GKE, es posible que te des cuenta de que necesitas una gran cantidad de ellos para admitir todos los casos de uso de tu entorno. Por ejemplo, es posible que debas separar los entornos de producción de los que no lo son, o separar los servicios entre equipos o geografías. Para obtener más información, consulta los casos de uso de varios clústeres.

A medida que aumenta la cantidad de clústeres, es posible que tu entorno de GKE sea más difícil de operar, ya que administrar una gran cantidad de clústeres plantea desafíos operativos y de escalabilidad significativos. GKE proporciona herramientas y funciones para ayudarte a administrar flotas, una agrupación lógica de clústeres de Kubernetes. Para obtener más información, consulta Administración de flotas.

Herramientas de redes de varios clústeres

Para ayudarte a mejorar la confiabilidad de tu entorno de GKE y distribuir tus cargas de trabajo en varios clústeres de GKE, puedes usar lo siguiente:

Para obtener más información sobre cómo migrar de un entorno de GKE de un solo clúster a un entorno de GKE de varios clústeres, consulta Cómo migrar a las redes de varios clústeres.

Configura tus clústeres de GKE

Después de aprovisionar los clústeres de GKE y antes de implementar cualquier carga de trabajo o migrar datos, configura los espacios de nombres, el RBAC, las políticas de red, las cuentas de servicio y otros objetos de Kubernetes y GKE para cada clúster de GKE.

Para configurar objetos de Kubernetes y GKE en tus clústeres de GKE, te recomendamos que hagas lo siguiente:

  1. Asegúrate de tener las credenciales y los permisos necesarios para acceder a los clústeres en tu entorno de origen y en tu entorno de GKE.
  2. Evalúa si los objetos en los clústeres de Kubernetes del entorno de origen son compatibles con GKE y cómo difieren las implementaciones que respaldan estos objetos del entorno de origen y GKE.
  3. Refactoriza cualquier objeto incompatible para que sea compatible con GKE o retíralo.
  4. Crea estos objetos en tus clústeres de GKE.
  5. Configura cualquier objeto adicional que necesites en tus clústeres de GKE.

Sincronizador de configuración

Para ayudarte a adoptar las prácticas recomendadas de GitOps para administrar la configuración de tus clústeres de GKE a medida que tu GKE se escala, te recomendamos que uses el Sincronizador de configuración, un servicio de GitOps para implementar configuraciones desde una fuente de información. Por ejemplo, puedes almacenar la configuración de tus clústeres de GKE en un repositorio de Git y usar el Sincronizador de configuración para aplicar esa configuración.

Para obtener más información, consulta Arquitectura de Sincronizador de configuración.

Policy Controller

Policy Controller te ayuda a aplicar y aplicar políticas programables para ayudar a garantizar que tus clústeres y cargas de trabajo de GKE se ejecuten de forma segura y que satisfaga las normativas. A medida que tu entorno de GKE se escala, puedes usar Policy Controller para aplicar automáticamente políticas, paquetes de políticas y con restricciones a todos tus clústeres de GKE. Por ejemplo, puedes restringir los repositorios de los que se pueden extraer imágenes de contenedores, o bien exigir que cada espacio de nombres tenga al menos una etiqueta para ayudarte a garantizar un seguimiento preciso del consumo de recursos.

Para obtener más información, consulta Policy Controller.

Refactoriza tus cargas de trabajo

Una práctica recomendada para diseñar cargas de trabajo en contenedores es evitar las dependencias en la plataforma de orquestación de contenedores. Esto no siempre es posible en la práctica debido a los requisitos y el diseño de tus cargas de trabajo. Por ejemplo, tus cargas de trabajo pueden depender de funciones específicas del entorno que solo están disponibles en tu entorno de origen, como complementos, extensiones e integraciones.

Aunque es posible que puedas migrar la mayoría de las cargas de trabajo tal como están a GKE, es posible que debas dedicar un esfuerzo adicional a refactorizar las cargas de trabajo que dependen de funciones específicas del entorno para minimizar estas dependencias y, en última instancia, cambiar a las alternativas disponibles en GKE.

Para refactorizar tus cargas de trabajo antes de migrarlas a GKE, haz lo siguiente:

  1. Revisa las funciones específicas del entorno de origen, como complementos, extensiones y integraciones.
  2. Adopta soluciones alternativas de GKE adecuadas.
  3. Refactoriza tus cargas de trabajo.

Revisa las funciones específicas del entorno de origen

Si usas funciones específicas del entorno de origen y tus cargas de trabajo dependen de ellas, debes hacer lo siguiente:

  1. Encuentra soluciones alternativas adecuadas de GKE.
  2. Refactoriza tus cargas de trabajo para usar las soluciones alternativas de GKE.

Como parte de esta revisión, te recomendamos que hagas lo siguiente:

  • Considera si puedes dar de baja alguna de estas funciones específicas del entorno de origen.
  • Evalúa qué tan importante es una función específica del entorno de origen para el éxito de la migración.

Adopta soluciones alternativas de GKE adecuadas

Después de revisar las funciones específicas de tu entorno de origen y asignarlas a soluciones alternativas de GKE adecuadas, debes adoptar estas soluciones en tu entorno de GKE. Para reducir la complejidad de la migración, te recomendamos que hagas lo siguiente:

  • Evita adoptar soluciones alternativas de GKE para las funciones específicas del entorno de origen que deseas dar de baja.
  • Enfócate en adoptar soluciones alternativas de GKE para las funciones más critícas específicas del entorno de origen y planifica proyectos de migración dedicados para el resto.

Refactoriza tus cargas de trabajo

Si bien la mayoría de tus cargas de trabajo pueden funcionar tal como están en GKE, es posible que necesites refactorizar algunas, en especial si dependían de funciones específicas del entorno de origen para las que adoptaste soluciones alternativas de GKE.

Esta refactorización puede incluir lo siguiente:

  • Descriptores de objetos de Kubernetes, como implementaciones y servicios, expresados en formato YAML
  • Descriptores de imágenes de contenedor, como Dockerfiles y Containerfiles.
  • Código fuente de las cargas de trabajo.

Para simplificar el esfuerzo de refactorización, te recomendamos que te enfoques en aplicar la menor cantidad de cambios que necesites para que tus cargas de trabajo sean adecuadas para GKE y en las correcciones de errores críticas. Puedes planificar otras mejoras y cambios como parte de proyectos futuros.

Refactoriza los procesos operativos y de implementación

Después de refactorizar tus cargas de trabajo, refactoriza tus procesos operativos y de implementación para que realicen las siguientes acciones:

  • Aprovisiona y configura recursos en tu entorno Google Cloud en lugar de aprovisionar recursos en tu entorno de origen.
  • Compila y configura cargas de trabajo, y, luego, impleméntalas en tu Google Clouden lugar de hacerlo en tu entorno de origen.

Recopilaste información sobre estos procesos durante la fase de evaluación antes en este proceso.

El tipo de refactorización que debes considerar para estos procesos depende de cómo los diseñaste y cómo los implementaste. La refactorización también depende de cuál sea el estado final de cada proceso. Por ejemplo, considera lo siguiente:

  • Es posible que hayas implementado estos procesos en tu entorno de origen y quieras diseñar e implementar procesos similares en Google Cloud. Por ejemplo, puedes refactorizar estos procesos para usar Cloud Build, Cloud Deploy y Infrastructure Manager.
  • Es posible que hayas implementado estos procesos en otro entorno de terceros fuera de tu entorno de origen. En este caso, debes refactorizar estos procesos para orientar tu entorno de Google Cloud en lugar del entorno de origen.
  • Una combinación de los enfoques anteriores.

La refactorización de los procesos operativos y de implementación puede ser complejo y puede requerir un esfuerzo significativo. Si intentas realizar estas tareas como parte de la migración de tu carga de trabajo, la migración puede volverse más compleja y exponerte a riesgos. Después de evaluar los procesos operativos y de implementación, es probable que comprendas el diseño y la complejidad. Si estimas que necesitas un esfuerzo sustancial para refactorizar tus procesos operativos y de implementación, te recomendamos que consideres la refactorización de estos procesos como parte de un proyecto independiente y dedicado.

Para obtener más información sobre cómo diseñar e implementar procesos de implementación en Google Cloud, consulta los siguientes vínculos:

En este documento, se enfocan los procesos de implementación que producen los artefactos para implementarlos y, luego, implementarlos en el entorno de ejecución de destino. La estrategia de refactorización depende en gran medida de la complejidad de estos procesos. En la siguiente lista, se describe una posible estrategia general de refactorización:

  1. Aprovisiona repositorios de artefactos en Google Cloud. Por ejemplo, puedes usar Artifact Registry para almacenar artefactos y compilar dependencias.
  2. Refactoriza tus procesos de compilación para almacenar artefactos en tu ambiente de origen y en Artifact Registry.
  3. Refactorizar tus procesos de implementación para implementar tus cargas de trabajo en tu entorno deGoogle Cloud de destino Por ejemplo, puedes comenzar por implementar un subconjunto pequeño de tus cargas de trabajo en Google Cloud, con artefactos almacenados en Artifact Registry. Luego, aumentas gradualmente la cantidad de cargas de trabajo implementadas en Google Cloud, hasta que todas las cargas de trabajo que se migrarán se ejecuten en Google Cloud.
  4. Refactoriza tus procesos de compilación para almacenar artefactos solo en Artifact Registry.
  5. Si es necesario, migra las versiones anteriores de los artefactos para implementarlos desde los repositorios de tu entorno de origen a Artifact Registry. Por ejemplo, puedes kopy las imágenes de contenedor a Artifact Registry.
  6. Inhabilita los repositorios de tu entorno de origen cuando ya no los necesites.

Para facilitar las posibles reversiones debido a problemas imprevistos durante la migración, puedes almacenar imágenes de contenedores en tus repositorios de artefactos actuales en Google Cloud mientras la migración a Google Cloud está en curso. Por último, como parte de la baja de tu entorno de origen, puedes refactorizar los procesos de compilación de imágenes de contenedor para almacenar artefactos solo en Google Cloud .

Aunque es posible que no sea fundamental para el éxito de una migración, es posible que debas migrar las versiones anteriores de tus artefactos desde tu entorno de origen a tus repositorios de artefactos en Google Cloud. Por ejemplo, para admitir la reversión de las cargas de trabajo a puntos arbitrarios en el tiempo, es posible que debas migrar versiones anteriores de tus artefactos a Artifact Registry. Para obtener más información, consulta Cómo migrar imágenes desde un registro de terceros.

Si usas Artifact Registry para almacenar tus artefactos, te recomendamos que configures controles para ayudarte a proteger tus repositorios de artefactos, como el control de acceso, la prevención de robo de datos, el análisis de vulnerabilidades y la autorización binaria. Para obtener más información, consulta Controla el acceso y protege los artefactos.

Implementa tus cargas de trabajo

Cuando tus procesos de implementación estén listos, podrás implementar tus cargas de trabajo en GKE. Para obtener más información, consulta la Descripción general de la implementación de cargas de trabajo.

Para preparar las cargas de trabajo que se implementarán en GKE, te recomendamos que analices tus descriptores de Kubernetes porque algunos Google Cloud recursos que GKE aprovisiona automáticamente se pueden configurar con etiquetas y anotaciones de Kubernetes, en lugar de tener que aprovisionar estos recursos de forma manual. Por ejemplo, puedes aprovisionar un balanceador de cargas interno en lugar de uno externo si agregas una anotación a un servicio LoadBalancer.

Valida tus cargas de trabajo

Después de implementar las cargas de trabajo en el entorno de GKE, pero antes de exponerlas a los usuarios, te recomendamos que realices pruebas y validaciones exhaustivas. Estas pruebas pueden ayudarte a verificar que tus cargas de trabajo se comporten como se espera. Por ejemplo, puedes hacer lo siguiente:

  • Realizar pruebas de integración, de carga, de cumplimiento y de confiabilidad, y otros procedimientos de verificación que te ayuden a garantizar que tus cargas de trabajo funcionen con sus parámetros esperados y según sus especificaciones.
  • Examina los registros, las métricas y los informes de errores en Google Cloud Observability para identificar cualquier problema potencial y detectar tendencias para anticipar problemas antes de que ocurran.

Si deseas obtener más información sobre la validación de cargas de trabajo, consulta Prueba la confiabilidad.

Expón tus cargas de trabajo

Una vez que completes las pruebas de validación de las cargas de trabajo que se ejecutan en tu entorno de GKE, expón tus cargas de trabajo para que sean accesibles.

Para exponer las cargas de trabajo que se ejecutan en tu entorno de GKE, puedes usar los servicios de Kubernetes y una malla de servicios.

Para obtener más información sobre la exposición de cargas de trabajo que se ejecutan en GKE, consulta los siguientes vínculos:

Transfiere el tráfico a tu entorno de Google Cloud

Después de verificar que las cargas de trabajo se ejecuten en tu entorno de GKE y de exponerlas a los clientes, cambia el tráfico de tu entorno de origen a tu entorno de GKE. Para ayudarte a evitar las migraciones a gran escala y todos los riesgos relacionados, te recomendamos cambiar el tráfico de forma gradual del entorno de origen a tu GKE.

Según cómo diseñaste tu entorno de GKE, tienes varias opciones para implementar un mecanismo de balanceo de cargas que cambie el tráfico de tu entorno de origen a tu entorno de destino de forma gradual. Por ejemplo, puedes implementar una política de resolución de DNS que resuelva registros DNS de acuerdo con alguna política para resolver un cierto porcentaje de solicitudes a direcciones IP que pertenecen a tu entorno de GKE. También puedes implementar un mecanismo de balanceo de cargas mediante direcciones IP virtuales y balanceadores de cargas de red.

Después de comenzar el cambio gradual del tráfico a tu entorno de GKE, te recomendamos supervisar el comportamiento de tus cargas de trabajo a medida que aumentan sus cargas.

Por último, debes realizar una migración de sistemas, que ocurre cuando transfieres todo el tráfico del entorno de origen a tu entorno de GKE.

Para obtener más información sobre el balanceo de cargas, consulta Balanceo de cargas en el frontend.

Retirar el servicio el entorno de origen.

Después de que las cargas de trabajo en el entorno de GKE entreguen las solicitudes de forma correcta, debes retirar tu entorno de origen.

Antes de comenzar a retirar los recursos en tu entorno de origen, te recomendamos que hagas lo siguiente:

  • Crear una copia de seguridad de los datos para ayudarte a restablecer los recursos en tu entorno de origen.
  • Notifica a tus usuarios antes de retirar el entorno.

Para retirar tu entorno de origen, haz lo siguiente:

  1. Inhabilita las cargas de trabajo que se ejecutan en los clústeres de tu entorno de origen.
  2. Borra los clústeres en tu entorno de origen.
  3. Borra los recursos asociados con estos clústeres, como los grupos de seguridad, los balanceadores de cargas y las redes virtuales.

Para evitar dejar recursos huérfanos, el orden en el que retiras los recursos en tu entorno de origen es importante. Por ejemplo, ciertos proveedores requieren que retires los servicios de Kubernetes que conducen a la creación de balanceadores de cargas antes de poder retirar las redes virtuales que contienen esos balanceadores de cargas.

Optimiza tu Google Cloud entorno

La optimización es la última fase de la migración. En esta fase, iteras en tareas de optimización hasta que tu entorno de destino cumpla con tus requisitos de optimización. Los pasos de cada iteración son los siguientes:

  1. Evalúa tu entorno actual, los equipos y el ciclo de optimización.
  2. Establece tus requisitos y objetivos de optimización.
  3. Optimiza el entorno y los equipos.
  4. Ajustar el bucle de optimización

Repite esta secuencia hasta que hayas alcanzado tus objetivos de optimización.

Para obtener más información sobre cómo optimizar tu entorno de Google Cloud , consulta Migra a Google Cloud: Optimiza tu entorno y Marco de trabajo de la arquitectura deGoogle Cloud : Optimización del rendimiento.

En las siguientes secciones, se integran las consideraciones de la sección Migra aGoogle Cloud: Optimiza tu entorno.

Establece tus requisitos de optimización

Los requisitos de optimización te ayudan a acotar el alcance de la iteración de optimización actual. Para obtener más información sobre los requisitos y objetivos de optimización, consulta Establece tus requisitos y objetivos de optimización.

Para establecer los requisitos de optimización de tu entorno de GKE, primero considera los siguientes aspectos:

  • Seguridad, privacidad y cumplimiento: Te ayudan a mejorar la postura de seguridad de tu entorno de GKE.
  • Confiabilidad: Te ayuda a mejorar la disponibilidad, la escalabilidad y la resiliencia de tu entorno de GKE.
  • Optimización de costos: Te ayuda a optimizar el consumo de recursos y el gasto resultante de tu entorno de GKE.
  • Eficiencia operativa: Te ayuda a mantener y operar tu entorno de GKE de manera eficiente.
  • Optimización del rendimiento: Te ayuda a optimizar el rendimiento de las cargas de trabajo implementadas en tu entorno de GKE.

Security, privacy, and compliance

Confiabilidad

  • Mejora la confiabilidad de tus clústeres. Para ayudarte a diseñar un clúster de GKE que sea más resistente a interrupciones zonales poco probables, prefiere clúster regionales en lugar de los zonales o multizonales.

  • Copia de seguridad y restablecimiento de cargas de trabajo Configura un flujo de trabajo de copia de seguridad y restablecimiento de cargas de trabajo con Copia de seguridad para GKE.

Optimización de costos

Si deseas obtener más información para optimizar el costo de tu entorno de GKE, consulta los siguientes vínculos:

Eficiencia operativa

Para ayudarte a evitar problemas que afecten tu entorno de producción, te recomendamos que hagas lo siguiente:

  • Diseña los clústeres de GKE para que sean intercambiables. Si consideras que tus clústeres son intercambiables y automatizas su aprovisionamiento y configuración, puedes optimizar y generalizar los procesos operativos para mantenerlos y simplificar las migraciones futuras y las actualizaciones de clúster de GKE. Por ejemplo, si necesitas actualizar un clúster de GKE intercambiable a una versión nueva de GKE, puedes aprovisionar y configurar de forma automática un clúster nuevo actualizado, implementar de forma automática las cargas de trabajo en el clúster nuevo y quitar el clúster de GKE antiguo y desactualizado.
  • Supervisa las métricas de interés. Asegúrate de que todas las métricas de interés sobre tus cargas de trabajo y clústeres se recopilen correctamente. Además, verifica que todas las alertas relevantes que usan estas métricas como entradas estén implementadas y funcionen.

Para obtener más información sobre la configuración de la supervisión, el registro y la generación de perfiles en tu entorno de GKE, consulta los siguientes vínculos:

Optimización del rendimiento

Para obtener más información, consulta Acerca de la escalabilidad de GKE.

¿Qué sigue?

Colaboradores

Autor: Marco Ferrari | Arquitecto de soluciones de nube