Verwalten eines Amazon-EKS-Clusters - AWS Step Functions

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.

Verwalten eines Amazon-EKS-Clusters

Dieses Beispielprojekt veranschaulicht, wie Sie Step Functions und Amazon Elastic Kubernetes Service verwenden, um einen Amazon EKS-Cluster mit einer Knotengruppe zu erstellen, einen Job bei Amazon EKS auszuführen und dann die Ausgabe zu untersuchen. Wenn Sie fertig sind, werden die Knotengruppen und den Amazon EKS-Cluster entfernt. Dieses Beispielprojekt erstellt Folgendes:

  • Ein Amazon Elastic Kubernetes Service Service-Cluster

  • Ein SNS-Thema.

  • ZugehörigeAWS Identity and Access Management(IAM) -Rollen

Weitere Informationen zu Step Functions und Step Functions Functions-Dienstintegrationen finden Sie im Folgenden:

Anmerkung

Für dieses Beispielprojekt können Gebühren anfallen.

Für neue AWS-Benutzer steht ein kostenloses Nutzungskontingent zur Verfügung. Im Rahmen dieses Kontingents sind die Services bis zu einem bestimmten Nutzungsumfang kostenlos. Weitere Informationen zuAWS-Kosten und das kostenlose Kontingent finden Sie unterAmazon EKS-Preiseaus.

Erstellen des Zustandsautomaten und Bereitstellen von Ressourcen

  1. Öffnen SieStep Functions -Konsoleund wähleErstellen eines Zustandsautomatenaus.

  2. Klicken Sie aufFühren Sie ein Beispielprojekt ausund danach aufVerwalten eines Amazon-EKS-Clustersaus.

    Der Code und der Visual Workflow des Zustandsautomaten werden angezeigt.

    
            Schulungsmodell-Workflow.
  3. Wählen Sie Next (Weiter) aus.

    Die Seite Deploy resources (Ressourcen bereitstellen) wird angezeigt und listet die Ressourcen auf, die erstellt werden. Die Ressourcen für dieses Beispielprojekt:

    • Ein -Zustandsautomat

    • Ein Amazon EKS-Cluster

    • Ein SNS-Thema.

    • Zugehörige IAM-Rollen

  4. Wählen Sie Deploy Resources (Ressourcen bereitstellen) aus.

    Anmerkung

    Es kann bis zu 25 Minuten dauern, bis diese Ressourcen und dazugehörende IAM-Berechtigungen erstellt werden. Wenn die Seite Deploy resources (Ressourcen bereitstellen) anzeigt wird, können Sie den Link Stack ID (Stack-ID) öffnen, um zu sehen, welche Ressourcen bereitgestellt werden.

Starten einer neuen Ausführung

  1. Öffnen SieStep Functions -Konsoleaus.

  2. Auf derZustandsautomatenWählen Sie dieEKSClusterManagementStateMachineZustandsautomaten, die vom Beispielprojekt erstellt wurde, und wählen Sie dannStarten Sie die Ausführungaus.

  3. Geben Sie auf der Seite New execution (Neue Ausführung) einen Namen für die Ausführung (optional) ein und wählen Sie Start Execution (Ausführung starten).

  4. (Optional) Um die Ausführung leichter zu identifizieren, können Sie imNameaus. Standardmäßig generiert Step Functions automatisch einen eindeutigen Ausführungsnamen.

    Anmerkung

    Mit Step Functions können Sie Statuscomputer-, Ausführungs- und Aktivitätsnamen erstellen, die Nicht-ASCII-Zeichen enthalten. Diese Nicht-ASCII-Namen funktionieren nicht mit AmazonCloudWatchaus. Um sicherzustellen, dass Sie nachverfolgen könnenCloudWatchMetriken, wählen Sie einen Namen, der nur ASCII-Zeichen verwendet.

  5. (Optional) Wechseln Sie auf den Step Functions zum neu erstellten ZustandsautomatenDashboardund danach aufNeue Ausführungaus.

  6. Wenn eine Ausführung abgeschlossen ist, können Sie imVisueller Workflowund stöbern Sie imEingabeundAusgabeunterSchritt-Detailsaus.

Code des Zustandsautomaten aus diesem Beispiel

Der Zustandscomputer in diesem Beispielprojekt lässt sich in Amazon EKS integrieren, indem ein Amazon EKS-Cluster und eine Knotengruppe erstellt wird, und verwendet ein SNS-Thema, um Ergebnisse zurückzugeben.

Durchsuchen Sie diesen Beispiel-Zustandsautomaten, um zu sehen, wie Step Functions Amazon EKS-Cluster und Knotengruppen verwaltet.

Weitere Informationen darüber, wie AWS Step Functions andere AWS-Services steuern kann, finden Sie unter Verwenden von AWS Step Functions mit sonstigen Services.

