Aidez à améliorer cette page
Vous souhaitez contribuer à ce guide de l'utilisateur ? Faites défiler cette page vers le bas et sélectionnez Modifier cette page sur GitHub. Vos contributions aideront à améliorer notre guide de l'utilisateur pour tous.
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émarrage rapide : déploiement d'une application Web et stockage des données
Ce didacticiel de démarrage rapide explique les étapes à suivre pour déployer l'exemple d'application de jeu 2048 et conserver ses données sur un EKS cluster Amazon à l'aide d'eksctl
Dans ce tutoriel
À l'aide du modèle de cluster eksctl ci-dessous, vous allez créer un EKS cluster Amazon avec des groupes de nœuds gérés. Il configure les composants suivants :
- VPCConfiguration
-
Lorsque vous utilisez le modèle de cluster eksctl qui suit, eksctl crée automatiquement un cloud privé IPv4 virtuel (VPC) pour le cluster. Par défaut, eksctl configure un VPC qui répond à toutes les exigences du réseau, en plus de créer des points de terminaison publics et privés.
- Type d’instance
-
Utilisez le type d'instance t3.medium. Ce type d'instance offre une combinaison équilibrée de ressources de calcul, de mémoire et de réseau, idéale pour les applications à CPU utilisation modérée susceptibles de connaître des pics de demande occasionnels.
- Authentification
-
Établissez les IRSA mappages pour faciliter la communication entre les pods et les services Kubernetes. AWS Le modèle est configuré pour configurer un point de terminaison OpenID Connect (OIDC) pour l'authentification et l'autorisation. Il établit également un compte de service pour le AWS Load Balancer Controller (LBC)
, un contrôleur chargé d'exposer les applications et de gérer le trafic. - Persistance des données
-
Intégrez le module complémentaire géré par le AWS EBSCSIpilote pour garantir la persistance des données d'application, même dans les scénarios impliquant le redémarrage ou la défaillance du pod. Le modèle est configuré pour installer le module complémentaire et établir un compte de service
- Accès aux applications externes
-
Configurez et intégrez le module complémentaire AWS Load Balancer Controller (LBC) pour exposer l'application de jeu 2048
, en utilisant le LBC pour provisionner dynamiquement un Application Load Balancer (). ALB
Prérequis
Étape 1 : Configuration du cluster
Dans cette section, vous allez créer un cluster géré basé sur un groupe de nœuds à l'aide d'instances t3.medium contenant deuxeksctl
modules complémentaires disponibles, consultez la section Découverte des modules complémentaireseksctl
la documentation.
-
Créez un
cluster-config.yaml
fichier et collez-y le contenu suivant. Remplacez le code de région par une région valide, telle queus-east-1
L'exemple de sortie se présente comme suit :
apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: web-quickstart region: region-code managedNodeGroups: - name: eks-mng instanceType: t3.medium desiredCapacity: 2 iam: withOIDC: true serviceAccounts: - metadata: name: aws-load-balancer-controller namespace: kube-system wellKnownPolicies: awsLoadBalancerController: true addons: - name: aws-ebs-csi-driver wellKnownPolicies: # Adds an IAM service account ebsCSIController: true cloudWatch: clusterLogging: enableTypes: ["*"] logRetentionInDays: 30
Étape 2 : Création du cluster
Nous sommes maintenant prêts à créer notre EKS cluster Amazon. Ce processus prend plusieurs minutes. Si vous souhaitez surveiller l'état, consultez la AWS CloudFormation
-
Créez le EKS cluster Amazon et spécifiez le cluster-config.yaml.
eksctl create cluster -f cluster-config.yaml
Note
Si vous recevez un
Error: checking STS access
in dans la réponse, assurez-vous que vous utilisez l'identité d'utilisateur correcte pour la session shell en cours. Vous devrez peut-être également spécifier un profil nommé (par exemple,--profile clusteradmin
) ou obtenir un nouveau jeton de sécurité pour le AWS CLI.À la fin, vous devriez voir le résultat de réponse suivant :
2024-07-04 21:47:53 [✔] EKS cluster "web-quickstart" in "region-code" region is ready
Étape 3 : configurer l'accès externe aux applications à l'aide du AWS Load Balancer Controller (LBC)
Le cluster étant opérationnel, notre prochaine étape consiste à rendre ses applications conteneurisées accessibles de l'extérieur. Cela se fait en déployant un Application Load Balancer (ALB) pour diriger le trafic extérieur au cluster vers nos services, en d'autres termes, nos applications. Lorsque nous avons créé notre cluster, nous avons établi un IAMrôle pour les comptes de service (IRSA) pour le Load Balancer Controller (LBC)
Pour configurer les variables d'environnement
-
Définissez la variable d'
CLUSTER_REGION
environnement pour votre EKS cluster Amazon. Remplacez la valeur d’exemple deregion-code
.export CLUSTER_REGION=region-code
-
Définissez la variable d'
CLUSTER_VPC
environnement pour votre EKS cluster Amazon.export CLUSTER_VPC=$(aws eks describe-cluster --name web-quickstart --region $CLUSTER_REGION --query "cluster.resourcesVpcConfig.vpcId" --output text)
Pour installer le AWS Load Balancer Controller () LBC
Le AWS Load Balancer Controller (LBC) utilise les définitions de ressources personnalisées () de Kubernetes pour gérer AWS les Elastic Load Balancers (CRDs). ELBs Ils CRDs définissent des ressources personnalisées telles que les équilibreurs de charge et TargetGroupBindings, en activant Kubernetes cluster pour les reconnaître et les gérer.
Utilisez Helm
pour ajouter le référentiel de EKS graphiques Amazon à Helm. helm repo add eks https://aws.github.io/eks-charts
Mettez à jour les référentiels pour que Helm soit au courant des dernières versions des graphiques :
helm repo update eks
Exécutez la commande Helm
suivante pour installer simultanément les définitions de ressources personnalisées (CRDs) et le contrôleur principal du AWS Load Balancer Controller ()AWS LBC. Pour ignorer l'CRDinstallation, passez le --skip-crds
drapeau, ce qui peut être utile s'CRDsils sont déjà installés, si une compatibilité de version spécifique est requise ou dans des environnements soumis à des exigences strictes en matière de contrôle d'accès et de personnalisation.helm install aws-load-balancer-controller eks/aws-load-balancer-controller \ --namespace kube-system \ --set clusterName=web-quickstart \ --set serviceAccount.create=false \ --set region=${CLUSTER_REGION} \ --set vpcId=${CLUSTER_VPC} \ --set serviceAccount.name=aws-load-balancer-controller
Le résultat de la réponse devrait être le suivant :
NAME: aws-load-balancer-controller LAST DEPLOYED: Wed July 3 19:43:12 2024 NAMESPACE: kube-system STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: AWS Load Balancer controller installed!
Étape 4 : Déployer l'exemple d'application du jeu 2048
Maintenant que l'équilibreur de charge est configuré, il est temps d'activer l'accès externe pour les applications conteneurisées du cluster. Dans cette section, nous vous expliquons les étapes à suivre pour déployer le célèbre « jeu 2048 » en tant qu'exemple d'application au sein du cluster. Le manifeste fourni inclut des annotations personnalisées pour l'Application Load Balancer ALB (), en particulier l'annotation « schéma » et l'annotation «
Créez un espace de noms Kubernetes appelé
game-2048
avec le drapeau.--save-config
kubectl create namespace game-2048 --save-config
Le résultat de la réponse devrait être le suivant :
namespace/game-2048 created
-
Déployez l'application 2048 Game Sample
. kubectl apply -n game-2048 -f https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.8.0/docs/examples/2048/2048_full.yaml
Ce manifeste définit un déploiement, un service et une entrée Kubernetes pour l'espace de
game-2048
noms, créant ainsi les ressources nécessaires pour déployer et exposer l'application au sein dugame-2048
cluster. Cela inclut la création d'un service nomméservice-2048
qui expose le déploiement sur le port80
, et d'une ressource d'entrée nomméeingress-2048
qui définit les règles de routage pour le HTTP trafic entrant et les annotations pour un Application Load Balancer () connecté à Internet. ALB 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
game-2048
noms.kubectl get ingress -n game-2048
Le 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 31s
Vous devrez attendre plusieurs minutes le temps que l'Application Load Balancer (ALB) soit provisionné avant de commencer les étapes suivantes.
Ouvrez un navigateur Web et entrez le code
ADDRESS
de l'étape précédente pour accéder à l'application Web. Par exemple,k8s-game2048-ingress2-eb379a0f83-378466616.
region-code
.elb.amazonaws.com
. Vous devriez voir le jeu 2048 dans votre navigateur. Jouez !
Étape 5 : conserver les données à l'aide des nœuds Amazon EBS CSI Driver
Maintenant que le jeu 2048 est opérationnel sur votre EKS cluster Amazon, il est temps de vous assurer que vos données de jeu sont conservées en toute sécurité à l'aide du module complémentaire géré par Amazon EBS CSI Driver. Ce module complémentaire a été installé sur notre cluster lors du processus de création. Cette intégration est essentielle pour préserver la progression et les données du jeu même lorsque les pods ou nœuds Kubernetes sont redémarrés ou remplacés.
-
Créez une classe de stockage
pour le EBS CSI pilote : kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-ebs-csi-driver/master/examples/kubernetes/dynamic-provisioning/manifests/storageclass.yaml
-
Créez une réclamation de volume persistante (PVC) pour demander le stockage de vos données de jeu. Créez un fichier nommé
ebs-pvc.yaml
et ajoutez-y le contenu suivant :apiVersion: v1 kind: PersistentVolumeClaim metadata: name: game-data-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi storageClassName: ebs-sc
Appliquez le PVC à votre cluster :
kubectl apply -f ebs-pvc.yaml
Le 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 pour l'utiliser PVC pour stocker des données. Le déploiement suivant est configuré pour utiliser le PVC pour stocker les données de jeu. Créez un fichier nommé
ebs-deployment.yaml
et 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.yaml
Le résultat de la réponse devrait être le suivant :
deployment.apps/deployment-2048 configured
Grâce à ces étapes, votre jeu 2048 sur Amazon EKS est désormais configuré pour conserver les données à l'aide du EBS CSI pilote Amazon. Cela garantit la sécurité de votre progression et de vos données dans le jeu, même en cas de défaillance d'un pod ou d'un nœud. Si vous avez aimé ce didacticiel, faites-le nous savoir en nous faisant part de vos commentaires afin que nous puissions vous proposer d'autres didacticiels de démarrage rapide spécifiques à des cas d'utilisation, comme celui-ci.
Étape 6 : supprimer votre cluster et vos nœuds
Une fois que vous avez fini d'utiliser le cluster et les nœuds que vous avez créés pour ce didacticiel, vous devez effectuer un nettoyage en supprimant le cluster et les nœuds avec la commande suivante. Si vous souhaitez utiliser davantage ce cluster avant de le nettoyer, reportez-vous à la section Étapes suivantes.
eksctl delete cluster -f ./cluster-config.yaml
À la fin, vous devriez voir le résultat de réponse suivant :
2024-07-05 17:26:44 [✔] all cluster resources were deleted
Étapes suivantes
Les rubriques de documentation suivantes vous aident à étendre les fonctionnalités de votre cluster :
Le IAMprincipal qui a créé le cluster est le seul principal qui peut appeler le Kubernetes APIserveur avec
kubectl
ou le AWS Management Console. Si vous souhaitez que d'IAMautres principaux aient accès à votre cluster, vous devez les ajouter. Pour plus d’informations, consultez Accorder IAM aux utilisateurs et aux rôles l'accès à Kubernetes APIs et Autorisations nécessaires.Avant de déployer un cluster pour une utilisation en production, nous vous recommandons de vous familiariser avec tous les paramètres des clusters et des nœuds. Certains paramètres (tels que l'activation de SSH l'accès aux EC2 nœuds Amazon) doivent être définis lors de la création du cluster.
Pour renforcer la sécurité de votre cluster, configurez le plug-in Amazon VPC Container Networking Interface pour utiliser IAM des rôles pour les comptes de service.
Pour découvrir comment créer différents types de clusters, procédez comme suit :