View a markdown version of this page

Riferimento all'azione di distribuzione EKS di Amazon Elastic Kubernetes Service - AWS CodePipeline

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Riferimento all'azione di distribuzione EKS di Amazon Elastic Kubernetes Service

Puoi utilizzare l'EKSDeployazione per distribuire un servizio Amazon EKS. La distribuzione richiede un file manifest Kubernetes che viene CodePipeline utilizzato per distribuire l'immagine.

Prima di creare la pipeline, devi aver già creato le risorse Amazon EKS e aver archiviato l'immagine nel tuo repository di immagini. Facoltativamente, puoi fornire informazioni VPC per il tuo cluster.

Importante

Questa azione utilizza il CodeBuild calcolo CodePipeline gestito per eseguire comandi in un ambiente di compilazione. L'esecuzione dell'azione dei comandi comporterà costi separati in. AWS CodeBuild

Nota

L'azione di EKS distribuzione è disponibile solo per le pipeline di tipo V2.

L'azione EKS supporta cluster EKS pubblici e privati. I cluster privati sono il tipo consigliato da EKS; tuttavia, entrambi i tipi sono supportati.

L'azione EKS è supportata per le azioni tra account. Per aggiungere un'azione EKS con più account, aggiungila actionRoleArn dal tuo account di destinazione nella dichiarazione dell'azione.

Tipo di operazione

  • Categoria: Deploy

  • Proprietario: AWS

  • Provider: EKS

  • Versione: 1

Parametri di configurazione

ClusterName

Obbligatorio: sì

Il cluster Amazon EKS in Amazon EKS.

Opzioni in Helm

Le seguenti sono opzioni disponibili quando Helm è lo strumento di distribuzione selezionato.

HelmReleaseName

Obbligatorio: Sì (obbligatorio solo per il tipo Helm)

Il nome della release per la distribuzione.

HelmChartLocation

Obbligatorio: Sì (obbligatorio solo per il tipo di timone)

La posizione sulla mappa per la distribuzione.

HelmValuesFiles

Obbligatoria: No (opzionale solo per il tipo di timone)

Per sovrascrivere i file di valori Helm, inserisci i file di valori Helm separati da virgole nella posizione del grafico Helm.

Opzioni in Kubectl

Le seguenti sono opzioni disponibili quando Kubectl è lo strumento di distribuzione selezionato.

ManifestFiles

Obbligatorio: Sì (obbligatorio solo per il tipo Kubectl)

Il nome del file manifest, il file di testo che descrive il nome del contenitore del servizio, l'immagine e il tag. Utilizzate questo file per parametrizzare l'URI dell'immagine e altre informazioni. È possibile utilizzare una variabile di ambiente per questo scopo.

Questo file viene archiviato nel repository di origine della pipeline.

Namespace

Obbligatorio: no

Lo spazio dei nomi Kubernetes da utilizzare nei comandi or. kubectl helm

Sottoreti

Obbligatorio: no

Le sottoreti del VPC per il tuo cluster. Fanno parte dello stesso VPC collegato al cluster. Puoi anche fornire sottoreti che non sono già collegate al tuo cluster e specificarle qui.

SecurityGroupIds

Obbligatorio: no

I gruppi di sicurezza per il VPC del tuo cluster. Fanno parte dello stesso VPC collegato al cluster. Puoi anche fornire gruppi di sicurezza che non sono già collegati al tuo cluster e specificarli qui.

Input artifact (Artefatti di input)

  • Numero di artefatti: 1

  • Descrizione: l'azione cerca il file manifest di Kubernetes o il grafico Helm nel repository dei file di origine della pipeline. Se desideri utilizzare i grafici Helm in formato .tgz archiviati in un bucket S3, puoi farlo configurando S3 come azione sorgente. Bucket/Key Ad esempio, la chiave oggetto fornita sarebbe. my-chart-0.1.0.tgz

Artefatti di output

  • Numero di artefatti: 0

  • Descrizione: gli artefatti di output non si applicano a questo tipo di azione.

