

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Stellen Sie Workloads aus DevOps Azure-Pipelines auf private Amazon EKS-Cluster bereit
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters"></a>

*Mahendra Revanasiddappa, Amazon Web Services*

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

Dieses Muster zeigt, wie Continuous Integration und Continuous Delivery (CI/CD) von DevOps Azure-Pipelines zu privaten Amazon Elastic Kubernetes Service (Amazon EKS) -Clustern implementiert werden. Es befasst sich mit einer kritischen Herausforderung, mit der Unternehmen konfrontiert sind, die ihre Sicherheitslage verbessern, indem sie für ihre Amazon EKS-Cluster auf private API-Serverendpunkte umsteigen.

Ein öffentlicher Endpunkt macht den Kubernetes-API-Server direkt mit dem Internet verbunden, wodurch eine größere Angriffsfläche entsteht, auf die böswillige Akteure potenziell abzielen könnten. Durch den Wechsel zu einem privaten Endpunkt ist der Zugriff auf die Steuerungsebene des Clusters auf die virtuelle private Cloud (VPC) des Kunden beschränkt.

Die Umstellung eines Amazon EKS-Clusters auf einen privaten API-Endpunkt verbessert zwar die Sicherheit erheblich, bringt jedoch Konnektivitätsprobleme für externe CI/CD Plattformen wie Azure DevOps mit sich. Auf den privaten Endpunkt kann nur innerhalb der VPC oder der Peering-Netzwerke des Clusters zugegriffen werden. Daher können von Microsoft gehostete DevOps Standard-Azure-Agenten, die außerhalb des AWS privaten Netzwerks arbeiten, den Kubernetes-API-Server nicht direkt erreichen. Dadurch werden typische Bereitstellungsworkflows unterbrochen, die auf Tools wie kubectl oder Helm angewiesen sind, die auf diesen Agenten ausgeführt werden, da sie keine Verbindung zum Cluster herstellen können.

Um dieses Problem zu lösen, zeigt dieses Muster einen effizienten Ansatz, bei dem selbst gehostete DevOps Azure-Agenten in privaten Amazon EKS-Clustern verwendet werden. Diese Lösung bietet hervorragende Kostenoptimierung, betriebliche Effizienz und Skalierbarkeit bei gleichzeitiger Wahrung der Sicherheitsanforderungen. Dieser Ansatz kommt insbesondere Unternehmen zugute, die ihre DevOps Multi-Cloud-Prozesse rationalisieren möchten, ohne Kompromisse bei Leistung oder Sicherheit einzugehen.

