View a markdown version of this page

Tutorial: Bereitstellung auf Amazon EKS mit CodePipeline - AWS CodePipeline

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.

Tutorial: Bereitstellung auf Amazon EKS mit CodePipeline

Dieses Tutorial hilft Ihnen beim Erstellen einer Bereitstellungsaktion CodePipeline , bei der Ihr Code in einem Cluster bereitgestellt wird, den Sie in Amazon EKS konfiguriert haben.

Die EKS-Aktion unterstützt sowohl öffentliche als auch private EKS-Cluster. Private Cluster sind der von EKS empfohlene Typ; beide Typen werden jedoch unterstützt.

Anmerkung

Im Rahmen der Erstellung einer Pipeline in der Konsole wird ein S3-Artefakt-Bucket von CodePipeline für Artefakte verwendet. (Dies unterscheidet sich von dem Bucket, der für eine S3-Quellaktion verwendet wird.) Wenn sich der S3-Artefakt-Bucket in einem anderen Konto als dem Konto für Ihre Pipeline befindet, stellen Sie sicher, dass der S3-Artefakt-Bucket dem Konto gehört AWS-Konten , das sicher und zuverlässig ist.

Anmerkung

Diese Aktion verwendet CodePipeline Managed CodeBuild Compute, um Befehle in einer Build-Umgebung auszuführen. Für die Ausführung der Befehlsaktion fallen separate Gebühren in an AWS CodeBuild.

Anmerkung

Die Aktion „EKSBereitstellen“ ist nur für Pipelines vom Typ V2 verfügbar.

Voraussetzungen

Es müssen bestimmte Ressourcen zur Verfügung stehen, damit Sie mithilfe dieses Tutorials eine CD-Pipeline erstellen können. Zum Einstieg benötigen Sie Folgendes:

Anmerkung

Alle diese Ressourcen sollten in derselben AWS Region erstellt werden.

  • Ein Quellcodeverwaltungs-Repository (dieses Tutorial verwendet GitHub), dem Sie eine deployment.yaml Beispieldatei hinzufügen werden.

  • Sie müssen eine vorhandene CodePipeline Servicerolle verwenden, die Sie mit den Schritt 3: Aktualisieren Sie die CodePipeline Servicerollenrichtlinie in IAM unten aufgeführten Berechtigungen für diese Aktion aktualisieren werden. Die erforderlichen Berechtigungen hängen vom Clustertyp ab, den Sie erstellen. Weitere Informationen finden Sie unter Berechtigungen für Richtlinien zur Servicerolle.

  • Ein funktionierendes Image und ein Repository-Tag, die Sie an ECR oder Ihr Image-Repository übertragen haben.

Nachdem Sie diese Voraussetzungen erfüllt haben, können Sie mit dem Tutorial fortfahren und Ihre CD-Pipeline erstellen.

Schritt 1: (Optional) Erstellen Sie einen Cluster in Amazon EKS

Sie können wählen, ob Sie einen EKS-Cluster mit einem öffentlichen oder privaten Endpunkt erstellen möchten.

In den folgenden Schritten erstellen Sie einen öffentlichen oder privaten Cluster in EKS. Dieser Schritt ist optional, wenn Sie Ihren Cluster bereits erstellt haben.

Erstellen Sie einen öffentlichen Cluster in Amazon EKS

In diesem Schritt erstellen Sie einen Cluster in EKS.

Erstellen Sie einen öffentlichen Cluster
  1. Öffnen Sie die EKS-Konsole und wählen Sie dann Create cluster aus.

  2. Benennen Sie Ihren Cluster im Feld Name. Wählen Sie Next.

  3. Wählen Sie Erstellen aus.

Erstellen Sie einen privaten Cluster in Amazon EKS

Falls Sie sich dafür entscheiden, einen Cluster mit einem privaten Endpunkt zu erstellen, stellen Sie sicher, dass Sie nur die privaten Subnetze anhängen und dass sie über eine Internetverbindung verfügen.

