Migrar contenedores a Google Cloud: migrar de Kubernetes a GKE

Last reviewed 2024-06-22 UTC

Este documento te ayuda a planificar, diseñar e implementar la migración de un entorno de Kubernetes autogestionado a Google Kubernetes Engine (GKE). Si no se hace correctamente, mover aplicaciones de un entorno a otro puede ser una tarea difícil, por lo que debes planificar y ejecutar la migración con cuidado.

Este documento es útil si tienes previsto migrar de un entorno de Kubernetes autogestionado a GKE. Tu entorno puede ejecutarse en un entorno on-premise, en un entorno de alojamiento privado o en otro proveedor de servicios en la nube. Este documento también es útil si estás evaluando la oportunidad de migrar y quieres saber cómo sería el proceso.

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

  • Dos ediciones: GKE Standard y GKE Enterprise. Con GKE Standard, tienes acceso a un nivel estándar de funciones principales. Con GKE Enterprise, tienes acceso a todas las funciones de GKE. Para obtener más información, consulta las ediciones de GKE.
  • Dos modos de funcionamiento: Standard y Autopilot. Con Standard, gestionas la infraestructura subyacente y la configuración de cada nodo de tu clúster de GKE. Con Autopilot, GKE gestiona la infraestructura subyacente, como la configuración de los nodos, el escalado automático, las actualizaciones automáticas, la seguridad básica y la configuración de la red. Para obtener más información sobre los modos de funcionamiento de GKE, consulta Elegir un modo de funcionamiento de GKE.
  • Acuerdo de nivel de servicio único en el sector para los pods cuando se usa Autopilot en varias zonas.
  • Creación y eliminación automáticas de grupos de nodos con el aprovisionamiento automático de nodos.
  • Redes de varios clústeres gestionadas 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 información general sobre GKE.

Para llevar a cabo esta migración a Google Cloud, te recomendamos que sigas el framework de migración descrito en el artículo Migrar a Google Cloud: primeros pasos.

En el siguiente diagrama se muestra el 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 adelante. En cada iteración de migración independiente, debes seguir las fases del marco de migración general:

  1. Evalúa e identifica tus cargas de trabajo y datos.
  2. Planifica y construye una base sobre 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 marco, consulta el artículo Migrar a Google Cloud: primeros pasos.

Para diseñar un plan de migración eficaz, te recomendamos que valides cada paso del plan y que tengas una estrategia de restauración. Para validar tu plan de migración, consulta el artículo Migrar a Google Cloud: prácticas recomendadas para validar un plan de migración.

Evalúa tu entorno

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

La fase de evaluación es fundamental para que la migración se lleve a cabo correctamente. Debes conocer en profundidad las cargas de trabajo que quieres migrar, sus requisitos, sus dependencias y tu entorno actual. Para planificar y llevar a cabo una migración correctamente, debes conocer tu punto de partida. Google Cloud

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

  1. Crea un inventario completo de tus cargas de trabajo.
  2. Cataloga tus cargas de trabajo según sus propiedades y dependencias.
  3. Forma y educa a tus equipos sobre Google Cloud.
  4. Crea experimentos y pruebas de concepto en Google Cloud.
  5. Calcula el coste total de propiedad (CTP) del entorno de destino.
  6. Elige la estrategia de migración de tus cargas de trabajo.
  7. Elige las herramientas de migración.
  8. Define el plan y la cronología de la 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 el artículo Migración a Google Cloud: evaluar e identificar cargas de trabajo. Las siguientes secciones se basan en la información de ese documento.

Crear inventarios

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

  1. El inventario de tus clústeres.
  2. El inventario de las cargas de trabajo desplegadas en esos clústeres.

Una vez que haya creado estos inventarios, podrá hacer lo siguiente:

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

Crear el inventario de tus clústeres

