View a markdown version of this page

Referenz zur Amazon Elastic Kubernetes Service EKS-Bereitstellungsaktion - 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.

Referenz zur Amazon Elastic Kubernetes Service EKS-Bereitstellungsaktion

Sie können die EKSDeploy Aktion verwenden, um einen Amazon EKS-Dienst bereitzustellen. Für die Bereitstellung ist eine Kubernetes-Manifestdatei erforderlich, die zur Bereitstellung des Images CodePipeline verwendet wird.

Bevor Sie Ihre Pipeline erstellen, müssen Sie die Amazon EKS-Ressourcen bereits erstellt und das Image in Ihrem Image-Repository gespeichert haben. Optional können Sie VPC-Informationen für Ihren Cluster angeben.

Wichtig

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.

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.

Die EKS-Aktion wird für kontoübergreifende Aktionen unterstützt. Um eine kontoübergreifende EKS-Aktion hinzuzufügen, fügen Sie in der Aktionserklärung Daten actionRoleArn aus Ihrem Zielkonto hinzu.

Aktionstyp

  • Kategorie: Deploy

  • Eigentümer: AWS

  • Anbieter: EKS

  • Version: 1

Konfigurationsparameter

ClusterName

Erforderlich: Ja

Der Amazon EKS-Cluster in Amazon EKS.

Optionen unter der Leitung

Die folgenden Optionen sind verfügbar, wenn Helm das ausgewählte Bereitstellungstool ist.

HelmReleaseName

Erforderlich: Ja (nur für den Typ Helm erforderlich)

Der Release-Name für Ihre Bereitstellung.

HelmChartLocation

Erforderlich: Ja (nur für den Typ Helm erforderlich)

Der Standort des Diagramms für Ihren Einsatz.

HelmValuesFiles

Erforderlich: Nein (optional nur für den Typ Helm)

Um Dateien mit Helm-Werten zu überschreiben, geben Sie die kommagetrennten Helm-Wertedateien in die Position des Helm-Diagramms ein.

Optionen unter Kubectl

Die folgenden Optionen sind verfügbar, wenn Kubectl das ausgewählte Bereitstellungstool ist.

ManifestFiles

Erforderlich: Ja (nur für den Typ Kubectl erforderlich)

Der Name Ihrer Manifestdatei, die Textdatei, die den Container-Namen Ihres Dienstes beschreibt, sowie das Bild und das Tag. Sie verwenden diese Datei, um Ihre Bild-URI und andere Informationen zu parametrisieren. Zu diesem Zweck können Sie eine Umgebungsvariable verwenden.

Sie speichern diese Datei im Quell-Repository für Ihre Pipeline.

Namespace

Erforderlich: Nein

Der Kubernetes-Namespace, der in kubectl unseren Befehlen verwendet werden soll. helm

Subnets

Erforderlich: Nein

Die Subnetze für die VPC für Ihren Cluster. Diese sind Teil derselben VPC, die mit Ihrem Cluster verbunden ist. Sie können auch Subnetze angeben, die noch nicht mit Ihrem Cluster verbunden sind, und sie hier angeben.

SecurityGroupIds

Erforderlich: Nein

Die Sicherheitsgruppen für die VPC für Ihren Cluster. Diese sind Teil derselben VPC, die mit Ihrem Cluster verbunden ist. Sie können auch Sicherheitsgruppen angeben, die noch nicht an Ihren Cluster angehängt sind, und sie hier angeben.

Input artifacts (Eingabeartefakte)

  • Anzahl der Artefakte: 1

  • Beschreibung: Die Aktion sucht im Quelldatei-Repository für die Pipeline nach der Kubernetes-Manifestdatei oder dem Helm-Diagramm. Wenn Sie Helm-Diagramme im TGZ-Format verwenden möchten, die in einem S3-Bucket gespeichert sind, können Sie dies tun, indem Sie S3 Bucket/Key als Quellaktion konfigurieren. Der angegebene Objektschlüssel wäre beispielsweise. my-chart-0.1.0.tgz

Ausgabeartefakte

  • Anzahl der Artefakte: 0

  • Beschreibung: Ausgabeartefakte gelten nicht für diesen Aktionstyp.

Umgebungsvariablen

Wird verwendet, um Variablen wie Bild-Repositorys oder Bild-Tags in Manifestdateien oder Helm-Diagrammwertdateien zu ersetzen.

Key (Schlüssel)

Der Schlüssel in einem Schlüssel-Wert-Umgebungsvariablenpaar, z. B. $IMAGE_TAG

Wert

Der Wert für das Schlüssel-Wert-Paar, z. B. v1.0 Der Wert kann mit Ausgabevariablen aus Pipeline-Aktionen oder Pipeline-Variablen parametrisiert werden. Beispielsweise kann eine Pipeline eine ECRBuildAndPublish Aktion haben, die ein ECR-Bild mit erstellt${codepipeline.PipelineExecutionId}, und die EKS-Aktion kann dieses Bild ${codepipeline.PipelineExecutionId} als Wert der Umgebungsvariablen verwenden.

Ausgabevariablen