Folgen Sie den nächsten fünf Unterschritten, um einen Cluster mit einem privaten Endpunkt zu erstellen.

Erstellen Sie eine VPC in der Konsole
  1. Öffnen Sie die VPC-Konsole und wählen Sie dann Create VPC aus.

  2. Wählen Sie unter VPC-Einstellungen die Option VPC und mehr aus.

  3. Wählen Sie, ob Sie ein öffentliches und 4 private Subnetze erstellen möchten. Wählen Sie VPC erstellen aus.

  4. Wählen Sie auf der Seite „Subnetze“ die Option Privat aus.

Ermitteln Sie die privaten Subnetze in Ihrer VPC
  1. Navigieren Sie zu Ihrer VPC und wählen Sie die VPC-ID aus, um die VPC-Detailseite zu öffnen.

  2. Wählen Sie auf der VPC-Detailseite die Registerkarte Resource Map aus.

  3. Sehen Sie sich das Diagramm an und notieren Sie sich Ihre privaten Subnetze. Die Subnetze werden mit Beschriftungen angezeigt, die auf den öffentlichen oder privaten Status hinweisen, und jedes Subnetz ist einer Routing-Tabelle zugeordnet.

    Ein Konsolendiagramm, das Subnetze und die Ressourcenübersicht für eine VPC zeigt.

    Beachten Sie, dass ein privater Cluster alle privaten Subnetze enthält.

  4. Erstellen Sie ein öffentliches Subnetz, um das NAT-Gateway zu hosten. Sie können nur jeweils ein Internet-Gateway nur für eine VPC anfügen.

Erstellen Sie ein NAT-Gateway im öffentlichen Subnetz
  1. Erstellen Sie im öffentlichen Subnetz ein NAT-Gateway. Navigieren Sie zur VPC-Konsole und wählen Sie dann Internet-Gateways aus. Wählen Sie Create internet gateway (Internet-Gateway erstellen) aus.

  2. Geben Sie im Feld Name einen Namen für Ihr Internet-Gateway ein. Wählen Sie Create internet gateway (Internet-Gateway erstellen) aus.

Aktualisieren Sie die Routing-Tabelle für das private Subnetz, um den Datenverkehr an das NAT-Gateway weiterzuleiten.

Fügen Sie das NAT-Gateway zu Ihren Routing-Tabellen für Ihre privaten Subnetze hinzu
  1. Navigieren Sie zur VPC-Konsole und wählen Sie dann Subnets aus.

  2. Wählen Sie für jedes private Subnetz dieses aus und wählen Sie dann auf der Detailseite die Routing-Tabelle für dieses Subnetz aus. Wählen Sie Routing-Tabelle bearbeiten aus.

  3. Aktualisieren Sie die Routing-Tabelle für das private Subnetz, um den Internetverkehr zum NAT-Gateway weiterzuleiten. Wählen Sie Route hinzufügen aus. Wählen Sie das NAT-Gateway aus den Optionen aus, die Sie hinzufügen möchten. Wählen Sie das Internet-Gateway, das Sie erstellt haben.

  4. Erstellen Sie für das öffentliche Subnetz eine benutzerdefinierte Routing-Tabelle. Stellen Sie sicher, dass die Network Access Control List (ACL) für Ihr öffentliches Subnetz eingehenden Datenverkehr aus dem privaten Subnetz zulässt.

  5. Wählen Sie Änderungen speichern aus.

In diesem Schritt erstellen Sie einen Cluster in EKS.

Erstellen Sie einen privaten Cluster
  1. Öffnen Sie die EKS-Konsole und wählen Sie dann Create cluster aus.

  2. Benennen Sie Ihren Cluster im Feld Name. Wählen Sie Weiter aus.

  3. Geben Sie Ihre VPC und andere Konfigurationsinformationen an. Wählen Sie Erstellen aus.