Para crear el inventario de tus clústeres, ten en cuenta lo siguiente en cada uno de ellos:

  • Número y tipo de nodos. Cuando sepas cuántos nodos tienes y las características de cada uno de ellos en tu entorno actual, podrás dimensionar tus clústeres al migrar a GKE. Los nodos de tu nuevo entorno pueden ejecutarse en una arquitectura de hardware o una generación diferentes a las que usas en tu entorno. El rendimiento de cada arquitectura y generación es diferente, por lo que el número de nodos que necesitas en tu nuevo entorno puede ser diferente al de tu entorno. Evalúa cualquier tipo de hardware que utilices en tus nodos, como dispositivos de almacenamiento de alto rendimiento, GPUs y TPUs. Evalúa qué imagen de sistema operativo estás usando en tus nodos.
  • Clúster interno o externo. Evalúa a qué agentes está expuesto cada clúster, ya sean internos o externos a tu entorno. Para dar respuesta a tus casos prácticos, 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.
  • Multitenancy. Si gestionas clústeres multiinquilino en tu entorno, evalúa si funciona en tu nuevo entorno de Google Cloud. Ahora es un buen momento para evaluar cómo mejorar tus clústeres multiinquilino, ya que tu estrategia de multiinquilino influye en cómo creas tu base en Google Cloud.
  • Versión de Kubernetes. Recopila información sobre la versión de Kubernetes de tus clústeres para evaluar si hay alguna diferencia entre esas versiones y las disponibles en GKE. Si usas una versión anterior o una versión de Kubernetes publicada recientemente, es posible que estés usando funciones que no están disponibles en GKE. Es posible que las funciones estén obsoletas o que la versión de Kubernetes que las incluye aún no esté disponible en GKE.
  • Ciclo de actualización de Kubernetes. Para mantener un entorno fiable, debes saber cómo gestionas las actualizaciones de Kubernetes y cómo se relaciona tu ciclo de actualización con las actualizaciones de GKE.
  • Grupos de nodos. Si utilizas algún tipo de agrupación de nodos, te recomendamos que pienses cómo se asignan estas agrupaciones al concepto de grupos de nodos en GKE, ya que es posible que tus criterios de agrupación no sean adecuados para GKE.
  • Inicialización de nodos. Evalúa cómo inicializas cada nodo antes de marcarlo como disponible para ejecutar tus cargas de trabajo, de forma 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, la asignación de direcciones IP, cómo has configurado sus complementos de red, cómo has configurado sus servidores DNS y proveedores de servicios DNS, si has configurado algún tipo 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 cumplir tus clústeres y si los cumples.
  • Cuotas y límites. Evalúa cómo has configurado 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 hayas aplicado a los clústeres, los grupos de nodos y los nodos, así como la forma en que los estés usando. Por ejemplo, puede generar informes con una atribución de costes detallada basada en etiquetas.

Los siguientes elementos que evalúas en tu inventario se centran en la seguridad de tu infraestructura y tus clústeres de Kubernetes:

  • Espacios de nombres. Si usas espacios de nombres de Kubernetes en tus clústeres para separar los recursos de forma lógica, evalúa qué recursos hay en cada espacio de nombres y por qué has creado esta separación. Por ejemplo, puede que estés usando espacios de nombres como parte de tu estrategia de multitenencia. Es posible que tengas cargas de trabajo desplegadas en espacios de nombres reservados para componentes del sistema de Kubernetes y que no tengas tanto control en GKE.
  • Control de acceso basado en roles (RBAC). Si usas la autorización RBAC en tus clústeres, indica una descripción de todos los ClusterRoles y ClusterRoleBindings que hayas configurado en ellos.
  • Políticas de la red. Consulta todas las políticas de red que has configurado en tus clústeres y descubre cómo funcionan las políticas de red en GKE.
  • Contextos de seguridad de pods Recopila información sobre los contextos de seguridad de los pods que has configurado en tus clústeres y descubre cómo funcionan en GKE.
  • Cuentas de servicio. Si algún proceso de tu clúster interactúa con el servidor de la API de Kubernetes, registra información sobre las cuentas de servicio que utiliza.

Cuando crees el inventario de tus clústeres de Kubernetes, puede que descubras que algunos de ellos deben retirarse como parte de la migración. Asegúrate de que tu plan de migración incluya la retirada de estos recursos.

Crea el inventario de tus cargas de trabajo de Kubernetes

