

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Déployez des ressources et des packages Kubernetes à l'aide d'Amazon EKS et d'un référentiel de diagrammes Helm dans 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*

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

Ce modèle vous permet de gérer efficacement les applications Kubernetes, quelle que soit leur complexité. Le modèle intègre Helm à vos pipelines d'intégration continue et de livraison continue (CI/CD) existants pour déployer des applications dans un cluster Kubernetes. Helm est un gestionnaire de packages Kubernetes qui vous aide à gérer les applications Kubernetes. Les diagrammes Helm permettent de définir, d'installer et de mettre à niveau des applications Kubernetes complexes. Les graphiques peuvent être versionnés et stockés dans les référentiels Helm, ce qui améliore le temps moyen de restauration (MTTR) en cas de panne. 

Ce modèle utilise Amazon Elastic Kubernetes Service (Amazon EKS) pour le cluster Kubernetes. Il utilise Amazon Simple Storage Service (Amazon S3) comme référentiel de diagrammes Helm, afin que les graphiques puissent être gérés de manière centralisée et accessibles aux développeurs de l'entreprise.

## Conditions préalables et limitations
<a name="deploy-kubernetes-resources-and-packages-using-amazon-eks-and-a-helm-chart-repository-in-amazon-s3-prereqs"></a>

**Conditions préalables**
+ Un compte Amazon Web Services (AWS) actif avec un cloud privé virtuel (VPC)
+ Un cluster Amazon EKS 
+ Nœuds de travail configurés au sein du cluster Amazon EKS et prêts à prendre en charge des charges de travail
+ Kubectl pour configurer le fichier kubeconfig d'Amazon EKS pour le cluster cible sur la machine cliente
+ Accès à AWS Identity and Access Management (IAM) pour créer le compartiment S3
+ Accès IAM (par programmation ou par rôle) à Amazon S3 depuis la machine cliente
+ Gestion du code source et CI/CD pipeline

**Limites**
+ Il n'existe actuellement aucun support pour la mise à niveau, la suppression ou la gestion des définitions de ressources personnalisées (CRDs).
+ Si vous utilisez une ressource qui fait référence à un CRD, le CRD doit être installé séparément (en dehors du graphique).

**Versions du produit**
+ Casque v3.6.3

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

**Pile technologique cible**
+ Amazon EKS
+ Amazon VPC
+ Amazon S3
+ Gestion du code source
+ Helm
+ Kubectl

**Architecture cible**

