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 - Recommandations AWS

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

Créée par Sagar Panigrahi (AWS)

Environnement : PoC ou pilote

Technologies : conteneurs et microservices ; DevOps

Services AWS : Amazon EKS

Récapitulatif

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

Prérequis

  • 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 pipeline CI/CD

Limites

  • Il n'existe actuellement aucun support pour la mise à niveau, la suppression ou la gestion des définitions de ressources personnalisées (CRD).

  • 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

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.

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 dans la documentation Amazon EKS.

  • Helm doit être intégré à votre outil d'automatisation CI/CD existant pour automatiser l'empaquetage et la gestion des versions des graphiques 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

Outils

  • Amazon EKS — 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 — Helm est un gestionnaire de packages pour Kubernetes qui vous aide à installer et à gérer des applications sur votre cluster Kubernetes.

  • Amazon S3 — 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 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

TâcheDescriptionCompétences requises

Installez le client Helm.

Pour télécharger et installer le client Helm sur votre système local, utilisez la commande suivante. 

sudo curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
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
TâcheDescriptionCompétences requises

Créez un graphique Helm pour NGINX.

Pour créer un graphique de barre nommé my-nginx sur la machine cliente, exécutezhelm create my-nginx.

DevOps ingénieur

Passez en revue la structure du graphique.

Pour revoir la structure du graphique, exécutez la commande d'arborescencetree my-nginx/.

DevOps ingénieur

Désactivez la création de comptes de service dans le graphique.

Dansvalues.yaml, sous la serviceAccount section, réglez la create clé surfalse. 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écutezhelm 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. 

helm install --name my-nginx-release --debug my-nginx/ --namespace helm-space

L'debugindicateur facultatif affiche tous les messages de débogage pendant l'installation. L'namespaceindicateur 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. 

kubectl get all -n helm-space
DevOps ingénieur
TâcheDescriptionCompétences requises

Modifiez et mettez à niveau la version.

Pour modifier le graphique, dansvalues.yaml, remplacez la replicaCount valeur par2. Mettez ensuite à niveau la version déjà installée en exécutant la commande suivante.

helm upgrade my-nginx-release my-nginx/ --namespace helm-space
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. 

helm history my-nginx-release
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.

helm get --revision=2 my-nginx-release
DevOps ingénieur

Retournez à une version précédente.

Pour revenir à une révision précédente, utilisez la commande suivante. 

helm rollback my-nginx-release 1

Cet exemple revient à la révision numéro 1.

DevOps ingénieur
TâcheDescriptionCompé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. 

helm plugin install https://github.com/hypnoglow/helm-s3.git --version 0.10.0

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. 

helm S3 init s3://my-helm-charts/charts

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.

helm repo add my-helm-charts s3://my-helm-charts/charts

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écutezhelm repo list.

DevOps ingénieur
TâcheDescriptionCompétences requises

Empaquetez le graphique.

Pour my-nginx empaqueter le graphique que vous avez créé, exécutezhelm 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.

helm s3 push ./my-nginx-0.1.0.tgz my-helm-charts
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.

helm search repo my-nginx
DevOps ingénieur
TâcheDescriptionCompétences requises

Modifiez et empaquetez le graphique.

Dansvalues.yaml, définissez la replicaCount valeur sur1. Ensuite, empaquetez le graphique en l'exécutanthelm package ./my-nginx/, en changeant cette fois la version Chart.yaml en0.1.1

Le versionnement est idéalement mis à jour grâce à l'automatisation à l'aide d'outils tels que GitVersion les numéros de build Jenkins dans un pipeline CI/CD. 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.

helm s3 push ./my-nginx-0.1.1.tgz my-helm-charts
DevOps ingénieur
TâcheDescriptionCompé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'--versionsindicateur.

helm search repo my-nginx --versions

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.

helm upgrade my-nginx-release my-helm-charts/my-nginx --version 0.1.1 --namespace helm-space
DevOps ingénieur

Ressources connexes

Pièces jointes

Pour accéder au contenu supplémentaire associé à ce document, décompressez le fichier suivant : attachment.zip