Una vez que hayas completado el inventario de clústeres de Kubernetes y evaluado la seguridad de tu entorno, crea el inventario de las cargas de trabajo implementadas en esos clústeres. Cuando evalúes tus cargas de trabajo, recopila información sobre los siguientes aspectos:

  • Pods y controladores. Para dimensionar los clústeres de tu nuevo entorno, evalúa cuántas instancias de cada carga de trabajo has implementado y si estás usando cuotas de recursos y límites de consumo de recursos de computación. 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 carga de trabajo. Por ejemplo, ¿cuántas implementaciones estás usando? ¿Cuántos DaemonSets estás usando?
  • Trabajos y CronJobs. Es posible que tus clústeres y cargas de trabajo necesiten ejecutar trabajos o CronJobs como parte de sus procedimientos de inicialización u operación. Evalúa cuántas instancias de Jobs y CronJobs has implementado, así como las responsabilidades y los criterios de finalización de cada instancia.
  • Escaladores automáticos de Kubernetes. Para migrar tus políticas de autoescalado al nuevo entorno, consulta cómo funcionan el autoescalador horizontal de pods y el autoescalador vertical de pods en GKE.
  • Cargas de trabajo con y sin reconocimiento del estado. Las cargas de trabajo sin reconocimiento del estado no almacenan datos ni estados en el clúster ni en el almacenamiento persistente. Las aplicaciones con estado guardan datos para usarlos más adelante. En cada carga de trabajo, evalúa qué componentes no tienen estado y cuáles sí, ya que migrar cargas de trabajo con estado suele ser más difícil que migrar cargas de trabajo sin estado.
  • Características de Kubernetes. En el inventario de clústeres, puedes ver qué versión de Kubernetes ejecuta cada clúster. Consulta las notas de la versión de cada versión de Kubernetes para saber qué funciones incluye y cuáles deja de usar. Después, evalúa tus cargas de trabajo en función de las funciones de Kubernetes que necesites. El objetivo de esta tarea es saber si estás usando funciones obsoletas o funciones que aún no están disponibles en GKE. Si encuentras alguna función que no esté disponible, deja de usar las funciones obsoletas y adopta las nuevas cuando estén disponibles en GKE.
  • Almacenamiento. En el caso de las cargas de trabajo con estado, evalúa si usan PersistenceVolumeClaims. Indica los requisitos de almacenamiento, como el tamaño y el modo de acceso, y cómo se asignan estos PersistenceVolumeClaims a los PersistenceVolumes. Para tener en cuenta el crecimiento futuro, evalúa si necesitas ampliar algún PersistenceVolumeClaim.
  • Configuración e inyección de secretos. Para evitar tener que volver a compilar los artefactos desplegables cada vez que se produzca un cambio en la configuración de tu entorno, inserta la configuración y los secretos en los pods mediante ConfigMaps y Secrets. En cada carga de trabajo, evalúa qué ConfigMaps y Secrets usa y cómo rellenas esos objetos.
  • Dependencias. Es probable que tus cargas de trabajo no funcionen de forma aislada. Pueden tener dependencias, ya sea internas al clúster o de sistemas externos. En cada carga de trabajo, registra las dependencias y si tus cargas de trabajo tienen alguna tolerancia cuando las dependencias no están disponibles. Por ejemplo, las dependencias habituales incluyen sistemas de archivos distribuidos, bases de datos, plataformas de distribución de secretos, sistemas de gestió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 saber de qué tipo es. En el caso de los servicios expuestos externamente, evalúa cómo interactúa el servicio 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 has desplegado en tus clústeres?
  • Service mesh. Si utilizas una malla de servicios en tu entorno, evalúa 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 tolerations y afinidad y antiafinidad. En cada pod y nodo, evalúa si has configurado alguna contaminación de nodo, tolerancia de pod o afinidad para personalizar la programación de pods en tus clústeres de Kubernetes. Estas propiedades también pueden proporcionarte información valiosa sobre posibles configuraciones no homogéneas de nodos o pods, y pueden significar que los pods, los nodos o ambos deben evaluarse con especial atención. Por ejemplo, si has configurado un conjunto concreto de pods para que se programen solo en determinados nodos de tu clúster de Kubernetes, puede que los pods necesiten 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.

