

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

# Distribuisci risorse e pacchetti Kubernetes utilizzando Amazon EKS e un repository di grafici Helm in Amazon S3
<a name="deploy-kubernetes-resources-and-packages-using-amazon-eks-and-a-helm-chart-repository-in-amazon-s3"></a>

*Sagar Panigrahi, Amazon Web Services*

## Riepilogo
<a name="deploy-kubernetes-resources-and-packages-using-amazon-eks-and-a-helm-chart-repository-in-amazon-s3-summary"></a>

Questo modello ti aiuta a gestire le applicazioni Kubernetes in modo efficiente, indipendentemente dalla loro complessità. Il modello integra Helm nelle pipeline esistenti di integrazione continua e distribuzione continua (CI/CD) per distribuire le applicazioni in un cluster Kubernetes. Helm è un gestore di pacchetti Kubernetes che ti aiuta a gestire le applicazioni Kubernetes. I grafici Helm aiutano a definire, installare e aggiornare applicazioni Kubernetes complesse. I grafici possono essere modificati in versioni e archiviati negli archivi Helm, il che migliora il tempo medio di ripristino (MTTR) durante le interruzioni. 

Questo modello utilizza Amazon Elastic Kubernetes Service (Amazon EKS) per il cluster Kubernetes. Utilizza Amazon Simple Storage Service (Amazon S3) come repository di grafici Helm, in modo che i grafici possano essere gestiti centralmente e accessibili dagli sviluppatori di tutta l'organizzazione.

## Prerequisiti e limitazioni
<a name="deploy-kubernetes-resources-and-packages-using-amazon-eks-and-a-helm-chart-repository-in-amazon-s3-prereqs"></a>

**Prerequisiti**
+ Un account Amazon Web Services (AWS) attivo con un cloud privato virtuale (VPC)
+ Cluster Amazon EKS 
+ Nodi di lavoro configurati all'interno del cluster Amazon EKS e pronti a gestire carichi di lavoro
+ Kubectl per configurare il file Amazon EKS kubeconfig per il cluster di destinazione nel computer client
+ Accesso ad AWS Identity and Access Management (IAM) per creare il bucket S3
+ Accesso IAM (programmatico o di ruolo) ad Amazon S3 dal computer client
+ Gestione del codice sorgente e pipeline CI/CD 

**Limitazioni**
+ Al momento non è disponibile alcun supporto per l'aggiornamento, l'eliminazione o la gestione delle definizioni di risorse personalizzate (). CRDs
+ Se si utilizza una risorsa che fa riferimento a un CRD, il CRD deve essere installato separatamente (al di fuori del grafico).

**Versioni del prodotto**
+ Helm v3.6.3

## Architecture
<a name="deploy-kubernetes-resources-and-packages-using-amazon-eks-and-a-helm-chart-repository-in-amazon-s3-architecture"></a>

**Stack tecnologico Target**
+ Amazon EKS
+ Amazon VPC
+ Simple Storage Service (Amazon S3)
+ Gestione del codice sorgente
+ Helm
+ Kubectl

**Architettura di destinazione**