Ihr EKS-Cluster kann ein öffentlicher oder ein privater Cluster sein. Dieser Schritt gilt für Cluster, die NUR einen privaten Endpunkt haben. Stellen Sie sicher, dass Ihr Cluster privat ist.

Schritt 2: Konfigurieren Sie Ihren privaten Cluster in Amazon EKS

Dieser Schritt gilt nur, wenn Sie einen privaten Cluster erstellt haben. Dieser Schritt gilt für Cluster, die NUR einen privaten Endpunkt haben.

Konfigurieren Sie Ihren Cluster
  1. Hängen Sie private Subnetze nur im EKS-Cluster auf der Registerkarte Netzwerk an. Hängen Sie die privaten Subnetze an, die im Abschnitt Ermitteln Sie die privaten Subnetze in Ihrer VPC unter erfasst sind. Schritt 1: (Optional) Erstellen Sie einen Cluster in Amazon EKS

  2. Stellen Sie sicher, dass die privaten Subnetze Zugriff auf das Internet haben, da Artefakte aus dem S3-Artefakt-Bucket für Ihre Pipeline CodePipeline gespeichert und abgerufen werden.

Schritt 3: Aktualisieren Sie die CodePipeline Servicerollenrichtlinie in IAM

In diesem Schritt aktualisieren Sie eine vorhandene CodePipeline Servicerolle, z. B. mit den Berechtigungencp-service-role, die für die Verbindung mit Ihrem Cluster erforderlich sind. CodePipeline Wenn Sie noch keine Rolle haben, erstellen Sie eine neue.

Aktualisieren Sie Ihre CodePipeline Servicerolle mit den folgenden Schritten.