Evaluar los servicios de asistencia y las dependencias externas

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

  • StorageClasses y PersistentVolumes. Evalúa cómo respalda tu infraestructura las reclamaciones de volumen persistente enumerando las StorageClasses para el aprovisionamiento dinámico y los volúmenes persistentes PersistentVolumes. En cada PersistentVolume, ten en cuenta lo siguiente: capacidad, modo de volumen, modo de acceso, clase, política de recuperación, opciones de montaje y afinidad de nodos.
  • VolumeSnapshots y VolumeSnapshotContents. En cada PersistentVolume, evalúa si has configurado algún VolumeSnapshot y si necesitas migrar algún VolumeSnapshotContent.
  • Controladores de Container Storage Interface (CSI). Si se han desplegado en tus clústeres, evalúa si estos controladores son compatibles con GKE y si necesitas adaptar la configuración de tus volúmenes para que funcionen con controladores de CSI compatibles con GKE.
  • Almacenamiento de datos. Si dependes de sistemas externos para aprovisionar PersistentVolumes, proporciona un método para que las cargas de trabajo de tu entorno de GKE puedan usar esos sistemas. La localidad de los datos influye en el rendimiento de las cargas de trabajo con estado, ya que la latencia entre los sistemas externos y el entorno de GKE es proporcional a la distancia entre ellos. En el caso de cada sistema de almacenamiento de datos externo, ten en cuenta su tipo (por ejemplo, volúmenes de bloques, almacenamiento de archivos o almacenamiento de objetos) y los requisitos de rendimiento y disponibilidad que debe cumplir.
  • Recursos personalizados y complementos de Kubernetes. Recopila información sobre los recursos personalizados de Kubernetes y los complementos de Kubernetes que hayas desplegado en tus clústeres, ya que es posible que no funcionen en GKE o que tengas que modificarlos. Por ejemplo, si un recurso personalizado interactúa con un sistema externo, debes evaluar si es aplicable a tu Google Cloud entorno.
  • Copia de seguridad. Evalúa cómo se hace la copia de seguridad de la configuración de tus clústeres y de los datos de las cargas de trabajo con estado en tu entorno de origen.

Evalúa tus procesos de implementación y operativos

Es importante que tengas claro cómo funcionan tus procesos de implementación y operativos. Estos procesos 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 en él.

Tus procesos de implementación y operativos pueden crear los artefactos que necesitan tus cargas de trabajo para funcionar. Por lo tanto, debes recoger información sobre cada tipo de artefacto. Por ejemplo, un artefacto puede ser un paquete de sistema operativo, un paquete de despliegue de aplicaciones, una imagen de sistema operativo, una imagen de contenedor u otro elemento.

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

  • Desarrolla tus cargas de trabajo. Evalúa los procesos que tienen los equipos de desarrollo para crear tus cargas de trabajo. Por ejemplo, ¿cómo diseñan, codifican y prueban tus equipos de desarrollo las cargas de trabajo?
  • Genera los artefactos que vas a implementar en tu entorno de origen. Para implementar tus cargas de trabajo en el entorno de origen, puedes generar artefactos implementables, como imágenes de contenedor o imágenes de sistema operativo, o personalizar artefactos, como imágenes de sistema operativo de terceros, instalando y configurando software. Recopilar información sobre cómo generas estos artefactos te ayuda a asegurarte de que sean adecuados para implementarlos enGoogle Cloud.
  • Almacena los artefactos. Si produces artefactos que almacenas en un registro de artefactos de tu entorno de origen, debes hacer que estén disponibles en tu entorno de destino. 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 de destino.Google Cloud
    • Refactorizar el proceso de compilación de artefactos: completa una refactorización menor de tu entorno de origen para que puedas almacenar artefactos tanto en el entorno de origen como en el de destino. Este enfoque facilita la migración, ya que crea una infraestructura, como un repositorio de artefactos, antes de que tengas que implementar procesos de compilación de artefactos en el entorno de destino Google Cloud. Puedes implementar este enfoque directamente o basarte en el enfoque anterior de establecer primero un canal de comunicación.

    Si los artefactos están disponibles tanto en el entorno de origen como en el de destino, puedes centrarte en la migración sin tener que implementar procesos de compilación de artefactos en el entorno de destino Google Cloud como parte de la migración.

  • Escanear y firmar código. Como parte de los procesos de compilación de artefactos, puedes usar el análisis de código para protegerte frente a vulnerabilidades comunes y exposiciones de red no deseadas, así como la firma de código para asegurarte de que solo se ejecute código de confianza en tus entornos.

  • Despliega 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 asegurar que tus procesos de implementación sean compatibles con Google Cloud. También te ayuda a entender el esfuerzo que será necesario para refactorizar los procesos. Por ejemplo, si tus procesos de implementación solo funcionan con tu entorno de origen, es posible que tengas que refactorizarlos para que se dirijan a tu entorno de Google Cloud .

  • Inyectar configuración de tiempo de ejecución. Puede que estés insertando una configuración de tiempo de ejecución para clústeres, entornos de tiempo 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 asegurarte de que los procesos de inyección de configuración de tiempo de ejecución funcionan en Google Cloud, te recomendamos que evalúes cómo configuras las cargas de trabajo que se ejecutan en tu entorno de origen.

  • Registro, monitorización y creación de perfiles. Evalúa los procesos de registro, monitorización y creación de perfiles que tienes implementados para monitorizar el estado de tu entorno de origen, las métricas de interés y cómo consumes los datos proporcionados por 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 gestión de la configuración para aprovisionar y configurar recursos en tu entorno de origen.