![\[Client Helm e Kubectl distribuiscono un repository di grafici Helm in Amazon S3 per cluster Amazon EKS.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/d3f993e6-4d96-4cb9-a075-c4debe431fd7/images/2f09f7bb-440a-4c4b-b29f-08d136d1ada4.png)


 

**Automazione e scalabilità**
+ AWS CloudFormation può essere utilizzato per automatizzare la creazione dell'infrastruttura. Per ulteriori informazioni, consulta [Creazione di risorse Amazon EKS con AWS CloudFormation](https://docs.aws.amazon.com/eks/latest/userguide/creating-resources-with-cloudformation.html) nella documentazione di Amazon EKS.
+ Helm deve essere incorporato nel tuo strumento di CI/CD automazione esistente per automatizzare il packaging e il controllo delle versioni dei grafici Helm (al di fuori dell'ambito di questo schema).
+ GitVersion oppure è possibile utilizzare i numeri di build Jenkins per automatizzare il controllo delle versioni dei grafici.

## Tools (Strumenti)
<a name="deploy-kubernetes-resources-and-packages-using-amazon-eks-and-a-helm-chart-repository-in-amazon-s3-tools"></a>

**Strumenti**
+ [Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) — Amazon Elastic Kubernetes Service (Amazon EKS) è un servizio gestito per eseguire Kubernetes su AWS senza dover installare o mantenere il proprio piano di controllo Kubernetes. Kubernetes è un sistema open source per automatizzare l'implementazione, il dimensionamento e la gestione di applicazioni containerizzate.
+ [Helm — Helm](https://helm.sh/docs/) è un gestore di pacchetti per Kubernetes che ti aiuta a installare e gestire applicazioni sul tuo cluster Kubernetes.
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/gsg/GetStartedWithS3.html) — Amazon Simple Storage Service (Amazon S3) è uno storage per Internet. È possibile utilizzare Amazon S3 per memorizzare e recuperare qualsiasi volume di dati, in qualunque momento e da qualunque luogo tramite il Web.
+ [Kubectl — Kubectl](https://kubernetes.io/docs/reference/kubectl/overview/) è un'utilità da riga di comando per l'esecuzione di comandi su cluster Kubernetes.

**Codice**

Il codice di esempio è allegato.

## Epiche
<a name="deploy-kubernetes-resources-and-packages-using-amazon-eks-and-a-helm-chart-repository-in-amazon-s3-epics"></a>

### Configura e inizializza Helm
<a name="configure-and-initialize-helm"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Installa il client Helm. | Per scaricare e installare il client Helm sul sistema locale, utilizzare il seguente comando. <pre>sudo curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash</pre> | DevOps ingegnere | 
| Convalida l'installazione di Helm. | Per verificare che Helm sia in grado di comunicare con il server API Kubernetes all'interno del cluster Amazon EKS, esegui. `helm version` | DevOps ingegnere | 

### Crea e installa un grafico Helm nel cluster Amazon EKS
<a name="create-and-install-a-helm-chart-in-the-amazon-eks-cluster"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea un grafico Helm per NGINX. | Per creare un diagramma Helm denominato `my-nginx` sul computer client, esegui. `helm create my-nginx` | DevOps ingegnere | 
| Esamina la struttura del grafico. | Per rivedere la struttura del grafico, esegui il comando tree`tree my-nginx/`. | DevOps ingegnere | 
| Disattiva la creazione dell'account di servizio nel grafico. | Nella `serviceAccount` sezione`values.yaml`, imposta la `create` chiave su. `false` Questa opzione è disattivata perché non è necessario creare un account di servizio per questo pattern. | DevOps ingegnere | 
| Convalida (lint) il grafico modificato per eventuali errori sintattici. | Per convalidare il grafico per eventuali errori sintattici prima di installarlo nel cluster di destinazione, esegui. `helm lint my-nginx/` | DevOps ingegnere | 
| Installa il grafico per distribuire le risorse Kubernetes. | Per eseguire l'installazione di Helm chart, usa il comando seguente. <pre>helm install --name my-nginx-release --debug my-nginx/ --namespace helm-space </pre>Il `debug` flag opzionale emette tutti i messaggi di debug durante l'installazione. Il `namespace` flag specifica lo spazio dei nomi in cui verranno create le risorse che fanno parte di questo grafico. | DevOps ingegnere | 
| Esamina le risorse nel cluster Amazon EKS. | Per esaminare le risorse che sono state create come parte del grafico Helm nel `helm-space` namespace, usa il comando seguente. <pre>kubectl get all -n helm-space</pre> | DevOps ingegnere | 

### Torna a una versione precedente di un'applicazione Kubernetes
<a name="roll-back-to-a-previous-version-of-a-kubernetes-application"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Modifica e aggiorna la versione. | Per modificare il grafico, in`values.yaml`, modifica il `replicaCount` valore in`2`. Quindi aggiorna la versione già installata eseguendo il comando seguente.<pre>helm upgrade my-nginx-release my-nginx/ --namespace helm-space</pre> | DevOps ingegnere | 
| Consulta la cronologia della versione di Helm. | Per elencare tutte le revisioni di una versione specifica che sono state installate utilizzando Helm, esegui il comando seguente. <pre>helm history my-nginx-release</pre> | DevOps ingegnere | 
| Esamina i dettagli per una revisione specifica. | Prima di passare o ripristinare una versione funzionante e per un ulteriore livello di convalida prima di installare una revisione, visualizza quali valori sono stati passati a ciascuna delle revisioni utilizzando il comando seguente.<pre>helm get --revision=2 my-nginx-release</pre> | DevOps ingegnere | 
| Torna a una versione precedente. | Per tornare a una revisione precedente, usa il seguente comando. <pre>helm rollback my-nginx-release 1 </pre>In questo esempio viene eseguito il rollback alla revisione numero 1. | DevOps ingegnere | 

### Inizializza un bucket S3 come repository Helm
<a name="initialize-an-s3-bucket-as-a-helm-repository"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea un bucket S3 per i grafici Helm. | Crea un bucket S3 unico. Nel bucket, crea una cartella chiamata. `charts` L'esempio di questo modello utilizza `s3://my-helm-charts/charts` come archivio grafico di destinazione. | Amministratore cloud | 
| Installa il plug-in Helm per Amazon S3. | Per installare il plugin helm-s3 sul tuo computer client, usa il seguente comando. <pre>helm plugin install https://github.com/hypnoglow/helm-s3.git --version 0.10.0</pre>Nota: il supporto per Helm V3 è disponibile con la versione del plugin 0.9.0 e successive. | DevOps ingegnere | 
| Inizializza il repository Amazon S3 Helm.  | Per inizializzare la cartella di destinazione come repository Helm, usa il seguente comando. <pre>helm S3 init s3://my-helm-charts/charts </pre>Il comando crea un `index.yaml` file nella destinazione per tenere traccia di tutte le informazioni del grafico archiviate in quella posizione. | DevOps ingegnere | 
| Aggiungi il repository Amazon S3 a Helm. | Per aggiungere il repository nel computer client, usa il seguente comando.<pre>helm repo add my-helm-charts s3://my-helm-charts/charts </pre>Questo comando aggiunge un alias al repository di destinazione nel computer client Helm. | DevOps ingegnere | 
| Controlla l'elenco dei repository. | Per visualizzare l'elenco dei repository nel computer client Helm, esegui. `helm repo list` | DevOps ingegnere | 

### Package e memorizza i grafici nel repository Amazon S3 Helm
<a name="package-and-store-charts-in-the-amazon-s3-helm-repository"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Creazione pacchetto del grafico. | Per impacchettare il `my-nginx` grafico che hai creato, esegui`helm package ./my-nginx/`. Il comando racchiude tutto il contenuto della cartella del `my-nginx` grafico in un file di archivio, denominato utilizzando il numero di versione indicato nel `Chart.yaml` file. | DevOps ingegnere | 
| Archivia il pacchetto nel repository Amazon S3 Helm. | Per caricare il pacchetto nel repository Helm in Amazon S3, esegui il comando seguente, utilizzando il nome corretto del file. `.tgz`<pre>helm s3 push ./my-nginx-0.1.0.tgz my-helm-charts</pre> | DevOps ingegnere | 
| Cerca la carta Helm. | Per confermare che il grafico sia visualizzato sia localmente che nel repository Helm in Amazon S3, esegui il comando seguente.<pre>helm search repo my-nginx</pre> | DevOps ingegnere | 

### Modifica, versione e impacchetta un grafico
<a name="modify-version-and-package-a-chart"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Modifica e impacchetta il grafico. | In`values.yaml`, imposta il `replicaCount` valore su`1`. Quindi impacchetta il grafico eseguendolo`helm package ./my-nginx/`, questa volta cambiando la versione `Chart.yaml` in`0.1.1`. Il controllo delle versioni viene idealmente aggiornato tramite l'automazione utilizzando strumenti come Jenkins GitVersion o Jenkins build Numbers in una CI/CD pipeline. L'automazione del numero di versione non rientra nell'ambito di questo schema. | DevOps ingegnere | 
| Invia la nuova versione al repository Helm in Amazon S3. | Per inviare il nuovo pacchetto con la versione 0.1.1 al repository `my-helm-charts` Helm in Amazon S3, esegui il comando seguente.<pre>helm s3 push ./my-nginx-0.1.1.tgz my-helm-charts</pre> | DevOps ingegnere | 

### Cerca e installa un grafico dal repository Amazon S3 Helm
<a name="search-for-and-install-a-chart-from-the-amazon-s3-helm-repository"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Cerca tutte le versioni del grafico my-nginx. | Per visualizzare tutte le versioni disponibili di un grafico, esegui il seguente comando con il flag. `--versions`<pre>helm search repo my-nginx --versions</pre>Senza il flag, per impostazione predefinita Helm visualizza l'ultima versione caricata di un grafico. | DevOps ingegnere | 
| Installa un grafico dal repository Amazon S3 Helm. | I risultati della ricerca dell'attività precedente mostrano le diverse versioni del grafico. `my-nginx` Per installare la nuova versione (0.1.1) dal repository Amazon S3 Helm, usa il seguente comando.<pre>helm upgrade my-nginx-release my-helm-charts/my-nginx --version 0.1.1 --namespace helm-space</pre> | DevOps ingegnere | 

## Risorse correlate
<a name="deploy-kubernetes-resources-and-packages-using-amazon-eks-and-a-helm-chart-repository-in-amazon-s3-resources"></a>
+ [documentazione HELM](https://helm.sh/docs/)
+ [plugin helm-s3 (licenza MIT)](https://github.com/hypnoglow/helm-s3.git)
+ [File binario del client HELM](https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3)
+ [Documentazione Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html)

## Allegati
<a name="attachments-d3f993e6-4d96-4cb9-a075-c4debe431fd7"></a>

[Per accedere a contenuti aggiuntivi associati a questo documento, decomprimi il seguente file: attachment.zip](samples/p-attach/d3f993e6-4d96-4cb9-a075-c4debe431fd7/attachments/attachment.zip)