Migra contenedores a Google Cloud: migra Kubernetes a GKE

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 es parte de una serie de varias partes sobre la migración a Google Cloud. Si te interesa ver una descripción general de la serie, consulta Migración a Google Cloud: elige tu ruta de migración.

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

Este documento 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.

Cuando usas GKE, obtienes los siguientes beneficios:

En este documento, se supone que leíste las siguientes tareas y las conoces:

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

Ruta de migración con cuatro fases

Durante cada paso de migración, debes seguir las fases definidas en Migración a Google Cloud: Primeros pasos.

  1. Evalúa y descubre las cargas de trabajo.
  2. Planifica y compila una base.
  3. Implementa cargas de trabajo.
  4. Optimiza tu entorno.

Evalúa tu entorno

En la fase de evaluación, determinarás los requisitos y las dependencias para migrar tu entorno de Kubernetes autoadministrado a GKE:

  1. Crea un inventario completo de tus aplicaciones.
  2. Cataloga tus aplicaciones según sus propiedades y dependencias.
  3. Capacita y educa a tus equipos en Google Cloud.
  4. Compila un experimento y prueba de concepto en Google Cloud.
  5. Calcula el costo total de propiedad (TCO) del entorno de destino.
  6. Elige las cargas de trabajo que deseas migrar primero.

Las siguientes secciones se basan en el documento Migración a Google Cloud: evalúa y descubre tus cargas de trabajo.

Compila tus inventarios

Para determinar el alcance de tu migración, debes comprender tu entorno actual de Kubernetes. Primero, debes recopilar información sobre tus clústeres y, luego, enfocarte en las cargas de trabajo implementadas en esos clústeres y en sus dependencias. Al final de la fase de evaluación, tienes dos inventarios: uno para los clústeres y otro para las cargas de trabajo implementadas en esos 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 de arquitectura de hardware diferente de la que usas en tu entorno. El rendimiento de cada generación de arquitectura 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.
  • Clúster interno o externo. Evalúa a qué actores está expuesto cada clúster, ya sean internos o externos del entorno. Para respaldar los 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.
  • 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 antigua o muy reciente, es posible que estés usando características que no están disponibles en GKE. Puede que las características 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.

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.
  • Políticas y contextos de seguridad de los pods. Captura información sobre las PodSecurityPolicies y 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.

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 ResourceQuotas 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?
  • Escaladores automáticos de pod horizontal. Para migrar las políticas de ajuste de escala automático en el entorno nuevo, obtén información sobre cómo funciona el escalador automático de pod horizontal 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 los PersistenceVolumes que ya evaluaste.
  • 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 y los objetos Ingress? ¿Qué controladores de Ingress implementaste en los clústeres?
  • Malla de servicios. Si usas 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. Por ejemplo, ¿usas el mecanismo de incorporación automática para agregar servicios a la malla automáticamente?

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:

Completa la evaluación

Después de compilar los inventarios relacionados con tus clústeres y cargas de trabajo de Kubernetes, completa el resto de las actividades de la fase de evaluación en Migración a Google Cloud: evalúa y descubre tus cargas de trabajo.

Planifica y compila tu base

En la fase de planificación y compilación, aprovisionarás y configurarás la infraestructura de nube y los servicios compatibles con tus cargas de trabajo en Google Cloud:

  1. Compila una jerarquía de recursos.
  2. Configura la administración de identidades y accesos.
  3. Configura la facturación.
  4. Configura la conectividad de red.
  5. Endurece tu seguridad.
  6. Configura la supervisión y las alertas.

Si ya adoptaste la infraestructura como código para administrar las cargas de trabajo en tu entorno de Kubernetes, puedes aplicar el mismo proceso en tu entorno de Google Cloud. Analiza tus descriptores de Kubernetes porque algunos recursos de Google Cloud que te proporciona GKE de forma automática se pueden configurar mediante etiquetas y anotaciones de Kubernetes. Por ejemplo, puedes aprovisionar un balanceador de cargas interno en lugar de uno externo si agregas una anotación a un servicio LoadBalancer.

Las siguientes secciones se basan en Migración a Google Cloud: compila tu base.

Compila una jerarquía de recursos

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, como se detalla en Migración a Google Cloud: compila tu base y en Prepara un entorno de GKE para producción.

Por ejemplo, si necesitas un entorno de instancias múltiples 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.

Configura la administración de identidades y accesos

La Administración de identidades y accesos proporciona las herramientas para configurar de forma centralizada el control de acceso detallado en los recursos de nube. Para obtener más información, consulta Administración de identidades y accesos y Prepara un entorno de Google GKE para la producción.