Planifica y construye tu base

En la fase de planificación y creación, aprovisionas y configuras la infraestructura para hacer lo siguiente:

  • Compatibilidad con tus cargas de trabajo en tu Google Cloud entorno.
  • Conecta tu entorno de origen y tu entorno de Google Cloud para completar la migración.

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

  1. Crea una jerarquía de recursos.
  2. Configura la gestión de identidades y accesos (IAM) de Google Cloud.
  3. Configura la facturación
  4. Configura la conectividad de red.
  5. Refuerza tu seguridad.
  6. Configura el almacenamiento de registros, la monitorización y las alertas.

Para obtener más información sobre cada una de estas tareas, consulta el artículo Migrar a Google Cloud: planificar y crear la base.

En las siguientes secciones se integran las consideraciones de Migrar aGoogle Cloud: planificar y crear la base.

Planificar la arquitectura multicliente

Para diseñar una jerarquía de recursos eficiente, piensa en cómo se corresponden tu empresa y tus estructuras organizativas con Google Cloud. Por ejemplo, si necesitas un entorno multitenant en GKE, puedes elegir entre las siguientes opciones:

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

La elección dependerá de tus necesidades de aislamiento, complejidad y escalabilidad. Por ejemplo, si se tiene un proyecto por cada arrendatario, se aísla a los arrendatarios entre sí, pero la jerarquía de recursos se vuelve más compleja de gestionar debido al gran número de proyectos. Sin embargo, aunque gestionar 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 se puede compartir entre los inquilinos. Para obtener más información, consulta Clústeres con varios propietarios.

Configurar la gestión de identidades y accesos

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

Configurar la red de GKE

La configuración de red es un aspecto fundamental de su 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 la creación de redes de GKE y cómo planificar las direcciones IP al migrar a GKE.

Configurar la monitorización y las alertas

Tener una visión clara del rendimiento de tu infraestructura y tus cargas de trabajo es fundamental para identificar áreas de mejora. GKE tiene integraciones profundas con Google Cloud Observability, por lo que obtienes información de registro, monitorización y creación de perfiles sobre tus clústeres de GKE y las cargas de trabajo de esos clústeres.

Migrar datos y desplegar cargas de trabajo

En la fase de implementación, debes hacer lo siguiente:

  1. Aprovisiona y configura tu entorno de GKE.
  2. Configura tus clústeres de GKE.
  3. Refactoriza tus cargas de trabajo.
  4. Refactoriza los procesos de implementación y operativos.
  5. Migra datos de tu entorno de origen a Google Cloud.
  6. Despliega tus cargas de trabajo en tu entorno de GKE.
  7. Valida tus cargas de trabajo y tu entorno de GKE.
  8. Expone las cargas de trabajo que se ejecutan en GKE.
  9. Transfiere el tráfico del entorno de origen al entorno de GKE.
  10. Retira el entorno de origen.

Aprovisionar y configurar el Google Cloud entorno

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

GKE permite habilitar determinadas funciones en clústeres disponibles, pero puede haber funciones que solo se puedan habilitar al crear el clúster. Para evitar interrupciones y simplificar la migración, te recomendamos que habilites las funciones del clúster que necesites al crear el clúster. De lo contrario, es posible que tengas que destruir y volver a crear tus clústeres si las funciones que necesitas no se pueden habilitar después de crear un clúster.

Después de la fase de evaluación, ya sabes cómo aprovisionar los clústeres de GKE en tu nuevo entorno Google Cloud 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 artículos:

Gestión de flotas

Cuando aprovisiones tus clústeres de GKE, puede que te des cuenta de que necesitas un gran número de ellos para admitir todos los casos prácticos de tu entorno. Por ejemplo, puede que tengas que separar los entornos de producción de los que no lo son o separar los servicios en distintos equipos o zonas geográficas. Para obtener más información, consulta los casos prácticos de varios clústeres.

A medida que aumenta el número de clústeres, puede que tu entorno de GKE sea más difícil de gestionar, ya que administrar un gran número de clústeres plantea problemas operativos y de escalabilidad importantes. GKE proporciona herramientas y funciones para ayudarte a gestionar flotas, que son agrupaciones lógicas de clústeres de Kubernetes. Para obtener más información, consulta Gestión de la flota.

