Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Implemente cargas de trabajo desde DevOps canalizaciones de Azure a clústeres privados de Amazon EKS
Mahendra Revanasiddappa, Amazon Web Services
Resumen
Este patrón demuestra cómo implementar la integración continua y la entrega continua (CI/CD) desde DevOps canalizaciones de Azure a clústeres privados de Amazon Elastic Kubernetes Service (Amazon EKS). Aborda un desafío fundamental al que se enfrentan las organizaciones que están mejorando su postura de seguridad mediante la transición a puntos de enlace de servidores API privados para sus clústeres de Amazon EKS.
Un punto final público expone el servidor de la API de Kubernetes directamente a Internet, lo que crea una mayor superficie de ataque a la que podrían dirigirse actores malintencionados. Al cambiar a un punto final privado, el acceso al plano de control del clúster está restringido a la nube privada virtual (VPC) del cliente.
Si bien la transición de un clúster de Amazon EKS a un punto final de API privado mejora considerablemente la seguridad, presenta desafíos de conectividad para CI/CD plataformas externas como Azure DevOps. Solo se puede acceder al punto final privado desde la VPC o las redes interconectadas del clúster. Por lo tanto, los DevOps agentes de Azure estándar alojados en Microsoft, que operan fuera de la red AWS privada, no pueden acceder directamente al servidor API de Kubernetes. Esto interrumpe los flujos de trabajo de implementación típicos que dependen de herramientas como kubectl o Helm que se ejecutan en estos agentes porque no logran establecer una conexión con el clúster.
Para superar este problema, este patrón muestra un enfoque eficiente mediante el uso de DevOps agentes de Azure autohospedados dentro de clústeres privados de Amazon EKS. Esta solución ofrece una optimización de costes, una eficiencia operativa y una escalabilidad superiores, a la vez que preserva los requisitos de seguridad. Este enfoque beneficia especialmente a las empresas que buscan optimizar sus DevOps procesos multinube sin comprometer el rendimiento o la seguridad.
Requisitos previos y limitaciones
Requisitos previos
Un activo Cuenta de AWS.
AWS Command Line Interface (AWS CLI) versión 2.13.17 o posterior, instalada.
Se creó un clúster privado de Amazon EKS versión 1.24 o posterior, con permisos para crear espacios de nombres, secretos e implementaciones.
Nodos de trabajo en un clúster de Amazon EKS con conectividad saliente a Internet para que el DevOps agente de Azure que se ejecute en ellos pueda conectarse al grupo de DevOps agentes de Azure.
GitHub cuenta creada
. La AWS Toolkit for Azure DevOps versión 1.15 o posterior instalada para el DevOps proyecto de Azure descrito en el punto anterior. Para obtener instrucciones de instalación, consulte AWS Toolkit for Azure DevOps
en Visual Studio Marketplace.
Limitaciones
Algunas Servicios de AWS no están disponibles en todos Regiones de AWS. Para ver la disponibilidad regional, consulta AWS Servicios por región
. Para conocer puntos de enlace específicos, consulte Puntos de enlace y cuotas del servicio y elija el enlace para el servicio.
Arquitectura
Este patrón crea lo siguiente:
Repositorio Amazon ECR: el repositorio Amazon Elastic Container Registry (Amazon ECR) almacena la imagen de Docker con el DevOps agente de Azure y la aplicación de muestra que se implementa.
Grupo de DevOps agentes de Azure: un grupo de agentes DevOps autohospedados de Azure registra el agente que se ejecuta en el clúster privado de Amazon EKS.
Función de IAM: una función AWS Identity and Access Management (IAM) para la conexión del servicio de Azure que proporciona el acceso necesario al agente que se ejecuta en un clúster privado de Amazon EKS.
Conexión DevOps de servicio de Azure: una conexión de servicio en una DevOps cuenta de Azure para utilizar la función de IAM que proporciona el acceso necesario para que accedan los trabajos en proceso. Servicios de AWS
El siguiente diagrama muestra la arquitectura de implementación de un DevOps agente de Azure autohospedado en un clúster privado de Amazon EKS y de implementación de una aplicación de muestra en el mismo clúster.