Revisa cómo RBAC de Kubernetes interactúa con la administración de identidades y accesos en Google Cloud y configura el RBAC de acuerdo con los requisitos que recopilaste en la fase de evaluación.

Configura la facturación

Antes de aprovisionar recursos de Google Cloud, configura la Facturación de Cloud y comprende el modelo de precios de GKE. Para obtener más información, consulta Facturación.

Configura la conectividad de red

La configuración de red es un aspecto fundamental de tu entorno. Evalúa el modelo de red de GKE y los requisitos de conectividad de tus cargas de trabajo. Luego, puedes comenzar a planificar la configuración de red. Para obtener más información, consulta la sección sobre conectividad y herramientas de redes.

Endurece tu seguridad

Comprender las diferencias entre el modelo de seguridad de tu entorno y el modelo de Google Cloud y cómo endurecer la seguridad de tus clústeres de GKE es fundamental para proteger tus recursos críticos. Para obtener más información, consulta la sección sobre seguridad.

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's operations suite a la perfección, por lo que obtienes información de registro y supervisión de tus clústeres de GKE y las cargas de trabajo de estos. Para obtener más información, consulta la sección sobre supervisión y alertas.

Implementa tus cargas de trabajo

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

  1. Aprovisionar y configurar tu plataforma y entornos de ejecución
  2. Migrar datos de tu entorno anterior a tu entorno nuevo
  3. Implementar tus cargas de trabajo

Las siguientes secciones se basan en Migración a Google Cloud: transfiere grandes conjuntos de datos, Migración a Google Cloud: implementa cargas de trabajo y Migración a Google Cloud: migra de implementaciones manuales a implementaciones automatizadas en contenedores.

Aprovisiona y configura tu plataforma y entornos de ejecución

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

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

Después de crear tus clústeres de GKE y antes de implementar cualquier carga de trabajo, aprovisiona y configura espacios de nombres, RBAC, políticas de red, ResourceQuotas y PodSecurityPolicies para cada clúster de GKE.

Migra datos de tu entorno anterior a tu entorno nuevo

Ahora puedes transferir datos que necesiten tus cargas de trabajo con estado.

En Migración a Google Cloud: transfiere grandes conjuntos de datos encontrarás información sobre este tema. Si planeas modernizar tus cargas de trabajo para aplicar una arquitectura de microservicios, o si ya la adoptaste, consulta Migra una aplicación monolítica a microservicios en GKE. Para obtener más información sobre las opciones de almacenamiento de datos que tienes en GKE, consulta la configuración de almacenamiento. Por ejemplo, puedes usar discos persistentes de Compute Engine, tanto zonales como replicados en una región, o puedes usar Filestore.

Antes de transferir tus datos, aprovisionarás toda la infraestructura de almacenamiento necesaria. Si usas algún aprovisionador de StorageClass, debes configurarlo en los clústeres nuevos.

Implementa tus cargas de trabajo

Para implementar tus cargas de trabajo, diseña y pon en práctica un proceso de implementación que cumpla con tus requisitos. Si no estás satisfecho con tus procesos de implementación y deseas migrar a un proceso más moderno y automatizado, consulta Migración a Google Cloud: migra de implementaciones manuales a implementaciones de automatización y en contenedores. En ese artículo, se brinda orientación para migrar las implementaciones manuales a las herramientas de organización de contenedores y automatización. La fase de implementación también es una oportunidad para modernizar tus cargas de trabajo. Por ejemplo, si usas pods en tu entorno, considera migrar esas cargas de trabajo a implementaciones.

Cuando tu proceso de implementación esté listo, puedes implementar tus cargas de trabajo en GKE.

Optimiza tu entorno

La optimización es la última fase de la migración. En esta fase, harás que tu entorno sea más eficiente que antes. También, ejecutarás varias iteraciones de un ciclo repetible hasta que tu entorno cumpla con tus requisitos de optimización. Los siguientes son los pasos de este ciclo repetible:

  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 tu entorno y tus equipos.
  4. Ajusta el ciclo de optimización.

Las siguientes secciones se basan en Migración a Google Cloud: optimiza tu entorno.

Evalúa tu entorno actual, los equipos y el ciclo de optimización

Si bien la primera evaluación se centra en la migración de tu entorno a GKE, esta evaluación se adapta a la fase de optimización.

Establece tus requisitos de optimización

Revisa los siguientes requisitos de optimización para tu entorno de GKE:

Aunque puedes cumplir con algunos de estos requisitos de optimización en un entorno de Kubernetes, es más fácil en GKE porque no tienes que invertir el esfuerzo para mantener el clúster en ejecución. Entonces, puedes enfocarte en la optimización.

Completa la optimización

Después de llenar la lista de los requisitos de optimización, completa el resto de las actividades de la fase de optimización.

¿Qué sigue?