Redes de varios clústeres

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

  • Descubrimiento de servicios en varios clústeres, un mecanismo de descubrimiento e invocación de servicios entre clústeres. Los servicios se pueden detectar y acceder a ellos en todos los clústeres de GKE. Para obtener más información, consulta Detección de servicios multiclúster.
  • Pasarelas de varios clústeres, un mecanismo de balanceo de carga de tráfico de entrada entre clústeres. Para obtener más información, consulta Desplegar pasarelas de varios clústeres.
  • Malla multiclúster en Cloud Service Mesh gestionado. Para obtener más información, consulta Configurar una malla multiclúster.

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 multiclúster, consulta Migrar a una red multiclúster.

Configurar los clústeres de GKE

Después de aprovisionar los clústeres de GKE y antes de implementar cualquier carga de trabajo o migrar datos, debes configurar los espacios de nombres, el control de acceso basado en roles, 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 que tienes las credenciales y los permisos necesarios para acceder a los clústeres de tu entorno de origen y a tu entorno de GKE.
  2. Evalúa si los objetos de los clústeres de Kubernetes de tu entorno de origen son compatibles con GKE y cómo difieren las implementaciones que respaldan estos objetos del entorno de origen y de 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 los objetos adicionales que necesites en tus clústeres de GKE.

Config Sync

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

Para obtener más información, consulta la arquitectura de Config Sync.

Policy Controller

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

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

Refactorizar las cargas de trabajo

Una práctica recomendada para diseñar cargas de trabajo en contenedores es evitar las dependencias de la plataforma de orquestación de contenedores. Puede que no siempre sea posible en la práctica debido a los requisitos y al diseño de tus cargas de trabajo. Por ejemplo, es posible que tus cargas de trabajo dependan 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 cual a GKE, puede que tengas que dedicar más tiempo a refactorizar las cargas de trabajo que dependen de funciones específicas del entorno para minimizar estas dependencias y, finalmente, cambiar a alternativas que estén disponibles en GKE.

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

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

Revisar 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 alternativas adecuadas a las soluciones 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:

  • Plantéate si puedes retirar alguna de estas funciones específicas del entorno de origen.
  • Evalúa la importancia de una función específica del entorno de origen para que la migración se realice correctamente.

Adoptar soluciones alternativas de GKE adecuadas

Una vez que hayas revisado las funciones específicas de tu entorno de origen y las hayas asignado a soluciones alternativas de GKE adecuadas, adopta 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 funciones específicas del entorno de origen que quieras retirar.
  • Céntrate en adoptar soluciones alternativas de GKE para las funciones más críticas específicas del entorno de origen y planifica proyectos de migración específicos para el resto.

Refactorizar las cargas de trabajo

Aunque la mayoría de tus cargas de trabajo pueden funcionar tal cual en GKE, es posible que tengas que refactorizar algunas de ellas, sobre todo si dependían de funciones específicas del entorno de origen para las que adoptaste soluciones alternativas de GKE.

Esta refactorización puede implicar lo siguiente:

  • Descriptores de objetos de Kubernetes, como los despliegues y los 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, le recomendamos que se centre en aplicar la menor cantidad de cambios posible para que sus cargas de trabajo sean adecuadas para GKE y en corregir los errores críticos. Puedes planificar otras mejoras y cambios como parte de proyectos futuros.

Refactorizar los procesos de implementación y operativos

Después de refactorizar tus cargas de trabajo, refactoriza tus procesos de implementación y operativos para hacer lo siguiente:

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

Ha recogido información sobre estos procesos durante la fase de evaluación, que se ha llevado a cabo anteriormente en este proceso.

El tipo de refactorización que debes tener en cuenta para estos procesos depende de cómo los hayas diseñado e implementado. La refactorización también depende del estado final que quieras conseguir en cada proceso. Por ejemplo, plantéate lo siguiente:

  • Es posible que hayas implementado estos procesos en tu entorno de origen y que tengas la intención de diseñar e implementar procesos similares en Google Cloud. Por ejemplo, puedes refactorizar estos procesos para usar Cloud Build, Cloud Deploy e 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 que se dirijan a tu entorno de Google Cloud en lugar de a tu entorno de origen.
  • Una combinación de los enfoques anteriores.

Refactorizar los procesos de implementación y operativos puede ser complejo y requerir un esfuerzo considerable. 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 de implementación y operativos, probablemente tengas una idea de su diseño y complejidad. Si crees que necesitas dedicar mucho tiempo a refactorizar tu implementación y tus procesos operativos, te recomendamos que lo hagas en un proyecto independiente.

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