En el diagrama, se muestra el siguiente flujo de trabajo:
Implemente un DevOps agente de Azure autohospedado como una implementación dentro de un clúster de Amazon EKS.
Un DevOps agente de Azure se conecta al grupo de agentes de una DevOps cuenta de Azure mediante un token de acceso personal (PAT) para la autenticación.
Azure Pipelines configura una canalización para implementarla mediante código de un GitHub repositorio.
La canalización se ejecuta en el agente desde el grupo de agentes que se configuró en la configuración de canalización. El DevOps agente de Azure obtiene la información de trabajo de la canalización consultando constantemente la DevOps cuenta de Azure.
El DevOps agente de Azure crea una imagen de Docker como parte del trabajo en proceso y envía la imagen al repositorio de Amazon ECR.
El DevOps agente de Azure implementa la aplicación de muestra en un clúster privado de Amazon EKS en un espacio de nombres denominado.
webapp
Herramientas
Herramientas
Amazon Elastic Container Registry (Amazon ECR) es un servicio de registro de imágenes de contenedor administrado que es seguro, escalable y fiable.
Amazon Elastic Kubernetes Service (Amazon EKS) le ayuda a ejecutar AWS Kubernetes sin necesidad de instalar o mantener su propio plano de control o nodos de Kubernetes.
AWS Identity and Access Management (IAM) le ayuda a administrar de forma segura el acceso a sus AWS recursos al controlar quién está autenticado y autorizado a usarlos.
Otras herramientas
Repositorio de código
El código de este patrón está disponible en el repositorio GitHub deploy-kubernetes-resources-to- amazon-eks-using-azure -devops
.
Prácticas recomendadas
Para Amazon EKS, consulte la Guía de prácticas recomendadas de Amazon EKS.
Siga el principio de privilegios mínimos y conceda los permisos mínimos necesarios para realizar una tarea. Para obtener más información, consulte Otorgar privilegio mínimo y Prácticas recomendadas de seguridad en la documentación de IAM.
Epics
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Busque el GUID de DevOps la organización de Azure. | Inicie sesión en su DevOps cuenta de Azure y, a continuación, utilice la siguiente URL para buscar el GUID de la organización: | AWS DevOps |
Configure un IdP en. Cuenta de AWS | Para configurar un proveedor de identidad (IdP) en una conexión Cuenta de AWS de servicio de Azure, siga estos pasos:
Para obtener más información, consulte Cómo federarse AWS desde Azure DevOps mediante OpenID Connect | AWS DevOps |
Cree una política de IAM en. Cuenta de AWS | Para crear una política de IAM que proporcione los permisos necesarios para la función de IAM utilizada por la DevOps canalización de Azure, siga los siguientes pasos:
| AWS DevOps |
Cree un rol de IAM en. Cuenta de AWS | Para configurar un rol de IAM en la Cuenta de AWS conexión al servicio de Azure, siga estos pasos:
En la política, proporcione su información para los siguientes marcadores de posición:
| AWS DevOps |
Cree una conexión de servicio en la DevOps cuenta de Azure. | Para configurar una conexión de servicio de Azure, siga estos pasos:
Para obtener más información, consulte Crear una conexión de servicio | AWS DevOps |
Añada la función de IAM al archivo de configuración de Amazon EKS. | El rol de IAM debe tener los permisos necesarios para realizar las operaciones requeridas en el clúster de Amazon EKS. Como se trata de una función de canalización, la función de IAM debe poder administrar casi todos los tipos de recursos del clúster. Por lo tanto, el permiso de Para añadir la configuración necesaria a Kubernetes, usa el siguiente código:
Sustitúyala por Para obtener más información, consulte Cómo funciona Amazon EKS con IAM en la documentación de Amazon EKS. | AWS DevOps |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Cree un grupo de agentes autohospedado. | Para configurar un grupo de agentes autohospedado en la DevOps cuenta de Azure, siga estos pasos:
Para obtener más información, consulte Crear y administrar grupos de agentes |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Cree un repositorio de Amazon ECR. | Las imágenes de Docker que se utilizan para implementar el DevOps agente de Azure y la aplicación de muestra (
Para obtener más información, consulte Creación de un repositorio privado de Amazon ECR para almacenar imágenes en la documentación de Amazon ECR. | AWS DevOps |
Cree un Dockerfile para crear el agente de Azure DevOps . | Cree un Dockerfile para crear la imagen de Docker que tiene instalado el agente de Azure. DevOps Guarde el siguiente contenido en un archivo denominado:
| AWS DevOps |
Cree un script para el DevOps agente de Azure. | Para crear el
| AWS DevOps |
Cree una imagen de Docker con el DevOps agente de Azure. | Para crear una imagen de Docker para instalar el DevOps agente de Azure, utilice el Dockerfile que creó anteriormente para crear la imagen. En el mismo directorio en el que está almacenado el Dockerfile, ejecute los siguientes comandos:
Sustituya | AWS DevOps |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Genere un token de acceso personal de Azure. | El agente que se ejecuta en el clúster privado de Amazon EKS necesita un token de acceso personal (PAT) para poder autenticarse con la DevOps cuenta de Azure. Para generar una PAT, siga estos pasos:
Para obtener más información, consulte Registrar un agente mediante un token de acceso personal (PAT) | AWS DevOps |
Utilice el archivo de manifiesto de Kubernetes para la implementación de los agentes. | Para implementar el DevOps agente de Azure en el clúster privado de Amazon EKS, copie el siguiente archivo de manifiesto y guárdelo como
Sustituya | AWS DevOps |
Implemente el agente en el clúster privado de Amazon EKS. | Para implementar el agente de Azure Devops en el clúster privado de Amazon EKS, utilice el siguiente comando:
| AWS DevOps |
Compruebe que el agente se esté ejecutando. | Para comprobar que el DevOps agente de Azure se está ejecutando, utilice el siguiente comando:
El resultado esperado debe ser similar al siguiente:
Asegúrese de que se muestre la | AWS DevOps |
Compruebe que el agente esté registrado en el grupo de DevOps agentes de Azure. | Para comprobar que el agente está desplegado en el clúster privado de Amazon EKS y está registrado en el grupo de agentes
Debería ver un agente en la lista con el estado en línea y el nombre del agente debería empezar azure-pipelines-agent-eks por -*. | AWS DevOps |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Transfiera el repositorio de aplicaciones de muestra a su GitHub cuenta. | Transfiera el siguiente repositorio de AWS muestras a su GitHub cuenta: https://github.com/aws-samples/deploy-kubernetes-resources-to- amazon-eks-using-azure -devops | AWS DevOps |
Crear una canalización. | Para crear una canalización en su DevOps cuenta de Azure, siga estos pasos:
| AWS DevOps |
Compruebe que se haya implementado la aplicación de muestra. | Una vez finalizada la canalización, compruebe que la implementación de la aplicación de muestra se ha realizado correctamente consultando tanto el repositorio de Amazon ECR como el clúster de Amazon EKS. Para verificar los artefactos en el repositorio de Amazon ECR, siga estos pasos:
Por ejemplo, Para verificar la implementación en el clúster privado de Amazon EKS en el espacio de nombres
El resultado esperado es el siguiente:
Nota: Si esta es la primera vez que ejecuta una canalización, es posible que deba autorizar la conexión del servicio y el grupo de agentes. Busque las solicitudes de permiso en la interfaz de DevOps canalización de Azure y apruebelas para continuar. | AWS DevOps |
Solución de problemas
Problema | Solución |
---|---|
La canalización falla cuando el nombre del repositorio de Amazon ECR no coincide | La aplicación de ejemplo espera que el nombre del repositorio de Amazon ECR coincida con el Para resolver este problema, cambie el nombre de su repositorio de Amazon ECR a o actualice
|
Error: no se puede acceder al clúster de Kubernetes: el servidor ha pedido al cliente que proporcione las credenciales | Si encuentra este error en el paso «Pull and Deploy Helm Chart» de su canalización de Azure, la causa principal suele deberse a una configuración incorrecta de las funciones de IAM en el clúster de Para resolver este problema, compruebe lo siguiente:
|
Recursos relacionados
AWS Blogs
Servicios de AWS documentación
Documentación de Microsoft