Mediante este documento, podrás planificar, diseñar y, también, implementar tu migración desde un entorno de Kubernetes autoadministrado en Google Kubernetes Engine (GKE). Si se hace de forma incorrecta, mover las aplicaciones de un entorno a otro puede ser una tarea desafiante, por lo que debes planificar y ejecutar tu migración con cuidado.
Este documento resulta útil si planeas migrar de un entorno de Kubernetes autoadministrado a GKE. Es posible que tu entorno se ejecute en un entorno local, en un entorno de hosting privado o en otro proveedor de servicios en la nube. Este documento también te resultará útil si estás evaluando la posibilidad de migrar y deseas explorar cómo podría ser.
GKE es un servicio de Kubernetes administrado por Google que puedes usar para implementar y operar aplicaciones en contenedores a gran escala con la infraestructura de Google. Además, proporciona funciones que te ayudan a administrar tu entorno de Kubernetes, como las siguientes:
- Dos ediciones: GKE Standard y GKE Enterprise Con GKE Standard, obtienes acceso a un nivel estándar de funciones principales. Con GKE Enterprise, obtienes acceso a todas las capacidades de GKE. Para obtener más información, consulta Ediciones de GKE.
- Dos modos de operación: Standard y Autopilot. Con Standard, administras la infraestructura subyacente y la configuración de cada nodo en tu clúster de GKE. Con Autopilot, GKE administra la infraestructura subyacente, como la configuración de los nodos, el ajuste de escala automático, las actualizaciones automáticas, la configuración de seguridad y de red de referencia. Para obtener más información sobre los modos de operación de GKE, consulta Elige un modo de operación de GKE.
- Acuerdo de nivel de servicio único en la industria para Pods cuando se usa Autopilot en varias zonas.
- Creación y eliminación automatizadas de grupos de nodos con el aprovisionamiento automático de nodos.
- Herramientas de redes de varios clústeres administradas por Google para ayudarte a diseñar e implementar arquitecturas distribuidas y de alta disponibilidad para tus cargas de trabajo.
Para obtener más información sobre GKE, consulta la Descripción general de GKE.
Para esta migración a Google Cloud, te recomendamos que sigas el framework de migración que se describe en Migra a Google Cloud: Comienza ahora.
En el siguiente diagrama, se ilustra la ruta del recorrido de tu migración.
Puedes migrar de tu entorno de origen a Google Cloud en una serie de iteraciones. Por ejemplo, puedes migrar algunas cargas de trabajo primero y otras más tarde. Para cada iteración de migración independiente, debes seguir las fases del framework de migración general:
- Evalúa y descubre las cargas de trabajo y los datos.
- Planifica y compila una base en Google Cloud.
- Migra tus cargas de trabajo y datos a Google Cloud.
- Optimiza tu entorno de Google Cloud .
Para obtener más información sobre las fases de este framework, consulta Migra a Google Cloud: Comienza ahora.
Para diseñar un plan de migración eficaz, te recomendamos que valides cada paso del plan y te asegures de tener una estrategia de reversión. Para ayudarte a validar tu plan de migración, consulta Migra a Google Cloud: Prácticas recomendadas para validar un plan de migración.
Evalúa el entorno
En la fase de evaluación, determinarás los requisitos y las dependencias para migrar tu entorno de origen a Google Cloud.
La fase de evaluación es fundamental para el éxito de la migración. Debes obtener un conocimiento profundo sobre las cargas de trabajo que deseas migrar, sus requisitos, sus dependencias y tu entorno actual. Debes saber cuál es tu punto de partida para planificar y ejecutar de forma correcta una migración de Google Cloud.
La fase de evaluación consta de las siguientes tareas:
- Crea un inventario completo de tus aplicaciones.
- Cataloga tus cargas de trabajo según sus propiedades y dependencias.
- Capacita y educa a tus equipos en Google Cloud.
- Crea experimentos y pruebas de concepto en Google Cloud.
- Calcula el costo total de propiedad (TCO) del entorno de destino.
- Elige la estrategia de migración para tus cargas de trabajo.
- Elige tus herramientas de migración.
- Define el plan y el cronograma de migración.
- Valida tu plan de migración.
Para obtener más información sobre la fase de evaluación y estas tareas, consulta Migra a Google Cloud: Evalúa y descubre tus cargas de trabajo. Las siguientes secciones se basan en la información de ese documento.
Compila tus inventarios
Para definir el alcance de tu migración, crea dos inventarios:
- Es el inventario de tus clústeres.
- El inventario de tus cargas de trabajo implementadas en esos clústeres
Después de crear estos inventarios, puedes hacer lo siguiente:
- Evalúa los procesos operativos y de implementación de tu entorno de origen.
- Evalúa los servicios de asistencia y las dependencias externas.
Crea el inventario de tus clústeres
Con el fin de compilar el inventario de los clústeres, considera lo siguiente para cada clúster:
- Cantidad y tipo de nodos. Cuando sabes cuántos nodos tienes en tu entorno actual y las características de cada uno, puedes clasificar los clústeres cuando migras a GKE. Los nodos de tu entorno nuevo pueden ejecutarse en una arquitectura de hardware o generación diferente de la que usas en tu entorno. El rendimiento de cada arquitectura y generación es diferente, por lo que la cantidad de nodos que necesitas en tu entorno nuevo puede ser diferente de la de tu entorno actual. Evalúa cualquier tipo de hardware que uses en tus nodos, como dispositivos de almacenamiento de alto rendimiento, GPU y TPU. Evalúa qué imagen del sistema operativo usas en tus nodos.
- Clúster interno o externo. Evalúa a qué actores está expuesto cada clúster, ya sean internos o externos del entorno. Para respaldar tus casos de uso, esta evaluación incluye las cargas de trabajo que se ejecutan en el clúster y las interfaces que interactúan con tus clústeres.
- Instancias múltiples. Si administras clústeres de instancias múltiples en tu entorno, evalúa si funcionan en tu nuevo entorno de Google Cloud. Este es un buen momento para evaluar cómo mejorar tus 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 ejecutas una versión anterior o recientemente lanzada de Kubernetes, es posible que estés usando funciones que no están disponibles en GKE. Es posible 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.
- Configuración de red Evalúa la configuración de red de tus clústeres, su asignación de direcciones IP, cómo configuraste sus complementos de redes, cómo configuraste sus servidores DNS y proveedores de servicios de DNS, si configuraste alguna forma de NAT o SNAT para estos clústeres y si forman parte de un entorno de varios clústeres.
- Cumplimiento: Evalúa los requisitos normativos y de cumplimiento que deben satisfacer tus clústeres, y si cumples con estos requisitos.
- Cuotas y límites. Evalúa cómo configuraste las cuotas y los límites para tus clústeres. Por ejemplo, ¿cuántos Pods puede ejecutar cada nodo? ¿Cuántos nodos puede tener un clúster?
- Etiquetas Evalúa los metadatos que aplicaste a los clústeres, los grupos de nodos y los nodos, y cómo los usas. Por ejemplo, podrías generar informes con una atribución de costos detallada basada en etiquetas.
Los siguientes elementos que debes evaluar en tu inventario se centran en la seguridad de tu infraestructura y en los clústeres de Kubernetes:
- Espacios de nombres Si usas espacios de nombres de Kubernetes en tus clústeres para separar los recursos de manera lógica, evalúa qué recursos hay en cada espacio de nombres y comprende por qué creaste esta separación. Por ejemplo, es posible que uses espacios de nombres como parte de tu estrategia de instancias múltiples. Es posible que tengas cargas de trabajo implementadas en espacios de nombres reservados para los componentes del sistema de Kubernetes y que no tengas tanto control en GKE.
- Control de acceso según la función (RBAC): Si usas la autorización de RBAC en tus clústeres, enumera una descripción de todos los ClusterRoles y ClusterRoleBindings que configuraste en los clústeres.
- Políticas de red Enumera todas las políticas de red que configuraste en tus clústeres y comprende cómo funcionan las políticas de red en GKE.
- Contextos de seguridad de pods Captura información sobre los contextos de seguridad de los pods que configuraste en los clústeres y obtén más información sobre cómo funcionan en GKE.
- Cuentas de servicio. Si algún proceso de tu clúster está interactuando con el servidor de la API de Kubernetes, captura información sobre las cuentas de servicio que usa.
Cuando compilas el inventario de tus clústeres de Kubernetes, es posible que algunos de ellos deban retirarse como parte de tu migración. Asegúrate de que tu plan de migración incluya la eliminación de esos recursos.
Crea el inventario de tus cargas de trabajo de Kubernetes
Después de completar el inventario de clústeres de Kubernetes y evaluar la seguridad de tu entorno, crea el inventario de las cargas de trabajo implementadas en esos clústeres. Cuando evalúes las cargas de trabajo, recopila información sobre los siguientes aspectos:
- Pods y controladores. Para calcular el tamaño de los clústeres en tu entorno nuevo, evalúa cuántas instancias de cada carga de trabajo implementaste y si usas cuotas de recursos y límites de consumo de recursos de procesamiento. Recopila información sobre las cargas de trabajo que se ejecutan en los nodos del plano de control de cada clúster y los controladores que usa cada una de ellas. Por ejemplo, ¿cuántas implementaciones usas? ¿Cuántos DaemonSets usas?
- Jobs y CronJobs. Es posible que tus clústeres y cargas de trabajo deban ejecutar Jobs o CronJobs como parte de sus procedimientos de inicialización o de operación. Evalúa cuántas instancias de Jobs y CronJobs implementaste, y las responsabilidades y los criterios de finalización para cada instancia.
- Escaladores automáticos de Kubernetes Para migrar tus políticas de ajuste de escala automático en el entorno nuevo, obtén información sobre cómo funcionan Horizontal Pod Autoscaler y Vertical Pod Autoscaler en GKE.
- Cargas de trabajo sin estado y con estado. Las cargas de trabajo sin estado no almacenan datos ni estados en el clúster o en el almacenamiento continuo. Las aplicaciones con estado guardan los datos para usarlos más adelante. Para cada carga de trabajo, evalúa qué componentes tienen estado y cuáles no lo tienen, ya que migrar cargas de trabajo con estado suele ser más difícil que migrar las que no lo tienen.
- Características de Kubernetes. En el inventario del clúster puedes encontrar la información sobre qué versión de Kubernetes ejecuta cada clúster. Revisa las notas de la versión de cada versión de Kubernetes para saber qué características incluye y cuáles no. Luego, evalúa tus cargas de trabajo en función de las características de Kubernetes que necesitas. El objetivo de esta tarea es saber si usas características obsoletas o que aún no están disponibles en GKE. Si encuentras características no disponibles, deja de usar las características obsoletas y adopta las nuevas cuando estén disponibles en GKE.
- Almacenamiento. Para las cargas de trabajo con estado, evalúa si usan PersistenceVolumeClaims. Enumera los requisitos de almacenamiento, como el tamaño y el modo de acceso y la forma en que estos PersistenceVolumeClaims se asignan a PersistenceVolumes. Para tener en cuenta el crecimiento futuro, evalúa si necesitas expandir cualquier PersistenceVolumeClaim.
- Incorpora secretos y configuración. Para evitar la necesidad de volver a compilar tus artefactos implementables cada vez que haya un cambio en la configuración de tu entorno, incorpora la configuración y los secretos en los Pods con ConfigMaps y Secrets. Para cada carga de trabajo, evalúa qué ConfigMaps y Secretos usa esa carga de trabajo y cómo propagas esos objetos.
- Dependencias. Es probable que tus cargas de trabajo no funcionen de forma aislada. Pueden tener dependencias, ya sean internas al clúster o de sistemas externos. Para cada carga de trabajo, captura las dependencias y si tus cargas de trabajo tienen alguna tolerancia cuando las dependencias no están disponibles. Por ejemplo, las dependencias comunes incluyen sistemas de archivos distribuidos, bases de datos, plataformas de distribución secretas, sistemas de administración de identidades y accesos, mecanismos de descubrimiento de servicios y cualquier otro sistema externo.
- Servicios de Kubernetes. Para exponer tus cargas de trabajo a clientes internos y externos, usa Servicios. Para cada servicio, debes conocer su tipo. Para los servicios expuestos de forma externa, evalúa cómo ese servicio interactúa con el resto de tu infraestructura. Por ejemplo, ¿cómo admite tu infraestructura los servicios LoadBalancer, los objetos Gateway y los objetos Ingress? ¿Qué controladores de Ingress implementaste en tus clústeres?
- Malla de servicios. Si usas una malla de servicios en tu entorno, 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 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 programen solo en ciertos nodos de tu clúster de Kubernetes, puede significar que los Pods necesitan recursos especializados que solo están disponibles en esos nodos.
- Autenticación: Evalúa cómo se autentican tus cargas de trabajo en los recursos de tu clúster y en los recursos externos.
Evalúa los servicios de asistencia y las dependencias externas
Después de evaluar tus clústeres y sus cargas de trabajo, evalúa el resto de los servicios y aspectos de asistencia en tu infraestructura, como los siguientes:
- StorageClasses y PersistentVolumes. Evalúa cómo tu infraestructura respalda a PersistentVolumeClaims mediante la confección de una lista de StorageClasses para PersistentVolumes de aprovisionamiento dinámico y aprovisionamiento estático. Para cada PersistentVolume, ten en cuenta los siguientes aspectos: capacidad, modo de volumen, modo de acceso, clase, política de reclamo, opciones de activación y afinidad de nodos.
- VolumeSnapshots y VolumeSnapshotContents. Para cada PersistentVolume, evalúa si configuraste VolumeSnapshot y si necesitas migrar cualquier VolumeSnapshotContents existente.
- Controladores de Container Storage Interface (CSI). Si se implementa en tus clústeres, evalúa si estos controladores son compatibles con GKE y si necesitas adaptar la configuración de los volúmenes para que funcionen con controladores de CSI que son compatibles con GKE.
- Almacenamiento de datos. Si dependes de sistemas externos para aprovisionar PersistentVolumes, proporciona una manera de que las cargas de trabajo en tu entorno de GKE usen esos sistemas. La localidad de los datos tiene un impacto en el rendimiento de las cargas de trabajo con estado, ya que la latencia entre tus sistemas externos y tu entorno de GKE es proporcional a la distancia entre ellos. Para cada sistema de almacenamiento de datos externo, ten en cuenta su tipo, como los volúmenes en bloque, el almacenamiento de archivos o el almacenamiento de objetos, y cualquier requisito de rendimiento y disponibilidad que deba cumplir.
- Recursos personalizados y complementos de Kubernetes Recopila información sobre cualquier recurso personalizado de Kubernetes y cualquier complemento de Kubernetes que puedas haber implementado en los clústeres, ya que es posible que no funcionen en GKE o que debas modificarlos. Por ejemplo, si un recurso personalizado interactúa con un sistema externo, evalúa si es aplicable a tu entorno de Google Cloud .
- Copia de seguridad Evalúa cómo realizas copias de seguridad de la configuración de tus clústeres y los datos de cargas de trabajo con estado en tu entorno de origen.
Evalúa los procesos operativos y de implementación
Es fundamental comprender claramente cómo funcionan los procesos operativos y de implementación. Estas son una parte fundamental de las prácticas que preparan y mantienen tu entorno de producción y las cargas de trabajo que se ejecutan allí.
Tus procesos operativos y de implementación pueden compilar los artefactos que tus cargas de trabajo necesitan para funcionar. Por lo tanto, debes recopilar información sobre cada tipo de artefacto. Por ejemplo, un artefacto puede ser un paquete de sistema operativo, un paquete de implementación de aplicación, una imagen de sistema operativo, una imagen de contenedor o algo más.
Además del tipo de artefacto, considera cómo completar las siguientes tareas:
- Desarrolla tus cargas de trabajo. Evalúa los procesos que tienen implementados los equipos de desarrollo para compilar tus cargas de trabajo. Por ejemplo, ¿cómo diseñan, codifican y prueban tus cargas de trabajo tus equipos de desarrollo?
- Genera los artefactos que implementes en tu entorno de origen. Para implementar tus cargas de trabajo en tu entorno de origen, es posible que generes artefactos implementables, como imágenes de contenedores o imágenes de sistemas operativos, o que personalices artefactos existentes, como imágenes de sistemas operativos de terceros, instalando y configurando software. La recopilación de información sobre cómo generas estos artefactos te ayuda a garantizar que los artefactos generados sean adecuados para la implementación enGoogle Cloud.
Almacena los artefactos. Si produces artefactos que almacenas en un registro de artefactos en tu entorno de origen, debes hacer que los artefactos estén disponibles en tu entorno de Google Cloud . Para ello, puedes emplear estrategias como las siguientes:
- Establece un canal de comunicación entre los entornos: Haz que los artefactos de tu entorno de origen sean accesibles desde el entorno deGoogle Cloud destino.
- Refactoriza el proceso de compilación de artefactos: Completa una refactorización menor de tu entorno de origen para que puedas almacenar artefactos tanto en el entorno de origen como en el de destino. Este enfoque respalda tu migración, ya que compila la infraestructura, como un repositorio de artefactos, antes de que debas implementar procesos de compilación de artefactos en el entorno de Google Clouddestino. Puedes implementar este enfoque directamente o basarte en el enfoque anterior de establecer primero un canal de comunicación.
Tener artefactos disponibles en los entornos de origen y destino te permite enfocarte 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 el código Como parte de los procesos de compilación de artefactos, es posible que uses el análisis de código para protegerte contra vulnerabilidades comunes y la exposición no deseada a la red, y la firma de código para asegurarte de que solo se ejecute código de confianza en tus entornos.
Implementa artefactos en tu entorno de origen. Después de generar artefactos implementables, es posible que los implementes en tu entorno de origen. Te recomendamos que evalúes cada proceso de implementación. La evaluación ayuda a garantizar que tus procesos de implementación sean compatibles con Google Cloud. También te ayuda a comprender el esfuerzo que se necesitará para refactorizar los procesos con el tiempo. Por ejemplo, si tus procesos de implementación solo funcionan con tu entorno de origen, es posible que debas refactorizarlos para que se orienten a tu entorno de Google Cloud .
Incorpora la configuración del entorno de ejecución. Es posible que estés insertando una configuración del entorno de ejecución para clústeres, entornos de ejecución o implementaciones de cargas de trabajo específicos. La configuración puede inicializar variables de entorno y otros valores de configuración, como secretos, credenciales y claves. Para garantizar que los procesos de inserción de configuración del entorno de ejecución funcionen en Google Cloud, te recomendamos que evalúes cómo estás configurando las cargas de trabajo que se ejecutan en tu entorno de origen.
Registro, supervisión y generación de perfiles. Evalúa los procesos de registro, supervisión y generación de perfiles que tienes implementados para supervisar el estado de tu entorno de origen, las métricas de interés y cómo consumes los datos que proporcionan estos procesos.
Autenticación. Evalúa cómo te autenticas en tu entorno de origen.
Aprovisiona y configura tus recursos. Para preparar tu entorno de origen, es posible que hayas diseñado e implementado procesos que aprovisionen y configuren recursos. Por ejemplo, puedes usar Terraform junto con herramientas de administración de configuración para aprovisionar y configurar recursos en tu entorno de origen.
Planifica y compila tu base
En la fase de planificación y compilación, aprovisionarás y configurarás la infraestructura para hacer lo siguiente:
- Admitir tus cargas de trabajo en tu entorno de Google Cloud
- Conecta tu entorno de origen y tu entorno de Google Cloud para completar la migración.
La fase de planificación y compilación se compone de las siguientes tareas:
- Compila una jerarquía de recursos.
- Configura Identity and Access Management (IAM) de Google Cloud.
- Configura la facturación.
- Configura la conectividad de red.
- Endurece tu seguridad.
- Configurar el registro, la supervisión y las alertas
Para obtener más información sobre cada una de estas tareas, consulta Migra a Google Cloud: Planifica y compila tu base.
En las siguientes secciones, se integran las consideraciones de Migra aGoogle Cloud: Planifica y compila tu base.
Planifica la función multiusuario
Para diseñar una jerarquía de recursos eficiente, considera la forma en que tu empresa y tus estructuras organizativas se asignan a Google Cloud. Por ejemplo, si necesitas un entorno multiusuario en GKE, puedes elegir entre las siguientes opciones:
- Crear un Google Cloud proyecto para cada arrendatario
- Compartir un proyecto entre diferentes instancias y aprovisionar varios clústeres de GKE
- Usar espacios de nombres de Kubernetes
Tu elección depende de tus necesidades de aislamiento, complejidad y escalabilidad. Por ejemplo, tener un proyecto por instancia aísla las instancias entre sí, pero la jerarquía de recursos se vuelve más compleja de administrar debido a la gran cantidad de proyectos. Sin embargo, aunque administrar los espacios de nombres de Kubernetes es relativamente más fácil que una jerarquía de recursos compleja, esta opción no garantiza tanto aislamiento. Por ejemplo, el plano de control podría compartirse entre instancias. Para obtener más información, consulta Clúster de multiusuarios.
Configura la administración de identidades y accesos
GKE admite varias opciones para administrar el acceso a los recursos de tu Google Cloud proyecto y sus clústeres con RBAC. Para obtener más información, consulta Control de acceso.
Configura las herramientas de redes de GKE
La configuración de red es un aspecto fundamental de tu entorno. Antes de aprovisionar y configurar cualquier clúster, te recomendamos que evalúes el modelo de red de GKE, las prácticas recomendadas para las herramientas de redes de GKE y cómo planificar las direcciones IP cuando migres a GKE.
Configura la supervisión y las alertas
Tener un panorama claro del rendimiento de tu infraestructura y tus cargas de trabajo es clave para encontrar áreas a mejorar. GKE se integra a Google Cloud Observability a la perfección, por lo que obtienes información de registro, supervisión y generación de perfiles de tus clústeres de GKE y las cargas de trabajo de estos.
Migra datos e 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.
- Refactoriza tus cargas de trabajo.
- Refactoriza los procesos operativos y de implementación.
- Migrar datos de tu entorno de origen a Google Cloud.
- Implementar tus cargas de trabajo en tu entorno de GKE.
- Valida tus cargas de trabajo y tu entorno de GKE.
- 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 tu entorno de Google Cloud
Antes de migrar cualquier carga de trabajo a tu nuevo entorno de Google Cloud , debes aprovisionar los clústeres de GKE.
GKE admite la habilitación de ciertas funciones en clústeres existentes, pero es posible que haya funciones que solo puedas habilitar en el momento de la creación del clúster. Para ayudarte a evitar interrupciones y simplificar la migración, te recomendamos que habilites las funciones del clúster que necesites en el momento de la creación del clúster. De lo contrario, es posible que debas destruir y volver a crear tus clústeres en caso de que las funciones del clúster que necesitas no se puedan habilitar después de crear un clúster.
Después de la fase de evaluación, sabrás cómo aprovisionar los clústeres de GKE en tu nuevo entorno Google Cloud para satisfacer tus necesidades. Para aprovisionar tus clústeres, ten en cuenta 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 automáticamente los nodos de GKE 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 funciones adicionales de GKE que necesitas, como Cloud 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.
- Administra, configura e implementa clústeres de GKE.
- Información sobre la seguridad de GKE.
- Endurece la seguridad del clúster.
- Descripción general de las redes de GKE
- Prácticas recomendadas para las herramientas de redes de GKE
- Descripción general del almacenamiento de los clústeres de GKE
Administración de flotas
Cuando aprovisiones tus clústeres de GKE, es posible que te des cuenta de que necesitas una gran cantidad de ellos para admitir todos los casos de uso de tu entorno. Por ejemplo, es posible que debas separar los entornos de producción de los que no lo son, o bien separar los servicios entre equipos o geografías. Para obtener más información, consulta los casos de uso de varios clústeres.
A medida que aumenta la cantidad de clústeres, es posible que tu entorno de GKE se vuelva más difícil de operar, ya que administrar una gran cantidad de clústeres plantea desafíos operativos y de escalabilidad significativos. GKE proporciona herramientas y funciones para ayudarte a administrar flotas, que son agrupaciones lógicas de clústeres de Kubernetes. Para obtener más información, consulta Administración de la flota.
Herramientas de redes de varios clústeres
Para ayudarte a mejorar la confiabilidad de tu entorno de GKE y distribuir tus cargas de trabajo en varios clústeres de GKE, puedes usar lo siguiente:
- Descubrimiento de servicios de varios clústeres, un mecanismo de invocación y descubrimiento de servicios entre clústeres Los servicios son detectables y accesibles en todos los clústeres de GKE. Para obtener más información, consulta Descubrimiento de servicios de varios clústeres.
- Puertas de enlace de varios clústeres, un mecanismo de balanceo de cargas del tráfico de entrada entre clústeres. Para obtener más información, consulta Implementa Gateways de varios clústeres.
- Malla de varios clústeres en Cloud Service Mesh administrado. Para obtener más información, consulta Configura una malla de varios clústeres.
Para obtener más información sobre la migración de un entorno de GKE de un solo clúster a un entorno de GKE de varios clústeres, consulta Migra a redes de varios clústeres.
Configura tus clústeres de GKE
Después de aprovisionar los clústeres de GKE y antes de implementar cualquier carga de trabajo o migrar datos, configura los espacios de nombres, el RBAC, las políticas de red, las cuentas de servicio y otros objetos de Kubernetes y GKE para cada clúster de GKE.
Para configurar objetos de Kubernetes y GKE en tus clústeres de GKE, te recomendamos que hagas lo siguiente:
- 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.
- Crea estos objetos en tus clústeres de GKE.
- Configura cualquier objeto adicional que necesites en tus clústeres de GKE.
Sincronizador de configuración
Para ayudarte a adoptar las prácticas recomendadas de GitOps y administrar la configuración de tus clústeres de GKE a medida que se escalan, te recomendamos que uses el Sincronizador de configuración, un servicio de GitOps para implementar configuraciones desde una fuente de información. Por ejemplo, puedes almacenar la configuración de tus clústeres de GKE en un repositorio de Git y usar Sincronizador de configuración para aplicar esa configuración.
Para obtener más información, consulta Arquitectura de Config Sync.
Policy Controller
Policy Controller te ayuda a aplicar y hacer cumplir políticas programables para garantizar que tus clústeres y cargas de trabajo de GKE se ejecuten de forma segura y que satisfagan 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 contenedores o puedes requerir que cada espacio de nombres tenga al menos una etiqueta para ayudarte a garantizar un seguimiento preciso del consumo de recursos.
Para obtener más información, consulta Policy Controller.
Refactoriza tus cargas de trabajo
Una práctica recomendada para diseñar cargas de trabajo alojadas en contenedores es evitar las dependencias en la plataforma de organización de contenedores. En la práctica, esto no siempre es posible debido a los requisitos y el diseño de tus cargas de trabajo. Por ejemplo, tus cargas de trabajo pueden depender de funciones específicas del entorno que solo están disponibles en tu entorno de origen, como complementos, extensiones e integraciones.
Si bien es posible que puedas migrar la mayoría de las cargas de trabajo tal como están a GKE, es posible que debas invertir más esfuerzo en 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 tus cargas de trabajo antes de migrarlas a GKE, haz lo siguiente:
- Revisa las funciones específicas del entorno de origen, como complementos, extensiones e integraciones.
- Adopta soluciones alternativas adecuadas de GKE.
- Refactoriza tus cargas de trabajo.
Revisa las funciones específicas del entorno de origen
Si usas funciones específicas del entorno de origen y tus cargas de trabajo dependen de ellas, debes hacer lo siguiente:
- Encuentra alternativas adecuadas a las soluciones de GKE.
- Refactoriza tus cargas de trabajo para aprovechar las soluciones alternativas de GKE.
Como parte de esta revisión, te recomendamos que hagas lo siguiente:
- Considera si puedes desaprobar alguna de estas funciones específicas del entorno de origen.
- Evalúa qué tan fundamental es una función específica del entorno de origen para el éxito de la migración.
Adopta soluciones alternativas de GKE adecuadas
Después de revisar las funciones específicas de tu entorno de origen y asignarlas a soluciones alternativas adecuadas de GKE, 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 las funciones específicas del entorno de origen que deseas desaprobar.
- Enfócate 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 dedicados para el resto.
Refactoriza tus cargas de trabajo
Si bien la mayoría de tus cargas de trabajo pueden funcionar tal como están en GKE, es posible que debas refactorizar algunas de ellas, en especial si dependían de funciones específicas del entorno de origen para las que adoptaste soluciones alternativas de GKE.
Esta refactorización puede incluir lo siguiente:
- Descriptores de objetos de Kubernetes, como implementaciones y servicios, expresados en formato YAML
- Descriptores de imágenes de contenedor, como Dockerfiles y Containerfiles
- Código fuente de las cargas de trabajo
Para simplificar el esfuerzo de refactorización, te recomendamos que te enfoques en aplicar la menor cantidad de cambios necesarios para que tus cargas de trabajo sean adecuadas para GKE y en las correcciones de errores críticos. Puedes planificar otras mejoras y cambios como parte de proyectos futuros.
Refactoriza los procesos operativos y de implementación
Después de refactorizar tus cargas de trabajo, refactoriza tus procesos operativos y de implementación para que realicen las siguientes acciones:
- Aprovisiona y configura recursos en tu entorno de Google Cloud en lugar de aprovisionar recursos en tu entorno de origen.
- Compila y configura cargas de trabajo, y luego impleméntalas en tu Google Clouden lugar de implementarlas en tu entorno de origen.
Recopilaste información sobre estos procesos durante la fase de evaluación antes en este proceso.
El tipo de refactorización que debes considerar para estos procesos depende de cómo los diseñaste y cómo los implementaste. La refactorización también depende de cuál sea el estado final de cada proceso. Por ejemplo, considera lo siguiente:
- Es posible que hayas implementado estos procesos en tu entorno de origen y quieras diseñar e implementar procesos similares en Google Cloud. Por ejemplo, puedes refactorizar estos procesos para usar Cloud Build, Cloud Deploy y Infrastructure Manager.
- Es posible que hayas implementado estos procesos en otro entorno de terceros fuera de tu entorno de origen. En este caso, debes refactorizar estos procesos para orientar tu entorno de Google Cloud en lugar de tu entorno de origen.
- Una combinación de los enfoques anteriores.
La refactorización de los procesos operativos y de implementación puede ser complejo y puede requerir un esfuerzo significativo. Si intentas realizar estas tareas como parte de la migración de tu carga de trabajo, la migración puede volverse más compleja y exponerte a riesgos. Después de evaluar los procesos operativos y de implementación, es probable que comprendas el diseño y la complejidad. Si estimas que necesitas un esfuerzo sustancial para refactorizar tus procesos operativos y de implementación, te recomendamos que consideres la refactorización de estos procesos como parte de un proyecto independiente y dedicado.
Para obtener más información sobre cómo diseñar e implementar procesos de implementación en Google Cloud, consulta los siguientes recursos:
- Migra a Google Cloud: Implementa tus cargas de trabajo
- Migra a Google Cloud: Migra de implementaciones manuales a implementaciones automatizadas en contenedores
Este documento se enfoca en los procesos de implementación que producen los artefactos para implementar y los implementan 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:
- Aprovisiona repositorios de artefactos en Google Cloud. Por ejemplo, puedes usar Artifact Registry para almacenar artefactos y compilar dependencias.
- Refactoriza tus procesos de compilación para almacenar artefactos tanto en tu entorno de origen como en Artifact Registry.
- Refactoriza tus procesos de implementación para implementar tus cargas de trabajo en tu entorno deGoogle Cloud destino. Por ejemplo, puedes comenzar por implementar un pequeño subconjunto de tus cargas de trabajo en Google Cloud, usando artefactos almacenados en Artifact Registry. Luego, aumenta gradualmente la cantidad de cargas de trabajo implementadas en Google Cloudhasta que todas las cargas de trabajo que se migrarán se ejecuten enGoogle Cloud.
- Refactoriza tus procesos de compilación para almacenar artefactos solo en Artifact Registry.
- Si es necesario, migra las versiones anteriores de los artefactos que se implementarán desde los repositorios de tu entorno de origen a Artifact Registry. Por ejemplo, puedes copiar imágenes de contenedor en Artifact Registry.
- Inhabilita los repositorios en tu entorno de origen cuando ya no los necesites.
Para facilitar las reversiones eventuales debido a problemas imprevistos durante la migración, puedes almacenar imágenes de contenedor en tus repositorios de artefactos actuales en Google Cloud mientras la migración a Google Cloud está en curso. Por último, como parte de la baja de tu entorno de origen, puedes refactorizar tus procesos de compilación de imágenes de contenedor para almacenar artefactos solo enGoogle Cloud .
Aunque no sea crucial para el éxito de una migración, es posible que debas migrar las versiones anteriores de tus artefactos desde tu entorno de origen a tus repositorios de artefactos en Google Cloud. Por ejemplo, para admitir la reversión de tus cargas de trabajo a puntos arbitrarios en el tiempo, es posible que debas migrar versiones anteriores de tus artefactos a Artifact Registry. Para obtener más información, consulta Cómo migrar imágenes desde un registro de terceros.
Si usas Artifact Registry para almacenar tus artefactos, te recomendamos que configures controles para proteger tus repositorios de artefactos, como el control de acceso, la prevención de robo de datos, el análisis de vulnerabilidades y la autorización binaria. Para obtener más información, consulta Controla el acceso y protege los artefactos.
Implementa tus cargas de trabajo
Cuando tus procesos de implementación estén listos, implementa tus cargas de trabajo en GKE. Para obtener más información, consulta la Descripción general de la implementación de cargas de trabajo.
Para preparar las cargas de trabajo que se implementarán en GKE, te recomendamos que analices tus descriptores de Kubernetes, ya que algunos recursos Google Cloudque GKE aprovisiona automáticamente para ti se pueden configurar con etiquetas y anotaciones de Kubernetes, en lugar de tener que aprovisionar estos recursos de forma manual. Por ejemplo, puedes aprovisionar un balanceador de cargas interno en lugar de uno externo si agregas una anotación a un servicio LoadBalancer.
Valida tus cargas de trabajo
Después de implementar las cargas de trabajo en el entorno de GKE, pero antes de exponerlas a los usuarios, te recomendamos que realices pruebas y validaciones exhaustivas. Estas pruebas pueden ayudarte a verificar que tus cargas de trabajo se comporten como se espera. Por ejemplo, puedes hacer lo siguiente:
- Realizar pruebas de integración, de carga, de cumplimiento y de confiabilidad, y otros procedimientos de verificación que te ayuden a garantizar que tus cargas de trabajo funcionen con sus parámetros esperados y según sus especificaciones.
- Examina los registros, las métricas y los informes de errores en Google Cloud Observability para identificar cualquier problema potencial y detectar tendencias para anticipar problemas antes de que ocurran.
Si deseas obtener más información sobre la validación de cargas de trabajo, consulta Prueba la confiabilidad.
Expón tus cargas de trabajo
Una vez que completes las pruebas de validación de las cargas de trabajo que se ejecutan en tu entorno de GKE, expón tus cargas de trabajo para que sean accesibles.
Para exponer las cargas de trabajo que se ejecutan en tu entorno de GKE, puedes usar los servicios de Kubernetes y una malla de servicios.
Para obtener más información sobre la exposición de cargas de trabajo que se ejecutan en GKE, consulta los siguientes vínculos:
Transfiere el tráfico a tu entorno de Google Cloud
Después de verificar que las cargas de trabajo se ejecuten en tu entorno de GKE y de exponerlas a los clientes, cambia el tráfico de tu entorno de origen a tu entorno de GKE. Para ayudarte a evitar las migraciones a gran escala y todos los riesgos relacionados, te recomendamos cambiar el tráfico de forma gradual del entorno de origen a tu GKE.
Según cómo diseñaste tu entorno de GKE, tienes varias opciones para implementar un mecanismo de balanceo de cargas que cambie el tráfico de tu entorno de origen a tu entorno de destino de forma gradual. Por ejemplo, puedes implementar una política de resolución de DNS que resuelva registros DNS de acuerdo con alguna política para resolver un cierto porcentaje de solicitudes a direcciones IP que pertenecen a tu entorno de GKE. También puedes implementar un mecanismo de balanceo de cargas mediante direcciones IP virtuales y balanceadores de cargas de red.
Después de comenzar el cambio gradual del tráfico a tu entorno de GKE, te recomendamos supervisar el comportamiento de tus cargas de trabajo a medida que aumentan sus cargas.
Por último, debes realizar una migración de sistemas, que ocurre cuando transfieres todo el tráfico del entorno de origen a tu entorno de GKE.
Para obtener más información sobre el balanceo de cargas, consulta Balanceo de cargas en el frontend.
Retirar el servicio el entorno de origen.
Después de que las cargas de trabajo en el entorno de GKE entreguen las solicitudes de forma correcta, debes retirar tu entorno de origen.
Antes de comenzar a retirar los recursos en tu entorno de origen, te recomendamos que hagas lo siguiente:
- Crear una copia de seguridad de los datos para ayudarte a restablecer los recursos en tu entorno de origen.
- Notifica a tus usuarios antes de retirar el entorno.
Para retirar tu entorno de origen, haz lo siguiente:
- Inhabilita las cargas de trabajo que se ejecutan en los clústeres de 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 tu entorno de Google Cloud
La optimización es la última fase de la migración. En esta fase, iteras en tareas de optimización hasta que tu entorno de destino cumpla con tus requisitos de optimización. Los pasos de cada iteración son los siguientes:
- Evalúa tu entorno actual, los equipos y el ciclo de optimización.
- Establece tus requisitos y objetivos de optimización.
- Optimiza el entorno y los equipos.
- Ajustar el bucle de optimización
Repite esta secuencia hasta que hayas alcanzado tus objetivos de optimización.
Para obtener más información sobre la optimización de tu entorno de Google Cloud , consulta Migra a Google Cloud: Optimiza tu entorno y Google Cloud Well-Architected Framework: Optimización del rendimiento.
En las siguientes secciones, se integran las consideraciones de Migra aGoogle Cloud: Optimiza tu entorno.
Establece tus requisitos de optimización
Los requisitos de optimización te ayudan a reducir el alcance de la iteración de optimización actual. Para obtener más información sobre los requisitos y objetivos de optimización, consulta Establece tus requisitos y objetivos de optimización.
Para establecer tus requisitos de optimización para tu entorno de GKE, comienza por considerar los siguientes aspectos:
- Seguridad, privacidad y cumplimiento: Te ayudan a mejorar la postura de seguridad de tu entorno de GKE.
- Confiabilidad: Te ayuda a mejorar la disponibilidad, la escalabilidad y la resiliencia de tu entorno de GKE.
- Optimización de costos: Te ayuda a optimizar el consumo de recursos y el gasto resultante de tu entorno de GKE.
- Eficiencia operativa: Te ayuda a mantener y operar tu entorno de GKE de manera eficiente.
- Optimización del rendimiento: Te ayuda a optimizar el rendimiento de las cargas de trabajo implementadas en tu entorno de GKE.
Security, privacy, and compliance
- Supervisa la postura de seguridad de tus clústeres de GKE. Puedes usar el panel de postura de seguridad para obtener recomendaciones prácticas y bien definidas que te ayuden a mejorar la postura de seguridad de tu entorno de GKE.
- Endurece tu entorno de GKE. Comprende el modelo de seguridad de GKE y cómo endurecer tus clústeres de GKE.
- Protege tu cadena de suministro de software. Para las cargas de trabajo críticas para la seguridad,Google Cloud proporciona un conjunto modular de productos que implementan las prácticas recomendadas de seguridad de la cadena de suministro de software en todo el ciclo de vida del software.
Confiabilidad
Mejora la confiabilidad de tus clústeres. Para ayudarte a diseñar un clúster de GKE más resiliente ante interrupciones zonales poco probables, prefiere los clústeres regionales a los zonales o multizonales.
Copia de seguridad y restablecimiento de cargas de trabajo. Configura un flujo de trabajo de copia de seguridad y restablecimiento de cargas de trabajo con la Copia de seguridad para GKE.
Optimización de costos
Si deseas obtener más información para optimizar el costo de tu entorno de GKE, consulta los siguientes recursos:
- Redimensiona tus cargas de trabajo de GKE a gran escala.
- Reduce los costos a través del escalamiento de clústeres de GKE durante las horas de menor demanda.
- Identifica los clústeres de GKE inactivos.
Eficiencia operativa
Para ayudarte a evitar problemas que afecten tu entorno de producción, te recomendamos que hagas lo siguiente:
- Diseña tus clústeres de GKE para que sean intercambiables. Si consideras que tus clústeres son intercambiables y automatizas su aprovisionamiento y configuración, puedes optimizar y generalizar los procesos operativos para mantenerlos y simplificar las migraciones futuras y las actualizaciones de clúster de GKE. Por ejemplo, si necesitas actualizar un clúster de GKE intercambiable a una versión nueva de GKE, puedes aprovisionar y configurar de forma automática un clúster nuevo actualizado, implementar de forma automática las cargas de trabajo en el clúster nuevo y quitar el clúster de GKE antiguo y desactualizado.
- Supervisa las métricas de interés. Asegúrate de que se recopilen correctamente todas las métricas de interés sobre tus cargas de trabajo y clústeres. Además, verifica que todas las alertas pertinentes que usan estas métricas como entradas estén implementadas y funcionen.
Para obtener más información sobre cómo configurar la supervisión, el registro y la generación de perfiles en tu entorno de GKE, consulta los siguientes vínculos:
Optimización del rendimiento
- Configura el ajuste de escala automático del clúster y el aprovisionamiento automático de nodos. Cambia el tamaño de tu clúster de GKE automáticamente según la demanda con el escalamiento automático del clúster y el aprovisionamiento automático de nodos.
- Ajusta automáticamente la escala de las cargas de trabajo. GKE admite varios mecanismos de escalamiento, como los siguientes:
- Ajusta automáticamente la escala de las cargas de trabajo según las métricas.
- Ajusta automáticamente la escala de las cargas de trabajo cambiando la forma de la cantidad de Pods de tus cargas de trabajo de Kubernetes configurando el ajuste de escala automático de Pods horizontal.
- Ajusta automáticamente las cargas de trabajo configurando el ajuste de escala automático vertical de Pods para ajustar las solicitudes y los límites de recursos.
Para obtener más información, consulta Acerca de la escalabilidad de GKE.
¿Qué sigue?
- Obtén información sobre cuándo encontrar ayuda para tus migraciones.
- Para obtener más información sobre las arquitecturas de referencia, los diagramas y las prácticas recomendadas, explora Cloud Architecture Center.
Colaboradores
Autor: Marco Ferrari | Arquitecto de soluciones de nube