EKSClusterName

Der Amazon EKS-Cluster in Amazon EKS.

Berechtigungen für Richtlinien zur Servicerolle

Um diese Aktion auszuführen, müssen die folgenden Berechtigungen in der Servicerollenrichtlinie Ihrer Pipeline verfügbar sein.

  • EC2-Aktionen: Wenn die Aktion CodePipeline ausgeführt wird, sind EC2-Instance-Berechtigungen erforderlich. Beachten Sie, dass dies nicht mit der EC2-Instanzrolle identisch ist, die beim Erstellen Ihres EKS-Clusters erforderlich ist.

    Wenn Sie eine vorhandene Servicerolle verwenden, müssen Sie die folgenden Berechtigungen für die Servicerolle hinzufügen, um diese Aktion verwenden zu können.

    • ec2: CreateNetworkInterface

    • ec2: DescribeDhcpOptions

    • ec2: DescribeNetworkInterfaces

    • ec2: DeleteNetworkInterface

    • ec2: DescribeSubnets

    • ec2: DescribeSecurityGroups

    • ec2: DescribeVpcs

  • EKS-Aktionen: Wenn die Aktion CodePipeline ausgeführt wird, sind EKS-Cluster-Berechtigungen erforderlich. Beachten Sie, dass dies nicht mit der IAM-EKS-Clusterrolle identisch ist, die beim Erstellen Ihres EKS-Clusters erforderlich ist.

    Wenn Sie eine vorhandene Servicerolle verwenden, müssen Sie die folgende Berechtigung für die Servicerolle hinzufügen, um diese Aktion verwenden zu können.

    • fragt: DescribeCluster

  • Stream-Aktionen protokollieren: Wenn die Aktion CodePipeline ausgeführt CodePipeline wird, wird eine Protokollgruppe erstellt, die den Namen der Pipeline wie folgt verwendet. Auf diese Weise können Sie die Berechtigungen für die Protokollierung von Ressourcen anhand des Pipeline-Namens einschränken.

    /aws/codepipeline/MyPipelineName

    Wenn Sie eine vorhandene Servicerolle verwenden, müssen Sie die folgenden Berechtigungen für die Servicerolle hinzufügen, um diese Aktion verwenden zu können.

    • Protokolle: CreateLogGroup

    • Protokolle: CreateLogStream

    • Protokolle: PutLogEvents

Beschränken Sie in der Erklärung zur Dienstrollenrichtlinie die Berechtigungen auf die Ressourcenebene, wie im folgenden Beispiel gezeigt.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "eks:DescribeCluster" ], "Resource": "arn:aws:eks:*:111122223333:cluster/YOUR_CLUSTER_NAME" }, { "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DescribeDhcpOptions", "ec2:DescribeNetworkInterfaces", "ec2:DeleteNetworkInterface", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:DescribeVpcs", "ec2:DescribeRouteTables" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:CreateLogGroup", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:*:111122223333:log-group:/aws/codepipeline/YOUR_PIPELINE_NAME", "arn:aws:logs:*:111122223333:log-group:/aws/codepipeline/YOUR_PIPELINE_NAME:*" ] } ] }

Um Protokolle in der Konsole mithilfe der Dialogseite mit den Aktionsdetails anzuzeigen, muss der Konsolenrolle die Berechtigung zum Anzeigen von Protokollen hinzugefügt werden. Weitere Informationen finden Sie im Beispiel für eine Konsolenberechtigungsrichtlinie unterZum Anzeigen von Rechenprotokollen in der Konsole sind Berechtigungen erforderlich.

Hinzufügen der Servicerolle als Zugriffseintrag für Ihren Cluster

Nachdem die Berechtigungen in der Servicerollenrichtlinie Ihrer Pipeline verfügbar sind, konfigurieren Sie Ihre Cluster-Berechtigungen, indem Sie die CodePipeline Servicerolle als Zugriffseintrag für Ihren Cluster hinzufügen.

Sie können auch eine Aktionsrolle verwenden, die über die aktualisierten Berechtigungen verfügt. Weitere Informationen finden Sie im Tutorial-Beispiel unterSchritt 4: Erstellen Sie einen Zugriffseintrag für die CodePipeline Servicerolle.

Aktionsdeklaration

YAML
Name: DeployEKS ActionTypeId: Category: Deploy Owner: AWS Provider: EKS Version: '1' RunOrder: 2 Configuration: ClusterName: my-eks-cluster ManifestFiles: ManifestFile.json OutputArtifacts: [] InputArtifacts: - Name: SourceArtifact
JSON
{ "Name": "DeployECS", "ActionTypeId": { "Category": "Deploy", "Owner": "AWS", "Provider": "EKS", "Version": "1" }, "RunOrder": 2, "Configuration": { "ClusterName": "my-eks-cluster", "ManifestFiles": "ManifestFile.json" }, "OutputArtifacts": [], "InputArtifacts": [ { "Name": "SourceArtifact" } ] },

Die folgenden verwandten Ressourcen bieten Ihnen nützliche Informationen für die Arbeit mit dieser Aktion.