Este documento se centra en los procesos de implementación que generan los artefactos que se van a implementar y en cómo 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 tanto en tu entorno de origen como en Artifact Registry.
  3. Refactoriza tus procesos de implementación para implementar tus cargas de trabajo en tu entorno de destinoGoogle Cloud . Por ejemplo, puedes empezar desplegando un pequeño subconjunto de tus cargas de trabajo en Google Cloudcon artefactos almacenados en Artifact Registry. Después, aumenta gradualmente el número de cargas de trabajo implementadas en Google Cloudhasta que todas las cargas de trabajo que quieras migrar se ejecuten enGoogle Cloud.
  4. Refactoriza tus procesos de compilación para almacenar artefactos solo en Artifact Registry.
  5. Si es necesario, migra versiones anteriores de los artefactos para implementarlos desde los repositorios de tu entorno de origen a Artifact Registry. Por ejemplo, puedes copiar imágenes de contenedor en Artifact Registry.
  6. Retira los repositorios de tu entorno de origen cuando ya no los necesites.

Para facilitar las reversiones que puedan ser necesarias debido a problemas imprevistos durante la migración, puedes almacenar imágenes de contenedor tanto en tus repositorios de artefactos actuales en Google Cloud mientras se lleva a cabo la migración a Google Cloud . Por último, como parte de la retirada del servicio de tu entorno de origen, puedes refactorizar tus procesos de compilación de imágenes de contenedor para almacenar artefactos solo enGoogle Cloud .

Aunque no sea crucial para que la migración se lleve a cabo correctamente, es posible que tengas que migrar las versiones anteriores de tus artefactos del entorno de origen a tus repositorios de artefactos en Google Cloud. Por ejemplo, para admitir la restauración de tus cargas de trabajo a puntos arbitrarios en el tiempo, es posible que tengas que migrar versiones anteriores de tus artefactos a Artifact Registry. Para obtener más información, consulta Migrar imágenes desde un registro de terceros.

Si usas Artifact Registry para almacenar tus artefactos, te recomendamos que configures controles para proteger tus repositorios de artefactos, como el control de acceso, la prevención de la exfiltración de datos, el análisis de vulnerabilidades y Binary Authorization. Para obtener más información, consulta Controlar el acceso y proteger los artefactos.

Desplegar cargas de trabajo

Cuando los procesos de implementación estén listos, implementa tus cargas de trabajo en GKE. Para obtener más información, consulta la descripción general sobre el despliegue de cargas de trabajo.

Para preparar las cargas de trabajo que se van a desplegar en GKE, te recomendamos que analices tus descriptores de Kubernetes, ya que algunos Google Cloud recursos que GKE aprovisiona automáticamente se pueden configurar mediante etiquetas y anotaciones de Kubernetes en lugar de tener que aprovisionarlos manualmente. Por ejemplo, puede aprovisionar un balanceador de carga interno en lugar de uno externo añadiendo una anotación a un servicio LoadBalancer.

Validar las cargas de trabajo

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

  • Realiza pruebas de integración, de carga, de cumplimiento, de fiabilidad y otros procedimientos de verificación que te ayuden a asegurarte de que tus cargas de trabajo funcionan dentro de los parámetros esperados y de acuerdo con sus especificaciones.
  • Consulta los registros, las métricas y los informes de errores en Google Cloud Observability para identificar posibles problemas y detectar tendencias que te permitan anticiparte a los problemas antes de que se produzcan.

Para obtener más información sobre la validación de cargas de trabajo, consulta Pruebas de fiabilidad.

Exponer tus cargas de trabajo

Una vez que hayas completado las pruebas de validación de las cargas de trabajo que se ejecutan en tu entorno de GKE, expónlas para que se pueda acceder a ellas.

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

Para obtener más información sobre cómo exponer cargas de trabajo que se ejecutan en GKE, consulta los siguientes artículos:

Desviar el tráfico a tu entorno Google Cloud

Una vez que hayas verificado que las cargas de trabajo se ejecutan en tu entorno de GKE y que las hayas expuesto a los clientes, podrás transferir el tráfico de tu entorno de origen a tu entorno de GKE. Para ayudarte a evitar migraciones a gran escala y todos los riesgos relacionados, te recomendamos que transfieras gradualmente el tráfico de tu entorno de origen a GKE.

