Aidez à améliorer cette page
Pour contribuer à ce guide de l’utilisateur, cliquez sur le lien Modifier cette page sur GitHub qui se trouve dans le volet droit de chaque page.
Démarrage rapide : déploiement d’une application Web et stockage des données
Déployer une application de jeu et conserver ses données sur Amazon EKS
Ce tutoriel de démarrage rapide présente les étapes à suivre pour déployer l’application exemple de jeu 2048 et conserver ses données sur un cluster du mode automatique Amazon EKS à l’aide de eksctl
Au fur et à mesure, nous vous guiderons tout au long du processus de configuration du cluster. Le mode automatique Amazon EKS automatisera les tâches de création d’un nœud à l’aide d’une instance gérée EC2, de création d’un Application Load Balancer et de création d’un volume EBS.
Dans l’ensemble, vous déployez une charge de travail d’exemple avec les annotations personnalisées requises pour une intégration complète avec les services AWS.
Dans ce tutoriel
À l’aide du modèle de cluster eksctl ci-dessous, vous créez un cluster avec le mode automatique EKS pour le provisionnement automatisé des nœuds.
Configuration VPC Lorsque vous utilisez le modèle de cluster eksctl ci-dessous, eksctl crée automatiquement un cloud privé virtuel (VPC) IPv4 pour le cluster. Par défaut, eksctl configure un VPC qui répond à toutes les exigences de mise en réseau, en plus de créer des points de terminaison publics et privés.
Gestion des instances Le mode automatique EKS ajoute ou supprime dynamiquement des nœuds dans votre cluster EKS en fonction des demandes de vos applications Kubernetes.
Persistance des données Utilisez la fonctionnalité de stockage en blocs du mode automatique EKS pour garantir la persistance des données d’application, même dans les scénarios impliquant des redémarrages ou des pannes de pod.
Accès aux applications externes Utilisez la fonctionnalité d’équilibrage de charge du mode automatique EKS pour provisionner de manière dynamique un Application Load Balancer (ALB).
Prérequis
Avant de commencer, assurez-vous que les conditions préalables suivantes sont remplies pour utiliser Amazon EKS :
-
Configurer l’interface AWS CLI et configurer les informations d’identification
-
Installer eksctl
-
Installer kubectl
Pour de plus amples informations, consultez Configuration pour utiliser Amazon EKS.
Configurer le cluster
Dans cette section, vous allez créer un cluster à l’aide du mode automatique EKS pour le provisionnement dynamique des nœuds.
Créez un fichier cluster-config.yaml et collez-y le contenu suivant. Remplacez region-code par une région valide, telle que us-east-1 :
apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: web-quickstart region: <region-code> autoModeConfig: enabled: true
Nous sommes maintenant prêts à créer le cluster.
Créez le cluster Amazon EKS :
eksctl create cluster -f cluster-config.yaml
Important
Si vous n’utilisez pas eksctl pour créer le cluster, vous devez baliser manuellement les sous-réseaux VPC.
Créer IngressClass
Créez une IngressClass Kubernetes pour le mode automatique EKS. L’IngressClass définit la manière dont le mode automatique EKS gère les ressources Ingress. Cette étape configure la capacité d’équilibrage de charge du mode automatique EKS. Lorsque vous créez des ressources Ingress pour vos applications, le mode automatique EKS utilise cette IngressClass pour provisionner et gérer automatiquement les équilibreurs de charge, en intégrant vos applications Kubernetes aux services d’équilibrage de charge AWS.
Enregistrez le fichier yaml suivant sous le nom ingressclass.yaml :
apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: name: alb annotations: ingressclass.kubernetes.io/is-default-class: "true" spec: controller: eks.amazonaws.com/alb
Appliquez l’IngressClass à votre cluster :
kubectl apply -f ingressclass.yaml
Déployer l’application exemple de jeu 2048
Dans cette section, nous vous guidons à travers les étapes de déploiement du célèbre « jeu 2048 » en tant qu’application exemple au sein du cluster. Le manifeste fourni comprend des annotations personnalisées pour l’Application Load Balancer (ALB). Ces annotations s’intègrent à EKS et lui indiquent de traiter le trafic HTTP entrant comme « connecté à Internet » et de procéder au routage vers le service approprié dans l’espace de noms game-2048 à l’aide du type de cible « ip ».
Note
L’image docker-2048 de l’exemple est une image de conteneur x86_64 et ne fonctionnera pas sur d’autres architectures.
-
Créez un espace de noms Kubernetes appelé
game-2048avec l’indicateur--save-config.kubectl create namespace game-2048 --save-configLe résultat de la réponse devrait être le suivant :
namespace/game-2048 created -
Déployez l’application exemple de jeu 2048
. kubectl apply -n game-2048 -f https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.8.0/docs/examples/2048/2048_full.yamlCe manifeste configure un déploiement, un service et un ingress Kubernetes pour l’espace de noms
game-2048, créant ainsi les ressources nécessaires pour déployer et exposer l’applicationgame-2048au sein du cluster. Il inclut la création d’un service nomméservice-2048qui expose le déploiement sur le port80, et une ressource Ingress nomméeingress-2048qui définit les règles de routage pour le trafic HTTP entrant et les annotations pour un Application Load Balancer (ALB) connecté à Internet. Le résultat de la réponse devrait être le suivant :namespace/game-2048 configured deployment.apps/deployment-2048 created service/service-2048 created ingress.networking.k8s.io/ingress-2048 created -
Exécutez la commande suivante pour obtenir la ressource Ingress pour l’espace de noms
game-2048.kubectl get ingress -n game-2048Le résultat de la réponse devrait être le suivant :
NAME CLASS HOSTS ADDRESS PORTS AGE ingress-2048 alb * k8s-game2048-ingress2-eb379a0f83-378466616.region-code.elb.amazonaws.com 80 31sVous devrez patienter quelques minutes pour que l’Application Load Balancer (ALB) soit provisionné avant de passer aux étapes suivantes.
-
Ouvrez un navigateur Web et saisissez l’
ADDRESSde l’étape précédente pour accéder à l’application Web. Par exemple :k8s-game2048-ingress2-eb379a0f83-378466616---region-code---elb.amazonaws.com.rproxy.govskope.caLe jeu 2048 devrait s’afficher dans votre navigateur. Lire !
Conserver les données à l’aide du mode automatique Amazon EKS
Maintenant que le jeu 2048 est opérationnel sur votre cluster Amazon EKS, il est temps de vous assurer que les données de votre jeu sont conservées en toute sécurité à l’aide de la fonctionnalité de stockage en bloc du mode automatique Amazon EKS.
-
Créez un fichier nommé
storage-class.yaml:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: auto-ebs-sc annotations: storageclass.kubernetes.io/is-default-class: "true" provisioner: ebs.csi.eks.amazonaws.com volumeBindingMode: WaitForFirstConsumer parameters: type: gp3 encrypted: "true" -
Appliquez le
StorageClass:kubectl apply -f storage-class.yaml -
Créez une demande de volume persistant (PVC) pour demander du stockage pour les données de votre jeu. Créez un fichier nommé
ebs-pvc.yamlet ajoutez-y le contenu suivant :apiVersion: v1 kind: PersistentVolumeClaim metadata: name: game-data-pvc namespace: game-2048 spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi storageClassName: auto-ebs-sc -
Appliquez le PVC à votre cluster :
kubectl apply -f ebs-pvc.yamlLe résultat de la réponse devrait être le suivant :
persistentvolumeclaim/game-data-pvc created -
Vous devez maintenant mettre à jour le déploiement de votre jeu 2048 afin d’utiliser ce PVC pour stocker les données. Le déploiement suivant est configuré pour utiliser le PVC pour stocker les données du jeu. Créez un fichier nommé
ebs-deployment.yamlet ajoutez-y le contenu suivant :apiVersion: apps/v1 kind: Deployment metadata: namespace: game-2048 name: deployment-2048 spec: replicas: 3 # Adjust the number of replicas as needed selector: matchLabels: app.kubernetes.io/name: app-2048 template: metadata: labels: app.kubernetes.io/name: app-2048 spec: containers: - name: app-2048 image: public.ecr.aws/l6m2t8p7/docker-2048:latest imagePullPolicy: Always ports: - containerPort: 80 volumeMounts: - name: game-data mountPath: /var/lib/2048 volumes: - name: game-data persistentVolumeClaim: claimName: game-data-pvc -
Appliquez le déploiement mis à jour :
kubectl apply -f ebs-deployment.yamlLe résultat de la réponse devrait être le suivant :
deployment.apps/deployment-2048 configured
Grâce à ces étapes, votre jeu 2048 sur le cluster est désormais configuré pour conserver les données à l’aide de la fonctionnalité de stockage en blocs du mode automatique Amazon EKS. Cela garantit la sécurité de la progression et des données de votre jeu, même en cas de défaillance d’un pod ou d’un nœud.
Si vous avez apprécié ce tutoriel, veuillez nous en faire part afin que nous puissions vous proposer d’autres tutoriels de démarrage rapide spécifiques à des cas d’utilisation comme celui-ci.
Supprimer votre cluster et vos nœuds
Une fois que vous avez terminé avec le cluster que vous avez créé pour ce tutoriel, vous devez le nettoyer en le supprimant à l’aide de la commande suivante. Si vous voulez effectuer d’autres opérations avec ce cluster avant de le nettoyer, consultez Étapes suivantes.
eksctl delete cluster -f ./cluster-config.yaml
EKS nettoiera automatiquement tous les nœuds qu’il a provisionnés lorsque le cluster sera supprimé.