

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
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters"></a>

*Mahendra Revanasiddappa, Amazon Web Services*

## Resumen
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters-summary"></a>

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 conexión de servidores de API privados para sus clústeres de Amazon EKS.

Un punto de conexión público expone el servidor de API de Kubernetes directamente a Internet, lo que crea una mayor superficie expuesta a ataques a la que podrían dirigirse actores maliciosos. Al cambiar a un punto de conexión 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 de conexión 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 costos, 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 multicloud sin comprometer el rendimiento ni la seguridad.

## Requisitos previos y limitaciones
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters-prereqs"></a>

**Requisitos previos **
+ Un activo Cuenta de AWS.
+ AWS Command Line Interface [(AWS CLI) versión 2.13.17 o posterior, instalada.](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)
+ La versión 1.25.1 o posterior de kubectl [instalada](https://kubernetes.io/docs/tasks/tools/).
+ Un clúster privado de Amazon EKS versión 1.24 o posterior [creado](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html), con permisos para crear espacios de nombres, secretos e implementaciones[.](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html)
+ 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](https://github.com/signup).
+ [Se creó un DevOps proyecto de Azure con acceso para configurar las conexiones de servicio, que son conexiones autenticadas entre Azure Pipelines y servicios externos o remotos.](https://learn.microsoft.com/en-us/azure/devops/user-guide/sign-up-invite-teammates?view=azure-devops&tabs=microsoft-account)
+ La Kit de herramientas de AWS para 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 [Kit de herramientas de AWS para Azure DevOps](https://marketplace.visualstudio.com/items?itemName=AmazonWebServices.aws-vsts-tools) en Visual Studio Marketplace.

**Limitaciones**
+ Algunas Servicios de AWS no están disponibles en todas Regiones de AWS. Para obtener información sobre la disponibilidad en regiones, consulte [AWS Services by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para ver los puntos de conexión específicos, consulte [Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) y elija el enlace del servicio.

## Arquitectura
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters-architecture"></a>

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.

![\[Implementación de un DevOps agente de Azure autohospedado y una aplicación de muestra en un clúster privado de Amazon EKS.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/a965834f-a1e2-4679-bd8c-15eed4f57b55/images/ee22bd3e-311c-46e0-8024-9b7e7752080a.png)


En el diagrama, se muestra el siguiente flujo de trabajo:

1. Implemente un DevOps agente de Azure autohospedado como una implementación dentro de un clúster de Amazon EKS.

1. 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.

1. Azure Pipelines configura una canalización para implementarla mediante código de un GitHub repositorio.

1. 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 cuenta de Azure DevOps .

1. 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.

1. 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` 

## Tools (Herramientas)
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters-tools"></a>

**Herramientas**
+ [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) es un servicio de registro de imágenes de contenedor administrado que es seguro, escalable y fiable.
+ [Amazon Elastic Kubernetes Service (Amazon](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) 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)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) 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**
+ [Docker](https://www.docker.com/) es un conjunto de productos de plataforma como servicio (PaaS) que utiliza la virtualización a nivel del sistema operativo para entregar software en contenedores.
+ [kubectl](https://kubernetes.io/docs/tasks/tools/): una interfaz de la línea de comandos que le ayuda en la ejecución de comandos en clústeres de Kubernetes.

**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](https://github.com/aws-samples/deploy-kubernetes-resources-to-amazon-eks-using-azure-devops).

## Prácticas recomendadas
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters-best-practices"></a>
+ Para Amazon EKS, consulte la [Guía de prácticas recomendadas de Amazon EKS](https://docs.aws.amazon.com/eks/latest/best-practices/introduction.html).
+ Siga el principio de privilegio mínimo y conceda los permisos mínimos necesarios para llevar a cabo una tarea. Para obtener más información, consulte [Otorgar privilegio mínimo](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) y [Prácticas recomendadas de seguridad](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) en la documentación de IAM.

## Epics
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters-epics"></a>

### Creación de una conexión de servicio
<a name="create-a-service-connection"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Busque el GUID de la DevOps 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: `https://dev.azure.com/{DevOps_Org_ID}/_apis/projectCollections?api-version=6.0` En la URL, `{DevOps_org_ID}` sustitúyalo por el ID de su DevOps organización de Azure. | AWS DevOps | 
| Configure un IdP en la Cuenta de AWS. | Para configurar un proveedor de identidad (IdP) en una conexión Cuenta de AWS de servicio de Azure, siga estos pasos:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)Para obtener más información, consulte [Cómo federarse AWS desde Azure DevOps mediante OpenID Connect](https://aws.amazon.com/blogs/modernizing-with-aws/how-to-federate-into-aws-from-azure-devops-using-openid-connect/). | AWS DevOps | 
| Cree una política de IAM en la 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 estos pasos:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html) | AWS DevOps | 
| Cree un rol de IAM role en la Cuenta de AWS. | Para configurar un rol de IAM en Cuenta de AWS la conexión del servicio de Azure, siga estos pasos:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)<pre>{<br />  "Version": "2012-10-17",		 	 	 <br />  "Statement": [<br />    {<br />      "Effect": "Allow",<br />      "Principal": {<br />        "Federated": "arn:aws:iam::{account_id}:oidc-provider/vstoken.dev.azure.com/{OrganizationGUID}"<br />      },<br />      "Action": "sts:AssumeRoleWithWebIdentity",<br />      "Condition": {<br />        "StringEquals": {<br />          "vstoken.dev.azure.com/{OrganizationGUID}:aud": "api://AzureADTokenExchange",<br />          "vstoken.dev.azure.com/{OrganizationGUID}:sub": "sc://{OrganizationName}/{ProjectName}/{ServiceConnectionName}"<br />        }<br />      }<br />    }<br />  ]<br />}</pre>En la política, proporcione su información para los siguientes marcadores de posición:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html) | 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:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)Para obtener más información, consulte [Crear una conexión de servicio](https://learn.microsoft.com/en-us/azure/devops/pipelines/library/service-endpoints?view=azure-devops#create-a-service-connection) en la documentación de Microsoft. | AWS DevOps | 
| Añada el rol de IAM al archivo de configuración de Amazon EKS. | El rol de IAM debe tener permisos para realizar las operaciones requeridas en el clúster de Amazon EKS. Como se trata de un rol de canalización, el rol de IAM debe poder administrar casi todos los tipos de recursos del clúster. Por lo tanto, el permiso de grupo `system:masters` es adecuado para este rol.Para añadir la configuración necesaria al `aws-auth ConfigMap` en Kubernetes, use el siguiente código:<pre>- groups:<br />  - system:masters<br />  rolearn: arn:aws:iam::{account_id}:role/ADO-role<br />  username: ADO-role</pre>`{account_id}`Sustitúyalo por su Cuenta de AWS ID.Para obtener más información, consulte la sección sobre [cómo funciona Amazon EKS con IAM](https://docs.aws.amazon.com/eks/latest/userguide/security-iam-service-with-iam.html#security-iam-service-with-iam-roles) en la documentación de Amazon EKS. | AWS DevOps | 

### Creación de un grupo de agentes
<a name="create-an-agent-pool"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un grupo de agentes autoalojado. | Para configurar un grupo de agentes autohospedados en la DevOps cuenta de Azure, siga estos pasos:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)Para obtener más información, consulte [Crear y administrar grupos de agentes](https://learn.microsoft.com/en-us/azure/devops/pipelines/agents/pools-queues?view=azure-devops&tabs=yaml%2Cbrowser) en la documentación de Microsoft. |  | 

### Cree una imagen de DevOps agente de Azure y envíela a Amazon ECR
<a name="build-azure-devops-agent-image-and-push-to-ecr"></a>


| 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 (`webapp`) en el clúster privado de Amazon EKS deben almacenarse en un repositorio de Amazon ECR. Para crear un repositorio de Amazon ECR, complete los pasos siguientes.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)Para obtener más información, consulte [Creación de un repositorio privado de Amazon ECR para almacenar imágenes](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html) 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 Almacene el siguiente contenido en un archivo denominado `Dockerfile`:<pre><br />FROM ubuntu:22.04 <br />ENV TARGETARCH="linux-x64"<br />RUN apt update && apt upgrade -y && apt install -y curl git jq libicu70 unzip wget<br /><br />RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"<br />RUN unzip awscliv2.zip<br />RUN ./aws/install<br />RUN rm -rf aws awscliv2.zip<br /><br />RUN curl -sSL https://get.docker.com/ | sh<br /><br />RUN curl -sL https://aka.ms/InstallAzureCLIDeb | bash<br />RUN mkdir -p azp <br />WORKDIR /azp/<br /><br />COPY ./start.sh ./ <br />RUN chmod +x ./start.sh<br /><br />RUN useradd -m -d /home/agent agent <br />RUN chown -R agent:agent /azp /home/agent<br />RUN groupadd -f docker <br />RUN usermod -aG docker agent<br />USER agent<br /><br />ENTRYPOINT [ "./start.sh" ]</pre> | AWS DevOps | 
| Cree un script para el DevOps agente de Azure. | Para crear el script `start.sh`, siga estos pasos:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html) | 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 almacenó el Dockerfile, ejecute el comando siguiente.<pre>aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com<br /><br />docker build --platform linux/amd64 -t ado-agent:latest .<br /><br />docker tag ado-agent:latest aws_account_id.dkr.ecr.region.amazonaws.com/webapp:latest<br /><br />docker push aws_account_id.dkr.ecr.region.amazonaws.com/webapp:latest</pre>Sustituya `aws_account_id` y por su `region` Cuenta de AWS ID y. Región de AWS | AWS DevOps | 

### Implemente el DevOps agente de Azure en un clúster privado de Amazon EKS
<a name="deploy-the-azure-devops-agent-to-a-private-eks-cluster"></a>


| 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 un PAT, siga estos pasos:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)<pre>apiVersion: v1<br />kind: Secret<br />metadata:<br />  name: azdevops-pat<br />  namespace: default<br />type: Opaque<br />stringData:<br />  AZP_TOKEN: <PAT Token></pre>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)<pre>kubectl create -f ado-secret.yaml</pre>Para obtener más información, consulte [Registrar un agente mediante un token de acceso personal (PAT)](https://learn.microsoft.com/en-us/azure/devops/pipelines/agents/personal-access-token-agent-registration?view=azure-devops) en la documentación de Microsoft. | AWS DevOps | 
| Use el archivo de manifiesto de Kubernetes para la implementación del agente. | 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`agent-deployment.yaml`: <pre>apiVersion: apps/v1<br />kind: Deployment<br />metadata:<br />  name: azure-pipelines-agent-eks<br />  labels:<br />    app: azure-pipelines-agent<br />spec:<br />  replicas: 1<br />  selector:<br />    matchLabels:<br />      app: azure-pipelines-agent<br />  template:<br />    metadata:<br />      labels:<br />        app: azure-pipelines-agent<br />    spec:<br />      containers:<br />      - name: docker<br />        image: docker:dind<br />        securityContext: <br />          privileged: true<br />        volumeMounts:<br />        - name: shared-workspace<br />          mountPath: /workspace<br />        - name: dind-storage<br />          mountPath: /var/lib/docker<br />        env:<br />        - name: DOCKER_TLS_CERTDIR<br />          value: ""<br />      - name: azure-pipelines-agent<br />        image: aws_account_id.dkr.ecr.region.amazonaws.com/webapp:latest<br />        env:<br />        - name: AZP_URL<br />          value: "<Azure account URL>"<br />        - name: AZP_POOL<br />          value: "eks-agent"<br />        - name: AZP_TOKEN<br />          valueFrom:<br />            secretKeyRef:<br />              name: azdevops-pat<br />              key: AZP_TOKEN<br />        - name: AZP_AGENT_NAME<br />          valueFrom:<br />            fieldRef:<br />              fieldPath: metadata.name<br />        - name: DOCKER_HOST<br />          value: tcp://localhost:2375<br />        volumeMounts:<br />        - mountPath: /workspace<br />          name: shared-workspace<br />      volumes:<br />      - name: dind-storage<br />        emptyDir: {}<br />      - name: shared-workspace<br />        emptyDir: {}</pre>Sustituya `aws_account_id` y `<Azure account URL>` por su Cuenta de AWS ID y la URL de su DevOps cuenta de Azure. | 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, use el siguiente comando:<pre>kubectl create -f agent-deployment.tf</pre> | AWS DevOps | 
| Compruebe que el agente se está ejecutando. | Para comprobar que el DevOps agente de Azure se está ejecutando, utilice el siguiente comando:<pre>kubectl get deploy azure-pipelines-agent-eks<br /></pre>La salida debería tener un aspecto similar al siguiente:<pre><br />NAME                        READY   UP-TO-DATE   AVAILABLE   AGE<br />azure-pipelines-agent-eks   1/1     1            1           58s</pre>Asegúrese de que la columna `READY ` muestre `1/1`. | AWS DevOps | 
| Compruebe que el agente esté registrado en el grupo de DevOps agentes de Azure. | Para comprobar que el agente está implementado en el clúster privado de Amazon EKS y registrado en el grupo de agentes `eks-agent`, siga estos pasos:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)Debería ver un agente en la lista con **el estado** **en línea** y el nombre del agente debería empezar por **azure-pipelines-agent-eks-\$1**. | AWS DevOps | 