So aktualisieren Sie Ihre CodePipeline Servicerollenrichtlinie
  1. Öffnen Sie unter https://console.aws.amazon.com/iam/ die IAM-Konsole.

  2. Wählen Sie im Dashboard der Konsole die Option Rollen aus.

  3. Schlagen Sie nach Ihrer CodePipeline Servicerolle, z. cp-service-role B.

  4. Fügen Sie eine neue Inline-Richtlinie hinzu.

  5. Geben Sie im Richtlinieneditor Folgendes ein.

    • Fügen Sie für einen öffentlichen Cluster die folgenden Berechtigungen hinzu.

      JSON
      { "Version":"2012-10-17", "Statement": [ { "Sid": "EksClusterPolicy", "Effect": "Allow", "Action": "eks:DescribeCluster", "Resource": "arn:aws:eks:us-east-1:111122223333:cluster/my-cluster" }, { "Sid": "EksVpcClusterPolicy", "Effect": "Allow", "Action": [ "ec2:DescribeDhcpOptions", "ec2:DescribeNetworkInterfaces", "ec2:DescribeRouteTables", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:DescribeVpcs" ], "Resource": [ "*" ] } ] }
    • Fügen Sie für einen privaten Cluster die folgenden Berechtigungen hinzu. Private Cluster benötigen, falls zutreffend, zusätzliche Berechtigungen für Ihre VPC.

      JSON
      { "Version":"2012-10-17", "Statement": [ { "Sid": "EksClusterPolicy", "Effect": "Allow", "Action": "eks:DescribeCluster", "Resource": "arn:aws:eks:us-east-1:111122223333:cluster/my-cluster" }, { "Sid": "EksVpcClusterPolicy", "Effect": "Allow", "Action": [ "ec2:DescribeDhcpOptions", "ec2:DescribeNetworkInterfaces", "ec2:DescribeRouteTables", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:DescribeVpcs" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": "ec2:CreateNetworkInterface", "Resource": "*", "Condition": { "StringEqualsIfExists": { "ec2:Subnet": [ "arn:aws:ec2:us-east-1:ACCOUNT-ID:subnet/subnet-03ebd65daeEXAMPLE", "arn:aws:ec2:us-east-1:ACCOUNT-ID:subnet/subnet-0e377f6036EXAMPLE", "arn:aws:ec2:us-east-1:ACCOUNT-ID:subnet/subnet-0db658ba1cEXAMPLE", "arn:aws:ec2:us-east-1:ACCOUNT-ID:subnet/subnet-0db658ba1cEXAMPLE" ] } } }, { "Effect": "Allow", "Action": "ec2:CreateNetworkInterfacePermission", "Resource": "*", "Condition": { "ArnEquals": { "ec2:Subnet": [ "arn:aws:ec2:us-east-1:111122223333:subnet/subnet-03ebd65daeEXAMPLE", "arn:aws:ec2:us-east-1:111122223333:subnet/subnet-0e377f6036EXAMPLE", "arn:aws:ec2:us-east-1:111122223333:subnet/subnet-0db658ba1cEXAMPLE", "arn:aws:ec2:us-east-1:111122223333:subnet/subnet-0db658ba1cEXAMPLE" ] } } }, { "Effect": "Allow", "Action": "ec2:DeleteNetworkInterface", "Resource": "*", "Condition": { "StringEqualsIfExists": { "ec2:Subnet": [ "arn:aws:ec2:us-east-1:ACCOUNT-ID:subnet/subnet-03ebd65daeEXAMPLE", "arn:aws:ec2:us-east-1:ACCOUNT-ID:subnet/subnet-0e377f6036EXAMPLE", "arn:aws:ec2:us-east-1:ACCOUNT-ID:subnet/subnet-0db658ba1cEXAMPLE", "arn:aws:ec2:us-east-1:ACCOUNT-ID:subnet/subnet-0db658ba1cEXAMPLE" ] } } } ] }
  6. Wählen Sie Richtlinie aktualisieren.

Schritt 4: Erstellen Sie einen Zugriffseintrag für die CodePipeline Servicerolle

In diesem Schritt erstellen Sie einen Zugriffseintrag in Ihrem Cluster, der die in Schritt 3 aktualisierte CodePipeline Servicerolle zusammen mit einer verwalteten Zugriffsrichtlinie hinzufügt.

  1. Öffnen Sie die EKS-Konsole und navigieren Sie zu Ihrem Cluster.

  2. Wählen Sie die Registerkarte Zugriff aus.

  3. Wählen Sie unter IAM-Zugriffseinträge die Option Zugriffseintrag erstellen aus.

  4. Geben Sie unter IAM-Principal-ARN die Rolle ein, die Sie gerade für die Aktion aktualisiert haben, z. B. cp-service-role Wählen Sie Weiter aus.

  5. Wählen Sie auf der Seite Schritt 2: Zugriffsrichtlinie hinzufügen unter Richtlinienname die verwaltete Richtlinie für den Zugriff aus, z. B. AmazonEKSClusterAdminPolicy Wählen Sie Richtlinie hinzufügen aus. Wählen Sie Weiter aus.

    Anmerkung

    Dies ist die Richtlinie, die die CodePipeline Aktion verwendet, um mit Kubernetes zu kommunizieren. Es hat sich bewährt, den Umfang der Berechtigungen in Ihrer Richtlinie mit den geringsten Rechten und nicht in der Verwaltungsrichtlinie einzuschränken, indem Sie stattdessen eine benutzerdefinierte Richtlinie anhängen.

  6. Wählen Sie auf der Bewertungsseite die Option Erstellen aus.

Schritt 5: Erstellen Sie ein Quell-Repository und fügen Sie die Helm-Chart-Konfigurationsdateien hinzu

In diesem Schritt erstellen Sie eine für Ihre Aktion geeignete Konfigurationsdatei (Kubernetes-Manifestdateien oder Helm-Diagramm) und speichern die Konfigurationsdatei in Ihrem Quell-Repository. Verwenden Sie die entsprechende Datei für Ihre Konfiguration. Für weitere Informationen siehe https://kubernetes.io/docs/reference/kubectl/quick-reference/ oder https://helm.sh/docs/topics/charts/.

  • Verwenden Sie für Kubernetes eine Manifestdatei.

  • Verwenden Sie für Helm ein Helm-Diagramm.

  1. Erstellen oder verwenden Sie ein vorhandenes GitHub Repository.

  2. Erstellen Sie in Ihrem Repository eine neue Struktur für Ihre Helm-Diagrammdateien, wie im folgenden Beispiel gezeigt.

    mychart |-- Chart.yaml |-- charts |-- templates | |-- NOTES.txt | |-- _helpers.tpl | |-- deployment.yaml | |-- ingress.yaml | `-- service.yaml `-- values.yaml
  3. Fügen Sie die Datei zur Stammebene Ihres Repositorys hinzu.

Schritt 6: Deine Pipeline erstellen

Verwenden Sie den CodePipeline Assistenten, um Ihre Pipeline-Stufen zu erstellen und Ihr Quell-Repository zu verbinden.

So erstellen Sie Ihre Pipeline
  1. Öffnen Sie die CodePipeline Konsole unter https://console.aws.amazon.com/codepipeline/.

  2. Wählen sie auf der Seite Welcome (Willkommen) die Option Getting started (Erste Schritte) aus, oder auf der Seite Pipelines die Option Create pipeline (Pipeline erstellen).

  3. Wählen Sie auf der Seite Schritt 1: Erstellungsoption auswählen unter Erstellungsoptionen die Option Benutzerdefinierte Pipeline erstellen aus. Wählen Sie Weiter aus.

  4. In Schritt 2: Wählen Sie die Pipeline-Einstellungen und geben Sie im Feld Pipeline-Name den Wert einMyEKSPipeline.

  5. CodePipeline bietet Pipelines vom Typ V1 und V2, die sich in ihren Eigenschaften und ihrem Preis unterscheiden. Der Typ V2 ist der einzige Typ, den Sie in der Konsole auswählen können. Weitere Informationen finden Sie unter Pipeline-Typen. Informationen zur Preisgestaltung für finden Sie CodePipeline unter Preisgestaltung.

  6. Wählen Sie unter Servicerolle die Servicerolle aus, die Sie in Schritt 3 aktualisiert haben.

  7. Belassen Sie die Einstellungen unter Erweiterte Einstellungen bei den Standardeinstellungen, und wählen Sie dann Next (Weiter) aus.

  8. Wählen Sie auf der Seite Schritt 3: Quellphase hinzufügen für Quellanbieter die Option , eine Verbindung zu Ihrem GitHub Repository herzustellen.

  9. Wähle auf der Seite Schritt 4: Build Stage hinzufügen die Option Überspringen aus.

  10. Wählen Sie auf der Seite Schritt 5: Bereitstellungsphase hinzufügen die Option Amazon EKS aus.

    Stellen Sie das Konfigurationsformular bereit, wobei Helm ausgewählt ist. Es enthält Felder für den Versionsnamen, die Position des Diagramms und andere Optionen.
    1. Wählen Sie unter Konfigurationstyp bereitstellen die Option Helm aus.

    2. Geben Sie im Feld Position des Helm-Diagramms den Namen der Version ein, z. my-release B. Geben Sie für den Speicherort des Helm-Diagramms den Pfad für Ihre Helm-Diagrammdateien ein, z. mychart B.

    3. Wählen Sie Weiter aus.

  11. Überprüfen Sie auf der Seite Step 6: Review Ihre Pipeline-Konfiguration und wählen Sie Create pipeline, um die Pipeline zu erstellen.

    Ein Konsolendiagramm, das eine erfolgreiche Pipeline-Ausführung zeigt, wobei die Bereitstellungsaktion zu Ihrer Pipeline hinzugefügt wurde.
  12. Nachdem die Pipeline erfolgreich ausgeführt wurde, wählen Sie Details anzeigen, um die Protokolle der Aktion und die Aktionsausgabe anzuzeigen.