

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à.

# Tutorial: Esegui la distribuzione su Amazon EKS con CodePipeline
<a name="tutorials-eks-deploy"></a>

Questo tutorial ti aiuta a creare un'azione di distribuzione CodePipeline che distribuisce il codice in un cluster che hai configurato in Amazon EKS.

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

**Nota**  
Come parte della creazione di una pipeline nella console, per gli artefatti verrà utilizzato un bucket di artefatti S3. CodePipeline (Questo è diverso dal bucket utilizzato per un'azione sorgente S3.) Se il bucket di artefatti S3 si trova in un account diverso da quello della pipeline, assicurati che il bucket di artefatti S3 sia di proprietà di utenti sicuri e affidabili. Account AWS 

**Nota**  
Questa azione utilizza l'elaborazione gestita per eseguire comandi in un ambiente di CodePipeline compilazione. CodeBuild 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.

## Prerequisiti
<a name="tutorials-eks-deploy-prereqs"></a>

Per utilizzare questo tutorial per creare la pipeline di distribuzione continua, è necessario disporre di alcune risorse. Ecco di cosa hai bisogno prima di iniziare:

**Nota**  
Tutte queste risorse devono essere create all'interno della stessa regione. AWS 
+ Un repository per il controllo del codice sorgente (utilizzato in questo tutorial GitHub) in cui aggiungere un `deployment.yaml` file di esempio.
+ È necessario utilizzare un ruolo di CodePipeline servizio esistente che aggiornerai con le autorizzazioni per questa azione utilizzando [Fase 3: Aggiornare la politica del ruolo di servizio in IAM CodePipeline](#tutorials-eks-deploy-role) di seguito le autorizzazioni per questa azione. Le autorizzazioni necessarie dipendono dal tipo di cluster creato. Per ulteriori informazioni, consulta [Autorizzazioni relative alla politica del ruolo di servizio](action-reference-EKS.md#action-reference-EKS-service-role).
+ Un'immagine funzionante e un tag del repository che hai inviato a ECR o al tuo archivio di immagini.

Dopo aver soddisfatto questi prerequisiti, puoi procedere con il tutorial e creare la pipeline di distribuzione continua.

## Fase 1: (Facoltativo) Creare un cluster in Amazon EKS
<a name="tutorials-eks-deploy-cluster"></a>

Puoi scegliere di creare un cluster EKS con un endpoint pubblico o privato. 

Nei passaggi seguenti, crei un cluster pubblico o privato in EKS. Questo passaggio è facoltativo se il cluster è già stato creato.

### Crea un cluster pubblico in Amazon EKS
<a name="tutorials-eks-deploy-cluster-public"></a>

In questo passaggio, crei un cluster in EKS.

**Crea un cluster pubblico**

1. Apri la console EKS, quindi scegli **Crea cluster**.

1. In **Nome, assegna** un nome al cluster. Scegli **Next (Successivo)**.

1. Scegli **Create** (Crea).

### Crea un cluster privato in Amazon EKS
<a name="tutorials-eks-deploy-cluster-private"></a>

Se scegli di creare un cluster con un endpoint privato, assicurati di collegare solo le sottoreti private e assicurati che abbiano una connessione Internet.

Segui i prossimi cinque passaggi secondari per creare un cluster con un endpoint privato.

**Crea un VPC nella console**

1. Apri la console VPC, quindi scegli Crea **VPC**.

1. In **Impostazioni VPC**, scegli **VPC e altro**.

1. Scegli di creare una sottorete pubblica e 4 sottoreti private. Seleziona **Crea VPC**.

1. **Nella pagina delle sottoreti, scegli Privato.** 

**Determina le sottoreti private nel tuo VPC**

1. Accedi al tuo VPC e scegli l'ID VPC per aprire la pagina dei dettagli del VPC.

1. Nella pagina dei dettagli del VPC, scegli la scheda **Mappa delle risorse**.

1. Visualizza il diagramma e prendi nota delle tue sottoreti private. Le sottoreti vengono visualizzate con etichette per indicare lo stato pubblico o privato e ogni sottorete è mappata su una tabella di routing.  
![\[\]](http://docs.aws.amazon.com/it_it/codepipeline/latest/userguide/images/eks-deploy-subnets.png)

   Tieni presente che un cluster privato avrà tutte le sottoreti private.

1. Crea una sottorete pubblica per ospitare il gateway NAT. È possibile allegare un solo gateway Internet a un VPC alla volta.

**Crea un gateway NAT nella sottorete pubblica**

1. Nella sottorete pubblica, create un gateway NAT. Vai alla console VPC, quindi scegli Gateway **Internet**. Scegliere **Crea gateway Internet**.

1. In Nome, inserisci un nome per il tuo gateway Internet. Scegliere **Crea gateway Internet**.

Aggiorna la tabella di routing per la sottorete privata per indirizzare il traffico verso il gateway NAT.

**Aggiungi il gateway NAT alle tabelle di routing per le sottoreti private**

1. **Vai alla console VPC, quindi scegli Subnet.**

1. **Per ogni sottorete privata, selezionala, quindi scegli la tabella di routing per quella sottorete nella pagina dei dettagli, scegli Modifica tabella di routing.** 

1. Aggiorna la tabella di routing per la sottorete privata per indirizzare il traffico Internet verso il gateway NAT. Seleziona **Aggiungi route**. Scegli il **gateway NAT** tra le opzioni da aggiungere. Scegli il gateway Internet che hai creato.

1. Per la sottorete pubblica, crea una tabella di routing personalizzata. Verifica che la lista di controllo degli accessi alla rete (ACL) per la sottorete pubblica consenta il traffico in entrata dalla sottorete privata.

1. Scegli **Save changes** (Salva modifiche).

In questo passaggio, crei un cluster in EKS.

**Crea un cluster privato**

1. Apri la console EKS, quindi scegli **Crea cluster**.

1. In **Nome, assegna** un nome al cluster. Scegli **Next (Successivo)**.

1. Specificate il VPC e altre informazioni di configurazione. Scegli **Create** (Crea).

Il tuo cluster EKS può essere un cluster pubblico o privato. Questo passaggio è per i cluster che hanno SOLO un endpoint privato. Assicurati che il tuo cluster sia privato.

## Fase 2: configura il tuo cluster privato in Amazon EKS
<a name="tutorials-eks-deploy-cluster-private-configure"></a>

Questo passaggio è applicabile solo se hai creato un cluster privato. Questo passaggio è per i cluster che hanno SOLO un endpoint privato. 

**Configura il tuo cluster**

1. Collega le sottoreti private solo nel cluster EKS nella scheda **Rete**. Collega le sottoreti private acquisite nella sezione **Determina le sottoreti private nel tuo VPC** sotto. [Fase 1: (Facoltativo) Creare un cluster in Amazon EKS](#tutorials-eks-deploy-cluster)

1. Assicurati che le sottoreti private abbiano accesso a Internet poiché CodePipeline archivia e recupera gli artefatti dal bucket di artefatti S3 per la tua pipeline.

## Fase 3: Aggiornare la politica del ruolo di servizio in IAM CodePipeline
<a name="tutorials-eks-deploy-role"></a>

In questo passaggio, aggiornerai un ruolo di CodePipeline servizio esistente`cp-service-role`, ad esempio con le autorizzazioni richieste per connetterti CodePipeline al tuo cluster. Se non disponi di un ruolo esistente, creane uno nuovo.

Aggiorna il tuo ruolo di CodePipeline servizio con i seguenti passaggi.

**Per aggiornare la politica CodePipeline del ruolo di servizio**

1. Apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)).

1. Dal pannello di controllo della console, scegli **Roles (Ruoli)**.

1. Cerca il tuo ruolo CodePipeline di servizio, ad esempio`cp-service-role`.

1. Aggiungi una nuova politica in linea.

1. Nell'**editor delle politiche**, inserisci quanto segue.
   + Per un cluster pubblico, aggiungi le seguenti autorizzazioni.

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

------
   + Per un cluster privato, aggiungi le seguenti autorizzazioni. I cluster privati richiederanno autorizzazioni aggiuntive per il tuo VPC, se applicabile.

------
#### [ 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"
                         ]
                     }
                 }
             }
         ]
     }
     ```

------

1. Scegli **Aggiorna policy**.

## Fase 4: Creare una voce di accesso per il ruolo di servizio CodePipeline
<a name="tutorials-eks-deploy-access-entry"></a>

In questo passaggio, si crea una voce di accesso nel cluster che aggiungerà il ruolo di CodePipeline servizio aggiornato nel passaggio 3, insieme a una politica di accesso gestito.

1. Apri la console EKS e accedi al tuo cluster.

1. Scegliere la scheda **Accesso**.

1. In **Voci di accesso IAM**, scegli **Crea voce di accesso**.

1. Nell'**ARN principale IAM**, inserisci il ruolo che hai appena aggiornato per l'azione, ad esempio. `cp-service-role` Scegli **Next (Successivo)**.

1. Nella pagina **Step 2: Aggiungi policy di accesso**, in **Nome policy**, scegli la policy gestita per l'accesso, ad `AmazonEKSClusterAdminPolicy` esempio. Scegli **Aggiungi policy**. Scegli **Next (Successivo)**.
**Nota**  
Questa è la politica utilizzata dall' CodePipeline azione per comunicare con Kubernetes. Come procedura consigliata, per definire le autorizzazioni della policy con il minimo privilegio rispetto alla politica amministrativa, allega invece di una policy personalizzata.

1. **Nella pagina di revisione, scegli Crea.**

## Passo 5: Crea un archivio di sorgenti e aggiungi i file di `helm chart` configurazione
<a name="tutorials-eks-deploy-source"></a>

In questo passaggio, crei un file di configurazione appropriato per la tua azione (file manifest di Kubernetes o grafico Helm) e lo memorizzi nel tuo repository di origine. Usa il file appropriato per la tua configurazione. Per ulteriori informazioni, consulta [https://kubernetes. ](https://kubernetes.io/docs/reference/kubectl/quick-reference/)io/docs/reference/kubectl/quick[-reference/ o https://helm. sh/docs/topics/charts](https://helm.sh/docs/topics/charts/)/.
+ Per Kubernetes, usa un file manifest.
+ Per Helm, usa un grafico Helm.

1. Crea o usa un repository esistente GitHub .

1. Crea una nuova struttura nel tuo repository per i file del grafico Helm, come mostrato nell'esempio seguente.

   ```
   mychart
   |-- Chart.yaml
   |-- charts
   |-- templates
   |   |-- NOTES.txt
   |   |-- _helpers.tpl
   |   |-- deployment.yaml
   |   |-- ingress.yaml
   |   `-- service.yaml
   `-- values.yaml
   ```

1. Aggiungi il file al livello principale del tuo repository.

## Fase 6: Creazione della pipeline
<a name="tutorials-eks-deploy-pipeline"></a>

Usa la CodePipeline procedura guidata per creare le fasi della pipeline e connettere il tuo repository di origine.

**Creazione della pipeline**

1. Apri la console all' CodePipeline indirizzo. [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/)

1. Nella pagina **Welcome (Benvenuto)**, pagina **Getting started (Nozioni di base)** o pagina **Pipelines (Pipeline)**, scegliere **Create pipeline (Crea pipeline)**.

1. Nella pagina **Passaggio 1: Scegli l'opzione di creazione**, in **Opzioni di creazione**, scegli l'opzione **Crea pipeline personalizzata**. Scegli **Next (Successivo)**.

1. Nel **Passaggio 2: Scegliete le impostazioni della pipeline**, in **Nome della tubazione**, immettete. **MyEKSPipeline**

1. CodePipeline fornisce condotte di tipo V1 e V2, che differiscono per caratteristiche e prezzo. Il tipo V2 è l'unico tipo che puoi scegliere nella console. Per ulteriori informazioni, consulta i tipi di [pipeline.](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipeline-types-planning.html?icmpid=docs_acp_help_panel) Per informazioni sui prezzi di CodePipeline, consulta la sezione [Prezzi](https://aws.amazon.com/codepipeline/pricing/).

1. In **Ruolo di servizio**, scegli il ruolo di servizio che hai aggiornato nella Fase 3.

1. Lasciare i valori predefiniti delle impostazioni in **Advanced settings (Impostazioni avanzate)**, quindi scegliere **Next (Successivo)**.

1. **Nella pagina Passaggio 3: Aggiungi fase di origine**, per **Provider di origine**, scegli **di creare una connessione al tuo GitHub repository**.

1. Nel **Passaggio 4: Aggiungi la pagina della fase di compilazione**, scegli **Salta**.

1. Nella pagina **Fase 5: Aggiungere la fase di distribuzione**, scegli **Amazon EKS**.  
![\[Deploy configuration form with Helm selected, showing fields for release name and chart location.\]](http://docs.aws.amazon.com/it_it/codepipeline/latest/userguide/images/eks-action-example.png)

   1. **In **Tipo di configurazione Deploy**, scegli Helm.**

   1. In **Helm chart location**, inserisci il nome della release, ad esempio. `my-release` Per **Helm chart location**, inserisci il percorso per i file della mappa di Helm, ad esempio. `mychart`

   1. Scegli **Next (Successivo)**.

1. Nella pagina **Step 6: Review** (Fase 6: esamina), esamina la configurazione della pipeline, quindi seleziona **Create pipeline** (Crea pipeline) per creare la pipeline.  
![\[\]](http://docs.aws.amazon.com/it_it/codepipeline/latest/userguide/images/eks-deploy-pipeline.png)

1. Dopo che la pipeline è stata eseguita correttamente, scegli **Visualizza dettagli per visualizzare i** registri dell'azione e visualizzare l'output dell'azione.