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
Mahendra Revanasiddappa, Amazon Web Services
Übersicht
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
Voraussetzungen
Ein aktiver. AWS-Konto
AWS Command Line Interface (AWS CLI) Version 2.13.17 oder höher, installiert.
Ein privater Amazon EKS-Cluster, Version 1.24 oder höher, erstellt, mit Berechtigungen zum Erstellen von Namespaces, Geheimnissen und Bereitstellungen.
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
. Die AWS Toolkit for 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 for Azure DevOps
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
. Informationen zu bestimmten Endpunkten finden Sie unter Dienstendpunkte und Kontingente. Wählen Sie dort den Link für den Dienst aus.
Architektur
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.

Das Diagramm zeigt den folgenden Workflow:
Stellen Sie einen selbst gehosteten DevOps Azure-Agenten als Bereitstellung in einem Amazon EKS-Cluster bereit.
Ein DevOps Azure-Agent stellt mithilfe eines persönlichen Zugriffstoken (PAT) zur Authentifizierung eine Verbindung zum Agentenpool auf einem DevOps Azure-Konto her.
Azure Pipelines konfiguriert eine Pipeline für die Bereitstellung mithilfe von Code aus einem GitHub Repository.
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.
Der DevOps Azure-Agent erstellt als Teil des Pipeline-Jobs ein Docker-Image und überträgt das Image in das Amazon ECR-Repository.
Der DevOps Azure-Agent stellt die Beispielanwendung auf einem privaten Amazon EKS-Cluster in einem Namespace namens bereit.
webapp
Tools
Tools
Amazon Elastic Container Registry (Amazon ECR) ist ein verwalteter Container-Image-Registry-Service, der sicher, skalierbar und zuverlässig ist.
Mit Amazon Elastic Kubernetes Service (Amazon EKS) 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) 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
Code-Repository
Der Code für dieses Muster ist im Repository GitHub deploy-kubernetes-resources-to- amazon-eks-using-azure -devops
verfügbar.
Bewährte Methoden
Informationen zu Amazon EKS finden Sie im Amazon EKS Best Practices Guide.
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 und bewährte Methoden zur Sicherheit.
Epen
Aufgabe | Beschreibung | 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: | 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:
Weitere Informationen finden Sie unter So stellen Sie DevOps mithilfe AWS von OpenID Connect eine Verbindung zu Azure | 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:
| 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:
Geben Sie in der Richtlinie Ihre Informationen für die folgenden Platzhalter an:
| AWS DevOps |
Erstellen Sie eine Dienstverbindung im DevOps Azure-Konto. | Gehen Sie wie folgt vor, um eine Azure-Dienstverbindung zu konfigurieren:
Weitere Informationen finden Sie in der Microsoft-Dokumentation unter Erstellen einer Dienstverbindung | 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 Verwenden Sie den folgenden Code, um die erforderliche Konfiguration
Ersetze es Weitere Informationen finden Sie unter So funktioniert Amazon EKS mit IAM in der Amazon EKS-Dokumentation. | AWS DevOps |
Aufgabe | Beschreibung | 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:
Weitere Informationen finden Sie in der Microsoft-Dokumentation unter Agentenpools erstellen und verwalten |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Erstellen Sie ein Amazon-ECR-Repository. | Die Docker-Images, die zur Bereitstellung des DevOps Azure-Agenten und der Beispielanwendung (
Weitere Informationen finden Sie unter Erstellen eines privaten Amazon ECR-Repositorys zum Speichern von Bildern 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:
| AWS DevOps |
Erstellen Sie ein Skript für den DevOps Azure-Agenten. | Gehen Sie wie folgt vor, um das
| 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:
Ersetzen Sie | AWS DevOps |
Aufgabe | Beschreibung | 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:
Weitere Informationen finden Sie in der Microsoft-Dokumentation unter Registrieren eines Agenten mithilfe eines Personal Access Tokens (PAT) | 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
Ersetzen Sie | 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:
| 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:
Die erwartete Ausgabe sollte der folgenden ähneln:
Vergewissern Sie sich, dass die | 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
Es sollte ein Agent mit dem Status Online aufgeführt sein, und der Name des Agenten sollte mit azure-pipelines-agent-eks -* beginnen. | AWS DevOps |
Aufgabe | Beschreibung | 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 | AWS DevOps |
Erstellen Sie eine Pipeline. | Gehen Sie wie folgt vor, um eine Pipeline in Ihrem DevOps Azure-Konto zu erstellen:
| 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:
Beispiel: Verwenden Sie den folgenden Befehl, um die Bereitstellung auf dem privaten Amazon EKS-Cluster im Namespace
Die erwartete Ausgabe sieht wie folgt aus:
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
Problem | Lösung |
---|---|
Die Pipeline schlägt fehl, wenn der Name des Amazon ECR-Repositorys nicht übereinstimmt | Die Beispielanwendung erwartet, dass der Name des Amazon ECR-Repositorys mit dem Um dieses Problem zu beheben, benennen Sie Ihr Amazon ECR-Repository um
|
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. Um dieses Problem zu beheben, überprüfen Sie Folgendes:
|
Zugehörige Ressourcen
AWS Blogs
AWS-Services Dokumentation
Microsoft-Dokumentation