![\[Client Helm et Kubectl déploient un dépôt de diagrammes Helm dans Amazon S3 pour les clusters Amazon EKS.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/d3f993e6-4d96-4cb9-a075-c4debe431fd7/images/2f09f7bb-440a-4c4b-b29f-08d136d1ada4.png)


 

**Automatisation et mise à l'échelle**
+ AWS CloudFormation peut être utilisé pour automatiser la création de l'infrastructure. Pour plus d'informations, consultez la section [Création de ressources Amazon EKS avec AWS CloudFormation](https://docs.aws.amazon.com/eks/latest/userguide/creating-resources-with-cloudformation.html) dans la documentation Amazon EKS.
+ Helm doit être intégré à votre outil CI/CD d'automatisation existant pour automatiser l'empaquetage et la gestion des versions des diagrammes Helm (hors de portée de ce modèle).
+ GitVersion ou les numéros de version de Jenkins peuvent être utilisés pour automatiser le versionnement des graphiques.

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

**Outils**
+ [Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) — Amazon Elastic Kubernetes Service (Amazon EKS) est un service géré permettant d'exécuter Kubernetes sur AWS sans avoir à configurer ou à gérer votre propre plan de contrôle Kubernetes. Kubernetes est un système open source destiné à l'automatisation du déploiement, la mise à l'échelle et la gestion d'applications conteneurisées.
+ [Helm](https://helm.sh/docs/) — Helm est un gestionnaire de packages pour Kubernetes qui vous aide à installer et à gérer des applications sur votre cluster Kubernetes.
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/gsg/GetStartedWithS3.html) — Amazon Simple Storage Service (Amazon S3) est un service de stockage pour Internet. Vous pouvez utiliser Amazon S3 pour stocker et récupérer n'importe quelle quantité de données, n'importe quand et depuis n'importe quel emplacement sur le Web.
+ [Kubectl — Kubectl](https://kubernetes.io/docs/reference/kubectl/overview/) est un utilitaire de ligne de commande permettant d'exécuter des commandes sur des clusters Kubernetes.

**Code**

L'exemple de code est joint en pièce jointe.

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

### Configuration et initialisation de Helm
<a name="configure-and-initialize-helm"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Installez le client Helm. | Pour télécharger et installer le client Helm sur votre système local, utilisez la commande suivante. <pre>sudo curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash</pre> | DevOps ingénieur | 
| Validez l'installation de Helm. | Pour vérifier que Helm est capable de communiquer avec le serveur d'API Kubernetes au sein du cluster Amazon EKS, exécutez. `helm version` | DevOps ingénieur | 

### Création et installation d'un graphique Helm dans le cluster Amazon EKS
<a name="create-and-install-a-helm-chart-in-the-amazon-eks-cluster"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un graphique Helm pour NGINX. | Pour créer un graphique de barre nommé `my-nginx` sur la machine cliente, exécutez`helm create my-nginx`. | DevOps ingénieur | 
| Passez en revue la structure du graphique. | Pour revoir la structure du graphique, exécutez la commande d'arborescence`tree my-nginx/`. | DevOps ingénieur | 
| Désactivez la création de comptes de service dans le graphique. | Dans`values.yaml`, sous la `serviceAccount` section, réglez la `create` clé sur`false`. Cette option est désactivée car il n'est pas nécessaire de créer un compte de service pour ce modèle. | DevOps ingénieur | 
| Validez (lint) le graphique modifié pour détecter les erreurs syntaxiques. | Pour valider le graphique afin de détecter toute erreur syntaxique avant de l'installer dans le cluster cible, exécutez`helm lint my-nginx/`. | DevOps ingénieur | 
| Installez le graphique pour déployer les ressources Kubernetes. | Pour exécuter l'installation du graphique Helm, utilisez la commande suivante. <pre>helm install --name my-nginx-release --debug my-nginx/ --namespace helm-space </pre>L'`debug`indicateur facultatif affiche tous les messages de débogage pendant l'installation. L'`namespace`indicateur indique l'espace de noms dans lequel la partie ressources de ce graphique sera créée. | DevOps ingénieur | 
| Passez en revue les ressources du cluster Amazon EKS. | Pour consulter les ressources créées dans le cadre du graphique Helm dans l'espace de `helm-space` noms, utilisez la commande suivante. <pre>kubectl get all -n helm-space</pre> | DevOps ingénieur | 

### Revenir à une version précédente d'une application Kubernetes
<a name="roll-back-to-a-previous-version-of-a-kubernetes-application"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Modifiez et mettez à niveau la version. | Pour modifier le graphique, dans`values.yaml`, remplacez la `replicaCount` valeur par`2`. Mettez ensuite à niveau la version déjà installée en exécutant la commande suivante.<pre>helm upgrade my-nginx-release my-nginx/ --namespace helm-space</pre> | DevOps ingénieur | 
| Consultez l'historique de la version de Helm. | Pour répertorier toutes les révisions d'une version spécifique qui ont été installées à l'aide de Helm, exécutez la commande suivante. <pre>helm history my-nginx-release</pre> | DevOps ingénieur | 
| Passez en revue les détails d'une révision spécifique. | Avant de passer à une version fonctionnelle ou de revenir à une version fonctionnelle, et pour une couche de validation supplémentaire avant d'installer une révision, visualisez les valeurs transmises à chacune des révisions à l'aide de la commande suivante.<pre>helm get --revision=2 my-nginx-release</pre> | DevOps ingénieur | 
| Retournez à une version précédente. | Pour revenir à une révision précédente, utilisez la commande suivante. <pre>helm rollback my-nginx-release 1 </pre>Cet exemple revient à la révision numéro 1. | DevOps ingénieur | 

### Initialisation d'un compartiment S3 en tant que référentiel Helm
<a name="initialize-an-s3-bucket-as-a-helm-repository"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un compartiment S3 pour les diagrammes Helm. | Créez un compartiment S3 unique. Dans le compartiment, créez un dossier appelé`charts`. L'exemple de ce modèle utilise `s3://my-helm-charts/charts` comme référentiel graphique cible. | Administrateur du cloud | 
| Installez le plugin Helm pour Amazon S3. | Pour installer le plugin helm-s3 sur votre machine cliente, utilisez la commande suivante. <pre>helm plugin install https://github.com/hypnoglow/helm-s3.git --version 0.10.0</pre>Remarque : le support de Helm V3 est disponible avec la version 0.9.0 et supérieure du plugin. | DevOps ingénieur | 
| Initialisez le référentiel Amazon S3 Helm.  | Pour initialiser le dossier cible en tant que référentiel Helm, utilisez la commande suivante. <pre>helm S3 init s3://my-helm-charts/charts </pre>La commande crée un `index.yaml` fichier dans la cible pour suivre toutes les informations du graphique stockées à cet emplacement. | DevOps ingénieur | 
| Ajoutez le référentiel Amazon S3 à Helm. | Pour ajouter le référentiel sur la machine cliente, utilisez la commande suivante.<pre>helm repo add my-helm-charts s3://my-helm-charts/charts </pre>Cette commande ajoute un alias au référentiel cible sur la machine cliente Helm. | DevOps ingénieur | 
| Consultez la liste des référentiels. | Pour afficher la liste des référentiels de la machine cliente Helm, exécutez`helm repo list`. | DevOps ingénieur | 

### Package et stockage des graphiques dans le référentiel Amazon S3 Helm
<a name="package-and-store-charts-in-the-amazon-s3-helm-repository"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Empaquetez le graphique. | Pour `my-nginx` empaqueter le graphique que vous avez créé, exécutez`helm package ./my-nginx/`. La commande regroupe tout le contenu du dossier `my-nginx` graphique dans un fichier d'archive, dont le nom est basé sur le numéro de version indiqué dans le `Chart.yaml` fichier. | DevOps ingénieur | 
| Stockez le package dans le référentiel Amazon S3 Helm. | Pour télécharger le package dans le référentiel Helm d'Amazon S3, exécutez la commande suivante en utilisant le nom correct du `.tgz` fichier.<pre>helm s3 push ./my-nginx-0.1.0.tgz my-helm-charts</pre> | DevOps ingénieur | 
| Recherchez le graphique Helm. | Pour vérifier que le graphique apparaît à la fois localement et dans le référentiel Helm d'Amazon S3, exécutez la commande suivante.<pre>helm search repo my-nginx</pre> | DevOps ingénieur | 

### Modifier, versionner et empaqueter un graphique
<a name="modify-version-and-package-a-chart"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Modifiez et empaquetez le graphique. | Dans`values.yaml`, définissez la `replicaCount` valeur sur`1`. Ensuite, empaquetez le graphique en l'exécutant`helm package ./my-nginx/`, en changeant cette fois la version `Chart.yaml` en`0.1.1`. Le versionnement est idéalement mis à jour par le biais de l'automatisation à l'aide d'outils tels que GitVersion les numéros de build de Jenkins dans un CI/CD pipeline. L'automatisation du numéro de version n'est pas couverte par ce modèle. | DevOps ingénieur | 
| Transférez la nouvelle version vers le référentiel Helm d'Amazon S3. | Pour transférer le nouveau package avec la version 0.1.1 vers le référentiel `my-helm-charts` Helm d'Amazon S3, exécutez la commande suivante.<pre>helm s3 push ./my-nginx-0.1.1.tgz my-helm-charts</pre> | DevOps ingénieur | 

### Recherchez et installez un graphique depuis le référentiel Amazon S3 Helm
<a name="search-for-and-install-a-chart-from-the-amazon-s3-helm-repository"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Recherchez toutes les versions du graphique my-nginx. | Pour afficher toutes les versions disponibles d'un graphique, exécutez la commande suivante avec l'`--versions`indicateur.<pre>helm search repo my-nginx --versions</pre>Sans le drapeau, Helm affiche par défaut la dernière version téléchargée d'un graphique. | DevOps ingénieur | 
| Installez un graphique depuis le référentiel Amazon S3 Helm. | Les résultats de la recherche de la tâche précédente montrent les différentes versions du `my-nginx` graphique. Pour installer la nouvelle version (0.1.1) depuis le référentiel Amazon S3 Helm, utilisez la commande suivante.<pre>helm upgrade my-nginx-release my-helm-charts/my-nginx --version 0.1.1 --namespace helm-space</pre> | DevOps ingénieur | 

## Ressources connexes
<a name="deploy-kubernetes-resources-and-packages-using-amazon-eks-and-a-helm-chart-repository-in-amazon-s3-resources"></a>
+ [Documentation HELM](https://helm.sh/docs/)
+ [plugin helm-s3 (licence MIT)](https://github.com/hypnoglow/helm-s3.git)
+ [Binaire du client HELM](https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3)
+ [Documentation Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html)

## Pièces jointes
<a name="attachments-d3f993e6-4d96-4cb9-a075-c4debe431fd7"></a>

[Pour accéder au contenu supplémentaire associé à ce document, décompressez le fichier suivant : attachment.zip](samples/p-attach/d3f993e6-4d96-4cb9-a075-c4debe431fd7/attachments/attachment.zip)