### Implementación de la aplicación de ejemplo
<a name="deploy-sample-application"></a>


| 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](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:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)<pre>pool:<br />  name: eks-agent<br />#pool: self-hosted # If you are running self-hosted Azure DevOps Agents<br /><br />stages:<br /># Refering the pipeline template, input parameter that are not specified will be added with defaults<br />- template: ./pipeline_templates/main_template.yaml<br />  parameters:<br />    serviceConnectionName: aws-sc<br />    awsRegion: <your region><br />    awsEKSClusterName: <name of your EKS cluster><br />    projectName: webapp<br /></pre>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html) | AWS DevOps | 
| Verifique que la aplicación de muestra se ha implementado. | Una vez finalizada la canalización, compruebe que la implementación de la aplicación de muestra se ha realizado correctamente; para ello, consulte 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:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)Por ejemplo, `20250501.1-image` y `20250501.1-helm`.Para verificar la implementación en el clúster privado de Amazon EKS del espacio de nombres `webapp`, use el siguiente comando:<pre>kubectl get deploy -n webapp </pre>El resultado esperado es el siguiente:<pre><br />NAME     READY   UP-TO-DATE   AVAILABLE<br />webapp   1/1     1            1           </pre>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 | 

## Resolución de problemas
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters-troubleshooting"></a>