Variabili di ambiente

Utilizzato per sostituire variabili come archivi di immagini o tag di immagini nei file manifest o nei file dei valori dei grafici Helm.

Chiave

La chiave in una coppia di variabili di ambiente chiave-valore, ad esempio. $IMAGE_TAG

Valore

Il valore per la coppia chiave-valore, ad esempio. v1.0 Il valore può essere parametrizzato con variabili di output provenienti dalle azioni della pipeline o dalle variabili della pipeline. Ad esempio, la pipeline può avere un' ECRBuildAndPublish azione che crea un'immagine ECR con ${codepipeline.PipelineExecutionId} e l'azione EKS può utilizzare questa immagine ${codepipeline.PipelineExecutionId} come valore della variabile di ambiente.

Variabili di output

EKSClusterName

Il cluster Amazon EKS in Amazon EKS.

Ruolo del servizio, policy, autorizzazioni

Per eseguire questa azione, le seguenti autorizzazioni devono essere disponibili nella policy sui ruoli di servizio della pipeline.

  • Azioni EC2: quando CodePipeline viene eseguita l'azione, sono richieste le autorizzazioni dell'istanza EC2. Nota che questo non è lo stesso ruolo dell'istanza EC2 richiesto quando crei il tuo cluster EKS.

    Se si utilizza un ruolo di servizio esistente, per utilizzare questa azione, è necessario aggiungere le seguenti autorizzazioni per il ruolo di servizio.

    • ec2: CreateNetworkInterface

    • ec2: DescribeDhcpOptions

    • ec2: DescribeNetworkInterfaces

    • ec2: DeleteNetworkInterface

    • ec2: DescribeSubnets

    • ec2: DescribeSecurityGroups

    • ec2: DescribeVpcs

  • Azioni EKS: quando CodePipeline viene eseguita l'azione, sono richieste le autorizzazioni del cluster EKS. Nota che questo non è lo stesso ruolo del cluster IAM EKS richiesto quando crei il tuo cluster EKS.

    Se stai utilizzando un ruolo di servizio esistente, per utilizzare questa azione, dovrai aggiungere la seguente autorizzazione per il ruolo di servizio.

    • Chiede: DescribeCluster

  • Azioni di log stream: quando CodePipeline esegue l'azione, CodePipeline crea un gruppo di log utilizzando il nome della pipeline come segue. Ciò consente di limitare le autorizzazioni per registrare le risorse utilizzando il nome della pipeline.

    /aws/codepipeline/MyPipelineName

    Se si utilizza un ruolo di servizio esistente, per utilizzare questa azione, è necessario aggiungere le seguenti autorizzazioni per il ruolo di servizio.

    • registri: CreateLogGroup

    • registri: CreateLogStream

    • registri: PutLogEvents

Nella dichiarazione sulla politica del ruolo del servizio, riduci l'ambito delle autorizzazioni al livello di risorsa, come mostrato nell'esempio seguente.

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:*" ] } ] }

Per visualizzare i log nella console utilizzando la pagina di dialogo dei dettagli dell'azione, è necessario aggiungere l'autorizzazione per visualizzare i log al ruolo della console. Per ulteriori informazioni, consulta l'esempio della politica delle autorizzazioni della console inAutorizzazioni necessarie per visualizzare i log di calcolo nella console.

Aggiungere il ruolo del servizio come voce di accesso per il cluster

Dopo che le autorizzazioni sono disponibili nella policy sui ruoli di servizio della pipeline, configuri le autorizzazioni del cluster aggiungendo il ruolo di CodePipeline servizio come voce di accesso per il cluster.

Puoi anche utilizzare un ruolo di azione con le autorizzazioni aggiornate. Per ulteriori informazioni, consulta l'esempio del tutorial inFase 4: Creare una voce di accesso per il ruolo di servizio CodePipeline.

Dichiarazione dell'operazione

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" } ] },

Le risorse correlate seguenti possono essere utili durante l'utilizzo di questa operazione.