En función de cómo hayas diseñado tu entorno de GKE, tienes varias opciones para implementar un mecanismo de balanceo de carga que transfiera gradualmente el tráfico de tu entorno de origen a tu entorno de destino. Por ejemplo, puedes implementar una política de resolución de DNS que resuelva los registros DNS de acuerdo con alguna política para resolver un determinado porcentaje de solicitudes a direcciones IP que pertenezcan a tu entorno de GKE. También puede implementar un mecanismo de balanceo de carga mediante direcciones IP virtuales y balanceadores de carga de red.

Después de empezar a transferir tráfico gradualmente a tu entorno de GKE, te recomendamos que monitorices el comportamiento de tus cargas de trabajo a medida que aumenten.

Por último, realiza un cambio, que se produce cuando trasladas todo el tráfico de tu entorno de origen a tu entorno de GKE.

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

Retirar el entorno de origen

Una vez que las cargas de trabajo de tu entorno de GKE atiendan las solicitudes correctamente, podrás retirar el entorno de origen.

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

  • Crea una copia de seguridad de los datos para poder restaurar los recursos en el entorno de origen.
  • Informa a tus usuarios antes de retirar el entorno.

Para retirar tu entorno de origen, sigue estos pasos:

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

Para evitar que queden recursos huérfanos, es importante el orden en el que retires los recursos de tu entorno de origen. Por ejemplo, algunos proveedores requieren que desactives los servicios de Kubernetes que llevan a la creación de balanceadores de carga antes de poder desactivar las redes virtuales que contienen esos balanceadores de carga.

Optimizar tu Google Cloud entorno

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

  1. Evalúa tu entorno, tus equipos y tu bucle de optimización actuales.
  2. Establezca sus requisitos y objetivos de optimización.
  3. Optimiza tu entorno y tus equipos.
  4. Ajusta 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, consulta los artículos Migrar a Google Cloud: optimizar tu entorno y Google Cloud Well-Architected Framework: optimización del rendimiento. Google Cloud

En las siguientes secciones se integran las consideraciones de Migrar a Google Cloud: optimizar tu entorno.

Establecer los requisitos de optimización

Los requisitos de optimización te ayudan a acotar el ámbito de la iteración de optimización actual. Para obtener más información sobre los requisitos y objetivos de optimización, consulte Establecer los requisitos y objetivos de optimización.

Para establecer los requisitos de optimización de tu entorno de GKE, empieza por tener en cuenta los siguientes aspectos:

  • Seguridad, privacidad y cumplimiento: te ayudan a mejorar la postura de seguridad de tu entorno de GKE.
  • Fiabilidad: te ayuda a mejorar la disponibilidad, la escalabilidad y la resiliencia de tu entorno de GKE.
  • Optimización de costes: 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 forma eficiente.
  • Optimización del rendimiento: te ayuda a optimizar el rendimiento de las cargas de trabajo implementadas en tu entorno de GKE.

Seguridad, privacidad y cumplimiento

Fiabilidad

  • Mejora la fiabilidad de tus clústeres. Para ayudarte a diseñar un clúster de GKE que sea más resistente a las interrupciones de servicio de las zonas, te recomendamos que uses clústeres regionales en lugar de clústeres zonales o multizonales.

  • Copia de seguridad y restauración de cargas de trabajo. Configura un flujo de trabajo de copia de seguridad y restauración de cargas de trabajo con Copia de seguridad de GKE.

Optimización de costes

Para obtener más información sobre cómo optimizar el coste de tu entorno de GKE, consulta los siguientes artículos:

Eficiencia operativa

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

  • Diseña tus clústeres de GKE para que sean fungibles. Si consideras que tus clústeres son fungibles y automatizas su aprovisionamiento y configuración, puedes optimizar y generalizar los procesos operativos para mantenerlos, así como simplificar las migraciones y las actualizaciones de clústeres de GKE en el futuro. Por ejemplo, si necesitas actualizar un clúster de GKE fungible a una nueva versión de GKE, puedes aprovisionar y configurar automáticamente un clúster nuevo y actualizado, desplegar automáticamente cargas de trabajo en el nuevo clúster y retirar el clúster de GKE antiguo y obsoleto.
  • Monitoriza las métricas que te interesen. Asegúrate de que se recojan correctamente todas las métricas de interés sobre tus cargas de trabajo y clústeres. Además, compruebe que todas las alertas pertinentes que usan estas métricas como entradas estén configuradas y funcionen correctamente.

Para obtener más información sobre cómo configurar la monitorización, el registro y la creación de perfiles en tu entorno de GKE, consulta los siguientes artículos:

Optimización del rendimiento

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

Siguientes pasos

Colaboradores

Autor: Marco Ferrari | Arquitecto de soluciones en la nube