| Problema | Solución | 
| --- | --- | 
| La canalización falla cuando el nombre del repositorio de Amazon ECR no coincide con `webapp` | La aplicación de ejemplo espera que el nombre del repositorio de Amazon ECR coincida con el parámetro `projectName: webapp` en `azure_pipeline.yml`.Para resolver este problema, cambie el nombre de su repositorio de Amazon ECR a `webapp` o actualice lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html) | 
| Error: Kubernetes cluster unreachable: the server has asked for the client to provide credentials | Si encuentra este error en el paso “Extraer e implementar gráfico de Helm” de su canalización de Azure, la causa principal suele deberse a una configuración incorrecta de los roles de IAM en el `aws-auth ConfigMap` del clúster de Amazon EKS.Para resolver este problema, compruebe lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html) | 

## Recursos relacionados
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters-resources"></a>

**AWS Blogs**
+ [Cómo federarse AWS desde Azure DevOps mediante OpenID Connect](https://aws.amazon.com/blogs/modernizing-with-aws/how-to-federate-into-aws-from-azure-devops-using-openid-connect/)

**Servicios de AWS documentación**
+ [Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)
+ [Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html)

**Documentación de Microsoft**
+ [¿Qué es Azure DevOps?](https://learn.microsoft.com/en-us/azure/devops/user-guide/what-is-azure-devops?view=azure-devops)
+ [¿Qué es Azure Pipelines?](https://learn.microsoft.com/en-us/azure/devops/pipelines/get-started/what-is-azure-pipelines?view=azure-devops)