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éploiement et débogage de clusters Amazon EKS
Créée par Svenja Raether (AWS) et Mathew George (AWS)
Environnement : PoC ou pilote | Technologies : conteneurs et microservices ; infrastructure ; modernisation ; sans serveur ; cloud native | Charge de travail : toutes les autres charges de travail |
Services AWS : Amazon EKS ; AWS Fargate |
Récapitulatif
Les conteneurs sont en train de devenir un élément essentiel du développement d'applications cloud natives. Kubernetes fournit un moyen efficace de gérer et d'orchestrer les conteneurs. Amazon Elastic Kubernetes Service (Amazon EKS) est un service
Il est important que les développeurs et les administrateurs connaissent les options de débogage lorsqu'ils exécutent des charges de travail conteneurisées. Ce modèle vous guide dans le déploiement et le débogage de conteneurs sur Amazon EKS avec AWS Fargate
Conditions préalables et limitations
Prérequis
Un compte AWS actif
Rôle AWS Identity and Access Management (IAM) configuré avec des autorisations suffisantes pour créer et interagir avec Amazon EKS, les rôles IAM et les rôles liés à un service
Interface de ligne de commande AWS (AWS CLI) (AWS CLI) installée sur la machine locale
Limites
Ce modèle fournit aux développeurs des pratiques de débogage utiles pour les environnements de développement. Il n'indique pas les meilleures pratiques pour les environnements de production.
Si vous utilisez Windows, utilisez les commandes spécifiques à votre système d'exploitation pour définir les variables d'environnement.
Versions du produit utilisées
version kubectl avec une différence de version mineure par rapport au plan de contrôle Amazon EKS que vous utilisez
dernière version de eksctl
Architecture
Pile technologique
Application Load Balancer
Amazon EKS
AWS Fargate
Architecture cible
Toutes les ressources présentées dans le diagramme sont approvisionnées à l'aide eksctl
de kubectl
commandes émises par une machine locale. Les clusters privés doivent être exécutés à partir d'une instance située dans le VPC privé.
L'architecture cible consiste en un cluster EKS utilisant le type de lancement Fargate. Cela fournit une capacité de calcul adaptée à la demande sans qu'il soit nécessaire de spécifier les types de serveurs. Le cluster EKS possède un plan de contrôle, qui est utilisé pour gérer les nœuds du cluster et les charges de travail. Les pods sont approvisionnés dans des sous-réseaux VPC privés couvrant plusieurs zones de disponibilité. La galerie publique Amazon ECR est référencée pour récupérer et déployer une image de serveur Web NGINX sur les pods du cluster.
Le schéma montre comment accéder au plan de contrôle Amazon EKS à l'aide de kubectl
commandes et comment accéder à l'application à l'aide de l'Application Load Balancer.
.
![](images/pattern-img/36d63548-9657-4260-8c09-d7eb45fcaafb/images/13025262-6801-4c91-88c5-f863aa5508f7.png)
Une machine locale en dehors du cloud AWS envoie des commandes au plan de contrôle Kubernetes à l'intérieur d'un VPC géré par Amazon EKS.
Amazon EKS planifie les pods en fonction des sélecteurs du profil Fargate.
La machine locale ouvre l'URL de l'Application Load Balancer dans le navigateur.
L'Application Load Balancer divise le trafic entre les pods Kubernetes des nœuds du cluster Fargate déployés dans des sous-réseaux privés couvrant plusieurs zones de disponibilité.
Outils
Services AWS
Amazon Elastic Container Registry (Amazon ECR) est un service géré de registre d'images de conteneurs sécurisé, évolutif et fiable.
Amazon Elastic Kubernetes Service (Amazon EKS) vous aide à exécuter Kubernetes sur AWS sans avoir à installer ou à gérer votre propre plan de contrôle ou vos propres nœuds Kubernetes. Ce modèle utilise également l'outil de ligne de commande eksctl pour travailler avec les clusters Kubernetes sur Amazon EKS.
AWS Fargate vous permet d'exécuter des conteneurs sans avoir à gérer de serveurs ou d'instances Amazon Elastic Compute Cloud (Amazon EC2). Il est utilisé conjointement avec Amazon Elastic Container Service (Amazon ECS).
Elastic Load Balancing (ELB) répartit le trafic applicatif ou réseau entrant sur plusieurs cibles. Par exemple, vous pouvez répartir le trafic entre les instances, les conteneurs et les adresses IP Amazon Elastic Compute Cloud (Amazon EC2) dans une ou plusieurs zones de disponibilité. Ce modèle utilise le composant de contrôle AWS Load Balancer Controller pour créer l'Application Load Balancer lorsqu'une entrée Kubernetes
est provisionnée. L'Application Load Balancer répartit le trafic entrant entre plusieurs cibles.
Autres outils
Helm
est un gestionnaire de paquets open source pour Kubernetes. Dans ce modèle, Helm est utilisé pour installer le contrôleur AWS Load Balancer. Kubernetes
est un système open source permettant d'automatiser le déploiement, le dimensionnement et la gestion des applications conteneurisées. NGINX
est un serveur Web et un serveur proxy inverse à hautes performances.
Épopées
Tâche | Description | Compétences requises |
---|---|---|
Créez les fichiers. | À l'aide du code de la section Informations supplémentaires, créez les fichiers suivants :
| Développeur d'applications, administrateur AWS, AWS DevOps |
Définissez les variables d'environnement. | Remarque : Si une commande échoue en raison de tâches inachevées précédentes, attendez quelques secondes, puis réexécutez la commande. Ce modèle utilise la région AWS et le nom du cluster définis dans le fichier
| Développeur d'applications, AWS DevOps, administrateur système AWS |
Créez un cluster EKS. | Pour créer un cluster EKS qui utilise les spécifications du
Le fichier contient le Le profil Fargate par défaut est configuré avec deux sélecteurs | Développeur d'applications, AWS DevOps, administrateur AWS |
Vérifiez le cluster créé. | Pour vérifier le cluster créé, exécutez la commande suivante.
Le résultat doit être le suivant.
Vérifiez le profil Fargate créé à l'aide du.
Cette commande affiche des informations sur les ressources. Vous pouvez utiliser ces informations pour vérifier le cluster créé. Le résultat doit être le suivant.
| Développeur d'applications, AWS DevOps, administrateur système AWS |
Tâche | Description | Compétences requises |
---|---|---|
Déployez le serveur Web NGINX. | Pour appliquer le déploiement du serveur Web NGINX sur le cluster, exécutez la commande suivante.
Le résultat doit être le suivant.
Le déploiement inclut trois répliques de l'image NGINX extraite de la galerie publique Amazon ECR. L'image est déployée dans l'espace de noms par défaut et exposée sur le port 80 des pods en cours d'exécution. | Développeur d'applications, AWS DevOps, administrateur système AWS |
Vérifiez le déploiement et les modules. | (Facultatif) Vérifiez le déploiement. Vous pouvez vérifier l'état de votre déploiement à l'aide de la commande suivante.
Le résultat doit être le suivant.
Un pod est un objet déployable dans Kubernetes contenant un ou plusieurs conteneurs. Pour répertorier tous les pods, exécutez la commande suivante.
Le résultat doit être le suivant.
| Développeur d'applications, AWS DevOps, administrateur AWS |
Élargissez le déploiement. | Pour faire passer le déploiement des trois répliques spécifiées dans
Le résultat doit être le suivant.
| Développeur d'applications, AWS DevOps, administrateur système AWS |
Tâche | Description | Compétences requises |
---|---|---|
Définissez les variables d'environnement. | Décrivez la CloudFormation pile du cluster pour récupérer des informations sur son VPC.
Le résultat doit être le suivant.
Copiez l'ID VPC et exportez-le en tant que variable d'environnement.
| Développeur d'applications, AWS DevOps, administrateur système AWS |
Configurez IAM pour le compte de service de cluster. | Utilisez les extraits
| Développeur d'applications, AWS DevOps, administrateur système AWS |
Téléchargez et créez la politique IAM. | Téléchargez la politique IAM pour le contrôleur AWS Load Balancer qui lui permet de passer des appels aux API AWS en votre nom.
Créez la politique dans votre compte AWS à l'aide de l'interface de ligne de commande AWS.
Le résultat suivant doit s'afficher.
Enregistrez le nom de ressource Amazon (ARN) de la politique sous
| Développeur d'applications, AWS DevOps, administrateur système AWS |
Créez un compte de service IAM. | Créez un compte de service IAM nommé
Vérifiez la création.
Le résultat doit être le suivant.
| Développeur d'applications, AWS DevOps, administrateur système AWS |
Installez le contrôleur AWS Load Balancer. | Mettez à jour le référentiel Helm.
Ajoutez le référentiel de graphiques Amazon EKS au référentiel Helm.
Appliquez les définitions de ressources personnalisées (CRD) Kubernetes utilisées par le AWS Load Balancer Controller eks-chart en arrière-plan
Le résultat doit être le suivant.
Installez le graphique Helm en utilisant les variables d'environnement que vous avez définies précédemment.
Le résultat doit être le suivant.
| Développeur d'applications, AWS DevOps, administrateur système AWS |
Créez un service NGINX. | Créez un service pour exposer les pods NGINX à l'aide du
Le résultat doit être le suivant.
| Développeur d'applications, AWS DevOps, administrateur système AWS |
Créez la ressource d'entrée Kubernetes. | Créez un service pour exposer l'entrée NGINX de Kubernetes à l'aide du fichier.
Le résultat doit être le suivant.
| Développeur d'applications, AWS DevOps, administrateur système AWS |
Obtenez l'URL de l'équilibreur de charge. | Pour récupérer les informations d'entrée, utilisez la commande suivante.
Le résultat doit être le suivant.
Copiez | Développeur d'applications, AWS DevOps, administrateur système AWS |
Tâche | Description | Compétences requises |
---|---|---|
Sélectionnez un module. | Répertoriez tous les modules et copiez le nom du module souhaité.
Le résultat doit être le suivant.
Cette commande répertorie les modules existants ainsi que des informations supplémentaires. Si vous êtes intéressé par un module spécifique, saisissez le nom du module qui vous intéresse pour la
| Développeur d'applications, AWS DevOps, administrateur système AWS |
Accédez aux journaux. | Récupérez les journaux du module que vous souhaitez déboguer.
| Développeur d'applications, administrateur système AWS, AWS DevOps |
Transférez le port NGINX. | Utilisez le transfert de port pour mapper le port du pod permettant d'accéder au serveur Web NGINX à un port de votre machine locale.
Dans votre navigateur, ouvrez l'URL suivante.
La | Développeur d'applications, AWS DevOps, administrateur système AWS |
Exécutez des commandes dans le module. | Pour consulter le
Vous pouvez utiliser la | Développeur d'applications, AWS DevOps, administrateur système AWS |
Copiez des fichiers dans un module. | Supprimez le
Téléchargez le fichier
Vous pouvez utiliser la | Développeur d'applications, AWS DevOps, administrateur système AWS |
Utilisez le transfert de port pour afficher la modification. | Utilisez le transfert de port pour vérifier les modifications que vous avez apportées à ce module.
Ouvrez l'URL suivante dans votre navigateur.
Les modifications apportées au | Développeur d'applications, AWS DevOps, administrateur système AWS |
Tâche | Description | Compétences requises |
---|---|---|
Supprimez l'équilibreur de charge. | Supprimez l'entrée.
Le résultat doit être le suivant.
Supprimez le service.
Le résultat doit être le suivant.
Supprimez le contrôleur d'équilibrage de charge.
Le résultat doit être le suivant.
Supprimez le compte de service.
| Développeur d'applications, AWS DevOps, administrateur système AWS |
Supprimez le déploiement. | Pour supprimer les ressources de déploiement, utilisez la commande suivante.
Le résultat doit être le suivant.
| Développeur d'applications, AWS DevOps, administrateur système AWS |
Supprimez le cluster. | Supprimez le cluster EKS à l'aide de la commande suivante, où se
Cette commande supprime l'ensemble du cluster, y compris toutes les ressources associées. | Développeur d'applications, AWS DevOps, administrateur système AWS |
Supprimez la politique IAM. | Supprimez la politique créée précédemment à l'aide de l'interface de ligne de commande AWS.
| Développeur d'applications, administrateur AWS, AWS DevOps |
Résolution des problèmes
Problème | Solution |
---|---|
Vous recevez un message d'erreur lors de la création du cluster
| Créez à nouveau le cluster en utilisant les zones de disponibilité recommandées dans le message d'erreur. Spécifiez une liste de zones de disponibilité dans la dernière ligne de votre |
Ressources connexes
Déboguer les pods en cours d'exécution
(documentation Kubernetes)
Informations supplémentaires
clusterconfig-fargate.yaml
apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-fargate region: us-east-1 fargateProfiles: - name: fp-default selectors: - namespace: default - namespace: kube-system
nginx-deployment.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: "nginx-deployment" namespace: "default" spec: replicas: 3 selector: matchLabels: app: "nginx" template: metadata: labels: app: "nginx" spec: containers: - name: nginx image: public.ecr.aws/nginx/nginx:latest ports: - containerPort: 80
nginx-service.yaml
apiVersion: v1 kind: Service metadata: annotations: alb.ingress.kubernetes.io/target-type: ip name: "nginx-service" namespace: "default" spec: ports: - port: 80 targetPort: 80 protocol: TCP type: NodePort selector: app: "nginx"
nginx-ingress.yaml
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: namespace: "default" name: "nginx-ingress" annotations: kubernetes.io/ingress.class: alb alb.ingress.kubernetes.io/scheme: internet-facing spec: rules: - http: paths: - path: / pathType: Prefix backend: service: name: "nginx-service" port: number: 80
index.html
<!DOCTYPE html> <html> <body> <h1>Welcome to your customized nginx!</h1> <p>You modified the file on this running pod</p> </body> </html>