## Voraussetzungen und Einschränkungen
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver. AWS-Konto
+ AWS Command Line Interface [(AWS CLI) Version 2.13.17 oder höher, installiert.](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)
+ [kubectl Version 1.25.1 oder höher, installiert.](https://kubernetes.io/docs/tasks/tools/)
+ [Ein privater Amazon EKS-Cluster, Version 1.24 oder höher, [erstellt](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html), mit Berechtigungen zum Erstellen von Namespaces, Geheimnissen und Bereitstellungen.](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html)
+ Worker-Knoten in einem Amazon EKS-Cluster mit ausgehender Konnektivität zum Internet, sodass der auf ihnen ausgeführte DevOps Azure-Agent eine Verbindung zum DevOps Azure-Agentenpool herstellen kann.
+ GitHub Konto [erstellt](https://github.com/signup).
+ [Es wurde ein DevOps Azure-Projekt mit Zugriff auf die Konfiguration von Dienstverbindungen erstellt. Dabei handelt es sich um authentifizierte Verbindungen zwischen Azure-Pipelines und externen Diensten oder Remotediensten.](https://learn.microsoft.com/en-us/azure/devops/user-guide/sign-up-invite-teammates?view=azure-devops&tabs=microsoft-account)
+ Die AWS Toolkit für Azure DevOps Version 1.15 oder höher wurde für das im vorherigen Punkt beschriebene DevOps Azure-Projekt installiert. Installationsanweisungen finden Sie [AWS Toolkit für Azure DevOps](https://marketplace.visualstudio.com/items?itemName=AmazonWebServices.aws-vsts-tools)unter Visual Studio Marketplace.

**Einschränkungen**
+ Einige AWS-Services sind nicht in allen verfügbar AWS-Regionen. Informationen zur Verfügbarkeit in den einzelnen Regionen finden Sie unter [AWS Dienste nach Regionen](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Informationen zu bestimmten Endpunkten finden Sie unter [Dienstendpunkte und Kontingente](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html). Wählen Sie dort den Link für den Dienst aus.

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

Dieses Muster erzeugt Folgendes:
+ **Amazon ECR-Repository** — Das Amazon Elastic Container Registry (Amazon ECR) -Repository speichert das Docker-Image mit dem DevOps Azure-Agenten und der bereitgestellten Beispiel-App.
+ ** DevOps Azure-Agentenpool** — Ein DevOps selbst gehosteter Azure-Agentenpool registriert den Agenten, der auf dem privaten Amazon EKS-Cluster ausgeführt wird.
+ **IAM-Rolle** — Eine AWS Identity and Access Management (IAM) -Rolle für die Azure-Dienstverbindung, um den erforderlichen Zugriff auf den Agenten bereitzustellen, der auf einem privaten Amazon EKS-Cluster ausgeführt wird.
+ ** DevOps Azure-Dienstverbindung** — Eine Dienstverbindung in einem DevOps Azure-Konto zur Verwendung der IAM-Rolle, die den erforderlichen Zugriff für den Zugriff auf die Pipeline-Jobs bereitstellt. AWS-Services

Das folgende Diagramm zeigt die Architektur der Bereitstellung eines selbst gehosteten DevOps Azure-Agenten auf einem privaten Amazon EKS-Cluster und der Bereitstellung einer Beispielanwendung auf demselben Cluster.

![\[Bereitstellung eines selbst gehosteten DevOps Azure-Agenten und einer Beispielanwendung auf einem privaten Amazon EKS-Cluster.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/a965834f-a1e2-4679-bd8c-15eed4f57b55/images/ee22bd3e-311c-46e0-8024-9b7e7752080a.png)


Das Diagramm zeigt den folgenden Workflow:

1. Stellen Sie einen selbst gehosteten DevOps Azure-Agenten als Bereitstellung in einem Amazon EKS-Cluster bereit.

1. Ein DevOps Azure-Agent stellt mithilfe eines persönlichen Zugriffstoken (PAT) zur Authentifizierung eine Verbindung zum Agentenpool auf einem DevOps Azure-Konto her.

1. Azure Pipelines konfiguriert eine Pipeline für die Bereitstellung mithilfe von Code aus einem GitHub Repository.

1. Die Pipeline wird auf dem Agenten aus dem Agentpool ausgeführt, der in der Pipeline-Konfiguration konfiguriert wurde. Der DevOps Azure-Agent ruft die Auftragsinformationen der Pipeline ab, indem er ständig das DevOps Azure-Konto abfragt.

1. Der DevOps Azure-Agent erstellt als Teil des Pipeline-Jobs ein Docker-Image und überträgt das Image in das Amazon ECR-Repository.

1. Der DevOps Azure-Agent stellt die Beispielanwendung auf einem privaten Amazon EKS-Cluster in einem Namespace namens bereit. `webapp` 

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

**Tools**
+ [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) ist ein verwalteter Container-Image-Registry-Service, der sicher, skalierbar und zuverlässig ist.
+ Mit [Amazon Elastic Kubernetes Service (Amazon EKS)](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) können Sie Kubernetes ausführen, AWS ohne dass Sie Ihre eigene Kubernetes-Steuerebene oder Knoten installieren oder verwalten müssen.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) hilft Ihnen dabei, den Zugriff auf Ihre AWS Ressourcen sicher zu verwalten, indem kontrolliert wird, wer authentifiziert und autorisiert ist, diese zu verwenden.

**Andere Tools**
+ [Docker](https://www.docker.com/) ist eine Reihe von Platform-as-a-Service (PaaS) -Produkten, die Virtualisierung auf Betriebssystemebene nutzen, um Software in Containern bereitzustellen.
+ [kubectl](https://kubernetes.io/docs/tasks/tools/) ist eine Befehlszeilenschnittstelle, mit der Sie Befehle für Kubernetes-Cluster ausführen können.

**Code-Repository**
+ Der Code für dieses Muster ist im Repository GitHub [deploy-kubernetes-resources-to- amazon-eks-using-azure -devops](https://github.com/aws-samples/deploy-kubernetes-resources-to-amazon-eks-using-azure-devops) verfügbar.

## Best Practices
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters-best-practices"></a>
+ Informationen zu Amazon EKS finden Sie im [Amazon EKS Best Practices Guide](https://docs.aws.amazon.com/eks/latest/best-practices/introduction.html).
+ Folgen Sie dem Prinzip der geringsten Rechte und gewähren Sie die für die Ausführung einer Aufgabe erforderlichen Mindestberechtigungen. Weitere Informationen finden Sie in der IAM-Dokumentation unter [Gewährung der geringsten Rechte](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) und [bewährte Methoden zur Sicherheit](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html).

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

### Erstellen Sie eine Dienstverbindung
<a name="create-a-service-connection"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Suchen Sie die DevOps Azure-Organisations-GUID. | Melden Sie sich bei Ihrem DevOps Azure-Konto an, und verwenden Sie dann die folgende URL, um die Organisations-GUID zu finden: `https://dev.azure.com/{DevOps_Org_ID}/_apis/projectCollections?api-version=6.0` `{DevOps_org_ID}` Ersetzen Sie die URL durch Ihre DevOps Azure-Organisations-ID. | AWS DevOps | 
| Konfigurieren Sie einen IdP in der AWS-Konto. | Gehen Sie wie folgt vor, um einen Identitätsanbieter (IdP) in der AWS-Konto für eine Azure-Dienstverbindung zu konfigurieren:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)Weitere Informationen finden Sie unter [So stellen Sie DevOps mithilfe AWS von OpenID Connect eine Verbindung zu Azure](https://aws.amazon.com/blogs/modernizing-with-aws/how-to-federate-into-aws-from-azure-devops-using-openid-connect/) her. | AWS DevOps | 
| Erstellen Sie eine IAM-Richtlinie in der AWS-Konto. | Gehen Sie wie folgt vor, um eine IAM-Richtlinie zu erstellen, um die erforderlichen Berechtigungen für die von der DevOps Azure-Pipeline verwendete IAM-Rolle bereitzustellen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html) | AWS DevOps | 
| Erstellen Sie eine IAM-Rolle in der AWS-Konto. | Gehen Sie wie folgt vor, um eine IAM-Rolle AWS-Konto für die Azure-Dienstverbindung zu konfigurieren:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/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>Geben Sie in der Richtlinie Ihre Informationen für die folgenden Platzhalter an:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html) | AWS DevOps | 
| Erstellen Sie eine Dienstverbindung im DevOps Azure-Konto. | Gehen Sie wie folgt vor, um eine Azure-Dienstverbindung zu konfigurieren:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)Weitere Informationen finden Sie in der Microsoft-Dokumentation unter [Erstellen einer Dienstverbindung](https://learn.microsoft.com/en-us/azure/devops/pipelines/library/service-endpoints?view=azure-devops#create-a-service-connection). | AWS DevOps | 
| Fügen Sie die IAM-Rolle zur Amazon EKS-Konfigurationsdatei hinzu. | Die IAM-Rolle muss über die erforderlichen Berechtigungen verfügen, um die erforderlichen Operationen auf dem Amazon EKS-Cluster auszuführen. Da es sich um eine Pipeline-Rolle handelt, muss die IAM-Rolle in der Lage sein, fast alle Arten von Ressourcen im Cluster zu verwalten. Daher ist die `system:masters` Gruppenberechtigung für diese Rolle geeignet.Verwenden Sie den folgenden Code, um die erforderliche Konfiguration `aws-auth ConfigMap` innerhalb von Kubernetes hinzuzufügen:<pre>- groups:<br />  - system:masters<br />  rolearn: arn:aws:iam::{account_id}:role/ADO-role<br />  username: ADO-role</pre>Ersetze es `{account_id}` durch deine ID AWS-Konto .Weitere Informationen finden Sie unter [So funktioniert Amazon EKS mit IAM](https://docs.aws.amazon.com/eks/latest/userguide/security-iam-service-with-iam.html#security-iam-service-with-iam-roles) in der Amazon EKS-Dokumentation. | AWS DevOps | 

### Erstellen Sie einen Agentenpool
<a name="create-an-agent-pool"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen selbst gehosteten Agentenpool. | Gehen Sie wie folgt vor, um einen selbst gehosteten Agentpool im DevOps Azure-Konto zu konfigurieren:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)Weitere Informationen finden Sie in der Microsoft-Dokumentation unter [Agentenpools erstellen und verwalten](https://learn.microsoft.com/en-us/azure/devops/pipelines/agents/pools-queues?view=azure-devops&tabs=yaml%2Cbrowser). |  | 

### Erstellen Sie ein DevOps Azure-Agent-Image und übertragen Sie es auf Amazon ECR
<a name="build-azure-devops-agent-image-and-push-to-ecr"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie ein Amazon-ECR-Repository. | Die Docker-Images, die zur Bereitstellung des DevOps Azure-Agenten und der Beispielanwendung (`webapp`) auf dem privaten Amazon EKS-Cluster verwendet werden, müssen in einem Amazon ECR-Repository gespeichert werden. Gehen Sie wie folgt vor, um ein Amazon ECR-Repository zu erstellen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)Weitere Informationen finden Sie unter [Erstellen eines privaten Amazon ECR-Repositorys zum Speichern von Bildern](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html) in der Amazon ECR-Dokumentation. | AWS DevOps | 
| Erstellen Sie ein Dockerfile, um den DevOps Azure-Agenten zu erstellen. | Erstellen Sie ein Dockerfile, um das Docker-Image zu erstellen, auf dem der Azure-Agent installiert ist. DevOps Speichern Sie den folgenden Inhalt in einer Datei mit dem Namen: `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 | 
| Erstellen Sie ein Skript für den DevOps Azure-Agenten. | Gehen Sie wie folgt vor, um das `start.sh` Skript zu erstellen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html) | AWS DevOps | 
| Erstellen Sie ein Docker-Image mit dem DevOps Azure-Agenten.  | Um ein Docker-Image für die Installation des DevOps Azure-Agenten zu erstellen, verwenden Sie das Dockerfile, das Sie zuvor erstellt haben, um das Image zu erstellen. Führen Sie in demselben Verzeichnis, in dem das Dockerfile gespeichert ist, die folgenden Befehle aus:<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>Ersetzen Sie `aws_account_id` und `region` durch Ihre AWS-Konto ID und. AWS-Region | AWS DevOps | 

### Stellen Sie den DevOps Azure-Agenten in einem privaten Amazon EKS-Cluster bereit
<a name="deploy-the-azure-devops-agent-to-a-private-eks-cluster"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Generieren Sie ein Azure-Token für den persönlichen Zugriff. | Der Agent, der auf dem privaten Amazon EKS-Cluster ausgeführt wird, benötigt ein Personal Access Token (PAT), damit er sich mit dem DevOps Azure-Konto authentifizieren kann. Gehen Sie wie folgt vor, um eine PAT zu generieren:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/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/de_de/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/de_de/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)<pre>kubectl create -f ado-secret.yaml</pre>Weitere Informationen finden Sie in der Microsoft-Dokumentation unter [Registrieren eines Agenten mithilfe eines Personal Access Tokens (PAT)](https://learn.microsoft.com/en-us/azure/devops/pipelines/agents/personal-access-token-agent-registration?view=azure-devops). | AWS DevOps | 
| Verwenden Sie die Kubernetes-Manifestdatei für die Agentenbereitstellung. | Um den DevOps Azure-Agenten auf dem privaten Amazon EKS-Cluster bereitzustellen, kopieren Sie die folgende Manifestdatei und speichern Sie die Datei als`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>Ersetzen Sie `aws_account_id` und `<Azure account URL>` durch Ihre AWS-Konto ID und die DevOps Azure-Konto-URL. | AWS DevOps | 
| Stellen Sie den Agenten auf dem privaten Amazon EKS-Cluster bereit. | Verwenden Sie den folgenden Befehl, um den Azure DevOps-Agenten auf dem privaten Amazon EKS-Cluster bereitzustellen:<pre>kubectl create -f agent-deployment.tf</pre> | AWS DevOps | 
| Stellen Sie sicher, dass der Agent läuft. | Verwenden Sie den folgenden Befehl, um zu überprüfen, ob der DevOps Azure-Agent ausgeführt wird:<pre>kubectl get deploy azure-pipelines-agent-eks<br /></pre>Die erwartete Ausgabe sollte der folgenden ähneln:<pre><br />NAME                        READY   UP-TO-DATE   AVAILABLE   AGE<br />azure-pipelines-agent-eks   1/1     1            1           58s</pre>Vergewissern Sie sich, dass die `READY ` Spalte angezeigt wird`1/1`. | AWS DevOps | 
| Stellen Sie sicher, dass der Agent im DevOps Azure-Agentenpool registriert ist. | Gehen Sie wie folgt vor, um zu überprüfen, ob der Agent auf dem privaten Amazon EKS-Cluster bereitgestellt und im Agentenpool `eks-agent` registriert ist:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)**Es sollte ein Agent mit dem **Status** **Online** aufgeführt sein, und der Name des Agenten sollte mit azure-pipelines-agent-eks -\$1 beginnen.** | AWS DevOps | 

### Beispielanwendung bereitstellen
<a name="deploy-sample-application"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Forken Sie das Repository für die Beispielanwendung in Ihr GitHub Konto ab.  | Forke das folgende AWS Beispiel-Repository zu deinem GitHub Konto:[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 | 
| Erstellen Sie eine Pipeline. | Gehen Sie wie folgt vor, um eine Pipeline in Ihrem DevOps Azure-Konto zu erstellen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/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/de_de/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html) | AWS DevOps | 
| Stellen Sie sicher, dass die Beispielanwendung bereitgestellt wurde. | Überprüfen Sie nach Abschluss der Pipeline die erfolgreiche Bereitstellung der Beispielanwendung, indem Sie sowohl das Amazon ECR-Repository als auch den Amazon EKS-Cluster überprüfen.Gehen Sie wie folgt vor, um Artefakte im Amazon ECR-Repository zu verifizieren:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/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/de_de/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)Beispiel: `20250501.1-image` und `20250501.1-helm`.Verwenden Sie den folgenden Befehl, um die Bereitstellung auf dem privaten Amazon EKS-Cluster im Namespace `webapp` zu überprüfen:<pre>kubectl get deploy -n webapp </pre>Die erwartete Ausgabe sieht wie folgt aus:<pre><br />NAME     READY   UP-TO-DATE   AVAILABLE<br />webapp   1/1     1            1           </pre>Hinweis: Wenn dies Ihr erster Pipeline-Lauf ist, müssen Sie möglicherweise die Serviceverbindung und den Agentenpool autorisieren. Suchen Sie in der DevOps Azure-Pipeline-Oberfläche nach Berechtigungsanfragen und genehmigen Sie sie, um fortzufahren. | AWS DevOps | 

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


| Problem | Lösung | 
| --- | --- | 
| Die Pipeline schlägt fehl, wenn der Name des Amazon ECR-Repositorys nicht übereinstimmt `webapp` | Die Beispielanwendung erwartet, dass der Name des Amazon ECR-Repositorys mit dem `projectName: webapp` Parameter in `azure_pipeline.yml` übereinstimmt.Um dieses Problem zu beheben, benennen Sie Ihr Amazon ECR-Repository um `webapp` oder aktualisieren Sie Folgendes:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html) | 
| Fehler: Der Kubernetes-Cluster ist nicht erreichbar: Der Server hat den Client aufgefordert, Anmeldeinformationen bereitzustellen | Wenn Sie im Schritt „Helm Chart abrufen und bereitstellen“ in Ihrer Azure-Pipeline auf diesen Fehler stoßen, ist die Hauptursache in der Regel auf eine falsche IAM-Rollenkonfiguration in Ihrem Amazon EKS-Cluster zurückzuführen. `aws-auth ConfigMap`Um dieses Problem zu beheben, überprüfen Sie Folgendes:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html) | 

## Zugehörige Ressourcen
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters-resources"></a>

**AWS Blogs**
+ [So stellen Sie mithilfe AWS von OpenID Connect eine Verbindung zu DevOps Azure her](https://aws.amazon.com/blogs/modernizing-with-aws/how-to-federate-into-aws-from-azure-devops-using-openid-connect/)

**AWS-Services Dokumentation**
+ [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)

**Microsoft-Dokumentation**
+ [Was ist Azure DevOps?](https://learn.microsoft.com/en-us/azure/devops/user-guide/what-is-azure-devops?view=azure-devops)
+ [Was ist Azure Pipelines?](https://learn.microsoft.com/en-us/azure/devops/pipelines/get-started/what-is-azure-pipelines?view=azure-devops)