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 pertenece a 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:
- Migra contenedores a Google Cloud: migra Kubernetes a GKE (este documento)
- Migra contenedores a Google Cloud: migra a un nuevo entorno de GKE
- Migra contenedores a Google Cloud: Migra de OpenShift a GKE Enterprise
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:
- No es necesario que administres los nodos del plano de control (instancia principal).
- Puedes usar la experiencia de Google para la seguridad, las Herramientas de redes, las actualizaciones de Kubernetes y el aprovisionamiento automático de nodos.
- Puedes escalar los clústeres de forma automática si agregas nodos o ajustas los límites de solicitud de memoria y CPU para los pods.
En el siguiente diagrama, se ilustra la ruta del recorrido de tu migración.
Durante cada paso de migración, debes seguir las fases definidas en Migra a Google Cloud: comienza ahora:
- Evalúa y descubre las cargas de trabajo.
- Planifica y compila una base.
- Implementa cargas de trabajo.
- Optimiza tu entorno.
Evalúa el entorno
En la fase de evaluación, determinarás los requisitos y las dependencias para migrar tu entorno de Kubernetes autoadministrado a GKE:
- Crea un inventario completo de tus aplicaciones.
- Cataloga tus aplicaciones según sus propiedades y dependencias.
- Capacita y educa a tus equipos en Google Cloud.
- Compila un experimento y prueba de concepto en Google Cloud.
- Calcula el costo total de propiedad (TCO) del entorno de destino.
- Elige las cargas de trabajo que deseas migrar primero.
Las siguientes secciones se basan en Migrate to 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.
- 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.
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, Vertical Pod Autoscaler y el Multidimensional 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 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 una inyección automática de sidecar para agregar sidecars a los pods de Kubernetes de forma automática?
- 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.
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 StorageClases 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.
- Registro, supervisión y seguimiento. Captura información sobre tus sistemas de supervisión, registro y seguimiento. Puedes integrar los sistemas a Google Cloud Observability o puedes usar Google Cloud Observability como única herramienta de supervisión, registro y seguimiento. Por ejemplo, puedes integrar Google Cloud Observability en otros servicios, configurar interfaces de registro para tus lenguajes de programación preferidos y usar el agente de Cloud Logging en tus VMs. GKE se integra en Google Cloud Observability y en los Registros de auditoría de Cloud. También puedes personalizar registros de Cloud Logging para GKE con Fluentd y, luego, procesar registros a gran escala con Dataflow.
- 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.
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 Migra 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:
- Compila una jerarquía de recursos.
- Configura la administración de identidades y accesos.
- Configura la facturación.
- Configura la conectividad de red.
- Endurece tu seguridad.
- 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 Migra 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 Migra a Google Cloud: Compila tu base.
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.
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 Identity and Access Management.
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 Observability 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:
- Aprovisionar y configurar tu entorno de GKE.
- Configurar tus clústeres de GKE.
- Migrar datos de tu entorno de origen a Google Cloud.
- Implementar tus cargas de trabajo en tu entorno de GKE.
- Validar las cargas de trabajo.
- Exponer las cargas de trabajo que se ejecutan en GKE.
- Cambiar el tráfico del entorno de origen al entorno de GKE.
- Retirar de servicio el entorno de origen.
Aprovisiona y configura la 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:
- La cantidad de clústeres, la cantidad de nodos por clúster, los tipos de clústeres, la configuración de cada clúster y cada nodo, y los planes de escalabilidad de cada clúster
- El modo de operación de cada clúster. GKE ofrece dos modos de operación para clústeres: GKE Autopilot y GKE Standard.
- La cantidad de clústeres privados
- La opción entre las herramientas de redes nativas de VPC o basadas en routers
- Las versiones de Kubernetes y los canales de versiones que necesitas en tus clústeres de GKE.
- Los grupos de nodos para agrupar de forma lógica los nodos en tus clústeres de GKE, y si necesitas crear grupos de nodos automáticamente con el aprovisionamiento automático de nodos
- Los procedimientos de inicialización que puedes transferir de tu entorno al entorno de GKE y los nuevos procedimientos que puedes implementar. Por ejemplo, puedes iniciar los nodos de GKE de forma automática si implementas uno o varios procedimientos de inicialización con posibles privilegios para cada nodo o grupo de nodos en tus clústeres
- Los planes de escalabilidad para cada clúster
- Las características de GKE adicionales que necesitas, como Anthos Service Mesh, y los complementos de GKE, como Copia de seguridad para GKE.
Para obtener más información sobre el aprovisionamiento de clústeres de GKE, consulta los siguientes vínculos:
- Acerca de las opciones de configuración del clúster.
- Crea diferentes tipos de clústeres de GKE.
- Administra, configura e implementa clústeres de GKE.
- Información sobre la seguridad de GKE.
- Endurece la seguridad del clúster.
Configura tus clústeres
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 cuotas de recursos 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:
- 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.
- 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.
- Refactoriza cualquier objeto incompatible para que sea compatible con GKE o retíralo.
- Migra estos objetos a tus clústeres de GKE.
- Configura cualquier objeto adicional que necesites en tus clústeres de GKE.
Migra la configuración del clúster
Para migrar la configuración de tus clústeres de Kubernetes del entorno de origen a tus clústeres de GKE, puedes usar el siguiente enfoque:
Si adoptaste procesos de infraestructura como código para configurar objetos en los clústeres de Kubernetes en el entorno de origen, puedes hacer lo siguiente:
- Migra objetos que sean compatibles con GKE solo con cambios de metadatos menores, como nombres de objetos, ubicación o espacio de nombres mediante las herramientas de Kubernetes (kubectl) o servicios administrados (Sincronizador de configuración).
- Refactoriza o retira objetos que no son compatibles con GKE.
Si no adoptaste procesos de infraestructura como código, puedes hacer lo siguiente:
Migrar datos
Para migrar datos que tus cargas de trabajo con estado necesitan de tu entorno de origen a tu entorno de GKE, te recomendamos que diseñes un plan de migración de datos mediante las instrucciones en Migra a Google Cloud: Transfiere grandes conjuntos de datos.
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.
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.
Después de aprovisionar StorageClasses, aprovisiona todos los PersistentVolumes necesarios para almacenar los datos que se migrarán. Luego, migra los datos del entorno de origen a estos PersistentVolumes. Los detalles de esta migración de datos dependen de las características del entorno de origen. Por ejemplo, puedes hacer lo siguiente:
- Aprovisionar una instancia de Compute Engine.
- Adjuntar un disco persistente a la instancia de Compute Engine.
- Copiar los datos del entorno de origen al disco persistente.
- Cerrar la instancia de Compute Engine.
- Desconectar el disco persistente de la instancia de Compute Engine.
- Configurar el disco persistente como un PersistentVolume de GKE.
- Inhabilitar la instancia de Compute Engine.
Para obtener más información sobre el uso de discos persistentes de Compute Engine como PersistentVolumes de GKE, consulta Usa discos persistentes preexistentes como PersistentVolumes.
Implementa tus cargas de trabajo
Para implementar tus cargas de trabajo, recomendamos uno de los siguientes enfoques:
- Implementar un proceso de implementación en Google Cloud.
- Refactorizar tus procesos de implementación existentes para implementar cargas de trabajo en tu entorno de GKE.
La fase de implementación también es una oportunidad para modernizar los procesos de implementación y las cargas de trabajo. Por ejemplo, si usas Pods en tu entorno, considera migrar esas cargas de trabajo a Deployments de Kubernetes
Para obtener más información sobre la refactorización de tus procesos de implementación, consulta Migra a Google Cloud: Migra de implementaciones manuales a contenedores y automatización En ese artículo, se brinda orientación para migrar las implementaciones manuales a las herramientas de organización de contenedores y automatización.
Cuando tus procesos de implementación estén listos, puedes implementar tus cargas de trabajo en GKE.
Ejecuta un proceso de implementación en Google Cloud
Para ejecutar tus procesos de implementación en Google Cloud, usa la escalabilidad, las operaciones administradas y el diseño de seguridad de los productos de Google Cloud.
Para obtener más información sobre la ejecución de procesos de implementación en Google Cloud, consulta:
- Migra a Google Cloud: implementa las cargas de trabajo
- Descripción general de Cloud Build
- Almacena artefactos de compilación en Artifact Registry
- Descripción general de Cloud Deploy
Refactoriza tus procesos de implementación existentes
Aunque no es estrictamente necesario para un resultado exitoso, también puedes refactorizar tus procesos de implementación durante la migración. Por ejemplo, puedes modernizar y automatizar los procesos de implementación existentes y, luego, implementarlos en Google Cloud.
Migrar los procesos de implementación a Google Cloud al mismo tiempo que migras las cargas de trabajo puede ser complejo y puede aumentar el riesgo de fallar la migración. Para las migraciones particularmente complejas, también puedes considerar la migración del proceso de implementación por segunda vez y continuar usando las actuales a fin de implementar cargas de trabajo en el entorno de GKE. Este enfoque te ayuda a reducir la complejidad de la migración. Si continúas usando los procesos de implementación existentes, puedes simplificar el proceso de migración.
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 cómo GKE admite los servicios de Kubernetes, consulta 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:
- Expón aplicaciones con Services
- Acerca de Gateway
- GKE Ingress para balanceadores de cargas de aplicaciones externos
- Del perímetro a la malla: Exposición de aplicaciones de la malla de servicios a través de Ingress de GKE
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:
- Inhabilita las cargas de trabajo que se ejecutan en clústeres en tu entorno de origen.
- Borra los clústeres en tu entorno de origen.
- 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 el 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:
- Evalúa tu entorno actual, los equipos y el ciclo de optimización.
- Establece tus requisitos y objetivos de optimización.
- Optimiza tu entorno y tus equipos.
- Ajusta el ciclo de optimización.
Las siguientes secciones se basan en Migra 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:
- Implementa procesos de implementación avanzados. Los procesos como las implementaciones Canary o las implementaciones azul-verde te brindan mayor flexibilidad y pueden aumentar la confiabilidad de tu entorno, extender las pruebas y reducir el impacto de cualquier problema para tus usuarios.
- Configura una malla de servicios. Si aplicas una malla de servicios en tu entorno, usas características como la observabilidad, la administración del tráfico y la autenticación mutua para tus servicios, y reduces el esfuerzo en tus equipos de DevOps. Puedes implementar una malla de servicios de varios clústeres con el fin de segmentar mejor tus cargas de trabajo o una malla de servicios expandida para respaldar tu migración al entorno nuevo.
- Configura el ajuste de escala automático. Tienes diferentes opciones complementarias para escalar el entorno de GKE de manera automática. Puedes escalar los clústeres de forma automática y las cargas de trabajo dentro de cada clúster. Si configuras el escalador automático del clúster, puedes agregar nodos trabajadores al clúster o quitarlos a fin de cambiar el tamaño de un clúster de GKE de forma automática según las demandas de tus cargas de trabajo. Si deseas ajustar tus cargas de trabajo de forma automática, ajusta las solicitudes de consumo y los límites de CPU y memoria con el Ajuste de escala automático vertical de pods. Cuando usas el escalador automático, no necesitas pensar en los valores para especificar las solicitudes de CPU y memoria de cada contenedor. También puedes exportar las métricas proporcionadas por el escalador automático para redimensionar las cargas de trabajo de GKE a gran escala.
- Reduce los costos con máquinas virtuales (VM) interrumpibles. Si algunas de tus cargas de trabajo toleran entornos de ejecución sin garantías de disponibilidad, considera implementar esas cargas de trabajo en un grupo de nodos compuesto por VM interrumpibles. Las VM interrumpibles tienen un precio menor que las VM estándar de Compute Engine, por lo que puedes reducir los costos de tus clústeres.
- Integra GKE con otros productos. Algunos productos de Google Cloud pueden integrarse a GKE para endurecer la seguridad del entorno. Por ejemplo, puedes analizar contenedores en busca de vulnerabilidades o usar imágenes base administradas en Container Registry.
- 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 los clústeres 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.
Arquitectura de un entorno de varios clústeres. Cuando implementas un entorno de varios clústeres en GKE, debes hacer lo siguiente:
- Reducir las posibilidades de ingresar puntos únicos de fallo en tu arquitectura.
- Beneficiarte de la mayor flexibilidad de la posibilidad de probar cambios de configuración en un subconjunto de tus clústeres de GKE.
- Distribuir cargas de trabajo en los clústeres 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?
- Consulta Primeros pasos de la migración a Google Cloud.
- Consulta Endurece la seguridad de tu clúster y lee la descripción general de seguridad de GKE.
- Inicia automáticamente los nodos de GKE con DaemonSets.
- Encuentra ayuda para tu migración a Google Cloud.
- Explora arquitecturas de referencia, diagramas y prácticas recomendadas sobre Google Cloud. Consulta nuestro Cloud Architecture Center.