{ "Comment": "An example of the Amazon States Language for running Amazon EKS Cluster", "StartAt": "Create an EKS cluster", "States": { "Create an EKS cluster": { "Type": "Task", "Resource": "arn:aws:states:::eks:createCluster.sync", "Parameters": { "Name": "ExampleCluster", "ResourcesVpcConfig": { "SubnetIds": [ "subnet-0aacf887d9f00e6a7", "subnet-0e5fc41e7507194ab" ] }, "RoleArn": "arn:aws:iam::111122223333:role/StepFunctionsSample-EKSClusterManag-EKSServiceRole-ANPAJ2UCCR6DPCEXAMPLE" }, "Retry": [{ "ErrorEquals": [ "States.ALL" ], "IntervalSeconds": 30, "MaxAttempts": 2, "BackoffRate": 2 }], "ResultPath": "$.eks", "Next": "Create a node group" }, "Create a node group": { "Type": "Task", "Resource": "arn:aws:states:::eks:createNodegroup.sync", "Parameters": { "ClusterName": "ExampleCluster", "NodegroupName": "ExampleNodegroup", "NodeRole": "arn:aws:iam::111122223333:role/StepFunctionsSample-EKSClusterMan-NodeInstanceRole-ANPAJ2UCCR6DPCEXAMPLE", "Subnets": [ "subnet-0aacf887d9f00e6a7", "subnet-0e5fc41e7507194ab"] }, "Retry": [{ "ErrorEquals": [ "States.ALL" ], "IntervalSeconds": 30, "MaxAttempts": 2, "BackoffRate": 2 }], "ResultPath": "$.nodegroup", "Next": "Run a job on EKS" }, "Run a job on EKS": { "Type": "Task", "Resource": "arn:aws:states:::eks:runJob.sync", "Parameters": { "ClusterName": "ExampleCluster", "CertificateAuthority.$": "$.eks.Cluster.CertificateAuthority.Data", "Endpoint.$": "$.eks.Cluster.Endpoint", "LogOptions": { "RetrieveLogs": true }, "Job": { "apiVersion": "batch/v1", "kind": "Job", "metadata": { "name": "example-job" }, "spec": { "backoffLimit": 0, "template": { "metadata": { "name": "example-job" }, "spec": { "containers": [ { "name": "pi-20", "image": "perl", "command": [ "perl" ], "args": [ "-Mbignum=bpi", "-wle", "print '{ ' . '\"pi\": '. bpi(20) . ' }';" ] } ], "restartPolicy": "Never" } } } } }, "ResultSelector": { "status.$": "$.status", "logs.$": "$.logs..pi" }, "ResultPath": "$.RunJobResult", "Next": "Examine output" }, "Examine output": { "Type": "Choice", "Choices": [ { "And": [ { "Variable": "$.RunJobResult.logs[0]", "NumericGreaterThan": 3.141 }, { "Variable": "$.RunJobResult.logs[0]", "NumericLessThan": 3.142 } ], "Next": "Send expected result" } ], "Default": "Send unexpected result" }, "Send expected result": { "Type": "Task", "Resource": "arn:aws:states:::sns:publish", "Parameters": { "TopicArn": "arn:aws:sns:sa-east-1:111122223333:StepFunctionsSample-EKSClusterManagement123456789012-SNSTopic-ANPAJ2UCCR6DPCEXAMPLE", "Message": { "Input.$": "States.Format('Saw expected value for pi: {}', $.RunJobResult.logs[0])" } }, "ResultPath": "$.SNSResult", "Next": "Delete job" }, "Send unexpected result": { "Type": "Task", "Resource": "arn:aws:states:::sns:publish", "Parameters": { "TopicArn": "arn:aws:sns:sa-east-1:111122223333:StepFunctionsSample-EKSClusterManagement123456789012-SNSTopic-ANPAJ2UCCR6DPCEXAMPLE", "Message": { "Input.$": "States.Format('Saw unexpected value for pi: {}', $.RunJobResult.logs[0])" } }, "ResultPath": "$.SNSResult", "Next": "Delete job" }, "Delete job": { "Type": "Task", "Resource": "arn:aws:states:::eks:call", "Parameters": { "ClusterName": "ExampleCluster", "CertificateAuthority.$": "$.eks.Cluster.CertificateAuthority.Data", "Endpoint.$": "$.eks.Cluster.Endpoint", "Method": "DELETE", "Path": "/apis/batch/v1/namespaces/default/jobs/example-job" }, "ResultSelector": { "status.$": "$.ResponseBody.status" }, "ResultPath": "$.DeleteJobResult", "Next": "Delete node group" }, "Delete node group": { "Type": "Task", "Resource": "arn:aws:states:::eks:deleteNodegroup.sync", "Parameters": { "ClusterName": "ExampleCluster", "NodegroupName": "ExampleNodegroup" }, "Next": "Delete cluster" }, "Delete cluster": { "Type": "Task", "Resource": "arn:aws:states:::eks:deleteCluster.sync", "Parameters": { "Name": "ExampleCluster" }, "End": true } } }

Weitere Informationen zum Konfigurieren von IAM bei Verwendung von Step Functions mit anderenAWSDienstleistungen, sieheIAM-Richtlinien für integrierte Diensteaus.

IAM-Beispiel

Dieses BeispielAWS Identity and Access Management(IAM) -Beispielprojekt erstellt wurden, enthalten die geringstmöglichen Privilegien, die für die Ausführung des Zustandsautomaten und der verwandten Ressourcen erforderlich sind. Wir empfehlen, nur die erforderlichen Berechtigungen in die IAM-Richtlinien aufzunehmen.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "eks:CreateCluster" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "eks:DescribeCluster", "eks:DeleteCluster" ], "Resource": "arn:aws:eks:sa-east-1:111122223333:cluster/*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": [ "arn:aws:iam::111122223333:role/StepFunctionsSample-EKSClusterManag-EKSServiceRole-ANPAJ2UCCR6DPCEXAMPLE" ], "Condition": { "StringEquals": { "iam:PassedToService": "eks.amazonaws.com" } } } ] }
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sns:Publish" ], "Resource": [ "arn:aws:sns:sa-east-1:111122223333:StepFunctionsSample-EKSClusterManagement123456789012-SNSTopic-ANPAJ2UCCR6DPCEXAMPLE" ] } ] }

Weitere Informationen zum Konfigurieren von IAM bei Verwendung von Step Functions mit anderenAWSDienstleistungen, sieheIAM-Richtlinien für integrierte Diensteaus.