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.
Tutoriel : Déployer une application sur Amazon EKS
Dans ce didacticiel, vous apprendrez à déployer une application conteneurisée dans Amazon Elastic Kubernetes Service à l'aide d'un EKS flux de travail Amazon, CodeCatalyst d'Amazon et de quelques autres services. AWS L'application déployée est une simple application « Hello, World ! » site Web construit sur une image Docker d'un serveur Web Apache. Le didacticiel explique les tâches de préparation requises, telles que la configuration d'une machine de développement et d'un EKS cluster Amazon, puis décrit comment créer un flux de travail pour créer l'application et la déployer dans le cluster.
Une fois le déploiement initial terminé, le didacticiel vous demande de modifier la source de votre application. Cette modification entraîne la création d'une nouvelle image Docker et son transfert vers votre référentiel d'images Docker avec de nouvelles informations de révision. La nouvelle version de l'image Docker est ensuite déployée sur AmazonEKS.
Astuce
Au lieu de suivre ce didacticiel, vous pouvez utiliser un plan qui effectue une EKS configuration complète d'Amazon pour vous. Vous devrez utiliser le plan de déploiement de EKS l'application. Pour de plus amples informations, veuillez consulter Création d'un projet à l'aide d'un plan.
Rubriques
- Prérequis
- Étape 1 : configurer votre machine de développement
- Étape 2 : créer un EKS cluster Amazon
- Étape 3 : Création d'un référentiel ECR d'images Amazon
- Étape 4 : Ajouter des fichiers source
- Étape 5 : Création de AWS rôles
- Étape 6 : Ajouter AWS des rôles à CodeCatalyst
- Étape 7 : mettez à jour le ConfigMap
- Étape 8 : créer et exécuter un flux de travail
- Étape 9 : Apportez une modification à vos fichiers source
- Nettoyage
Prérequis
Avant de commencer ce didacticiel :
-
Vous avez besoin d'un CodeCatalyst espace Amazon avec un AWS compte connecté. Pour de plus amples informations, veuillez consulter Création d'un espace.
-
Dans votre espace, vous avez besoin d'un projet vide appelé :
codecatalyst-eks-project
Utilisez l'option Partir de zéro pour créer ce projet.
Pour de plus amples informations, veuillez consulter Création d'un projet vide dans Amazon CodeCatalyst.
-
Dans votre projet, vous avez besoin d'un dépôt CodeCatalyst source vide appelé :
codecatalyst-eks-source-repository
Pour de plus amples informations, veuillez consulter Stockez du code et collaborez sur celui-ci avec des référentiels de sources dans CodeCatalyst.
-
Dans votre projet, vous avez besoin d'un environnement CodeCatalyst CI/CD (et non d'un environnement de développement) appelé :
codecatalyst-eks-environment
Configurez cet environnement comme suit :
-
Choisissez n'importe quel type, tel que Non-production.
-
AWS Connectez-y votre compte.
-
Pour le IAMrôle par défaut, choisissez n'importe quel rôle. Vous spécifierez un autre rôle ultérieurement.
Pour de plus amples informations, veuillez consulter Déploiement dans Comptes AWS et VPCs.
-
Étape 1 : configurer votre machine de développement
La première étape de ce didacticiel consiste à configurer une machine de développement avec quelques outils que vous utiliserez tout au long de ce didacticiel. Ces outils sont les suivants :
-
l'
eksctl
utilitaire — pour la création de clusters -
l'
kubectl
utilité — une condition préalable àeksctl
-
le AWS CLI — également une condition préalable pour
eksctl
Vous pouvez installer ces outils sur votre machine de développement existante si vous en avez une, ou vous pouvez utiliser un CodeCatalyst environnement de développement basé sur le cloud. L'avantage d'un environnement CodeCatalyst de développement est qu'il est facile à installer et à démonter, et qu'il est intégré à d'autres CodeCatalyst services, ce qui vous permet de suivre ce didacticiel en moins d'étapes.
Ce didacticiel part du principe que vous utiliserez un CodeCatalyst environnement de développement.
Les instructions suivantes décrivent un moyen rapide de lancer un environnement de CodeCatalyst développement et de le configurer avec les outils requis, mais si vous souhaitez obtenir des instructions détaillées, consultez :
-
Création d'un environnement de développement dans ce guide.
-
Installation de kubectl dans le guide de EKSl'utilisateur Amazon.
-
Installation ou mise à niveau d'eksctl dans le guide de EKSl'utilisateur Amazon.
-
Installation ou mise à jour de la dernière version du AWS CLI dans le guide de AWS Command Line Interface l'utilisateur.
Pour lancer un environnement de développement
Ouvrez la CodeCatalyst console à l'adresse https://codecatalyst.aws/
. -
Accédez à votre projet,
codecatalyst-eks-project
. -
Dans le volet de navigation, choisissez Code, puis sélectionnez Référentiels sources.
-
Choisissez le nom de votre dépôt source,
codecatalyst-eks-source-repository
. -
En haut, choisissez Create Dev Environment, puis choisissez AWS Cloud9 (dans le navigateur).
-
Assurez-vous que les options Travailler dans la branche et la branche principale existantes sont sélectionnées, puis choisissez Créer.
Votre environnement de développement s'ouvre dans un nouvel onglet du navigateur et votre dépôt (
codecatalyst-eks-source-repository
) y est cloné.
Pour installer et configurer kubectl
-
Dans le terminal Dev Environment, entrez :
curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.18.9/2020-11-02/bin/linux/amd64/kubectl
-
Entrez :
chmod +x ./kubectl
-
Entrez :
mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$PATH:$HOME/bin
-
Entrez :
echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc
-
Entrez :
kubectl version --short --client
-
Vérifiez qu'une version apparaît.
Vous êtes maintenant installé
kubectl
.
Pour installer et configurer eksctl
Note
eksctl
n'est pas strictement obligatoire car vous pouvez utiliser à la kubectl
place. Cependant, il eksctl
présente l'avantage d'automatiser une grande partie de la configuration du cluster, et c'est donc l'outil recommandé pour ce didacticiel.
-
Dans le terminal Dev Environment, entrez :
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
-
Entrez :
sudo cp /tmp/eksctl /usr/bin
-
Entrez :
eksctl version
-
Vérifiez qu'une version apparaît.
Vous êtes maintenant installé
eksctl
.
Pour vérifier que le AWS CLI est installé
-
Dans le terminal Dev Environment, entrez :
aws --version
-
Vérifiez qu'une version apparaît pour vérifier qu'elle AWS CLI est installée.
Effectuez les procédures restantes pour configurer le AWS CLI avec les autorisations d'accès nécessaires AWS.
Pour configurer le AWS CLI
Vous devez le configurer AWS CLI avec des clés d'accès et un jeton de session pour lui donner accès aux AWS services. Les instructions suivantes fournissent un moyen rapide de configurer les clés et le jeton, mais si vous souhaitez obtenir des instructions détaillées, reportez-vous AWS CLIà la section Configuration du guide de l'AWS Command Line Interface utilisateur.
-
Créez un utilisateur IAM Identity Center, comme suit :
Connectez-vous à la AWS IAM Identity Center console AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/singlesignon/
. (Vous devrez peut-être choisir Activer si vous ne vous êtes jamais connecté à IAM Identity Center auparavant.)
Note
Assurez-vous de vous connecter à l'aide de Compte AWS celui qui est connecté à votre CodeCatalyst espace. Vous pouvez vérifier quel compte est connecté en accédant à votre espace et en choisissant l'onglet AWSComptes. Pour de plus amples informations, veuillez consulter Création d'un espace.
-
Dans le panneau de navigation, choisissez Users (Utilisateurs), puis Add user (Ajouter un utilisateur).
-
Dans Nom d'utilisateur, entrez :
codecatalyst-eks-user
-
Sous Mot de passe, choisissez Générer un mot de passe à usage unique que vous pouvez partager avec cet utilisateur.
-
Dans Adresse e-mail et Confirmer l'adresse e-mail, entrez une adresse e-mail qui n'existe pas encore dans IAM Identity Center.
-
Dans Prénom, entrez :
codecatalyst-eks-user
-
Dans Nom de famille, entrez :
codecatalyst-eks-user
-
Dans Nom d'affichage, conservez :
codecatalyst-eks-user codecatalyst-eks-user
-
Choisissez Suivant.
-
Sur la page Ajouter un utilisateur aux groupes, choisissez Next.
-
Sur la page Vérifier et ajouter un utilisateur, passez en revue les informations et choisissez Ajouter un utilisateur.
Une boîte de dialogue de mot de passe à usage unique s'affiche.
-
Choisissez Copier, puis collez les informations de connexion dans un fichier texte. Les informations de connexion comprennent le portail d' AWS accèsURL, un nom d'utilisateur et un mot de passe à usage unique.
-
Choisissez Close (Fermer).
-
Créez un ensemble d'autorisations, comme suit :
-
Dans le volet de navigation, choisissez Ensembles d'autorisations, puis choisissez Créer un ensemble d'autorisations.
-
Choisissez Ensemble d'autorisations prédéfini, puis sélectionnez AdministratorAccess. Cette politique fournit des autorisations complètes à tous services AWS.
-
Choisissez Suivant.
-
Dans Nom du jeu d'autorisations, supprimez
AdministratorAccess
et entrez :codecatalyst-eks-permission-set
-
Choisissez Suivant.
-
Sur la page Réviser et créer, passez en revue les informations et choisissez Créer.
-
-
Attribuez l'ensemble d'autorisations à
codecatalyst-eks-user
, comme suit :-
Dans le volet de navigation, choisissez Comptes AWS, puis cochez la case à côté de Compte AWS celle à laquelle vous êtes actuellement connecté.
-
Choisissez Attribuer des utilisateurs ou des groupes.
-
Sélectionnez l'onglet Utilisateurs.
-
Cochez la case à côté de
codecatalyst-eks-user
. -
Choisissez Suivant.
-
Cochez la case à côté de
codecatalyst-eks-permission-set
. -
Choisissez Suivant.
-
Vérifiez les informations et choisissez Soumettre.
Vous les avez maintenant assignés
codecatalyst-eks-user
etcodecatalyst-eks-permission-set
à votre Compte AWS, en les liant ensemble.
-
-
Les clés
codecatalyst-eks-user
d'accès et le jeton de session d'Obtain, comme suit :-
Assurez-vous d'avoir le portail d' AWS accès, le nom d'utilisateur URL et le mot de passe à usage unique pour
codecatalyst-eks-user
. Vous devriez avoir copié ces informations dans un éditeur de texte plus tôt.Note
Si vous ne disposez pas de ces informations, rendez-vous sur la page de
codecatalyst-eks-user
détails dans IAM Identity Center, choisissez Réinitialiser le mot de passe, Générer un mot de passe à usage unique [...] , et Réinitialisez à nouveau le mot de passe pour afficher les informations à l'écran. -
Déconnectez-vous de AWS.
-
Collez le portail AWS d'accès URL dans la barre d'adresse de votre navigateur.
-
Connectez-vous avec :
-
Nom d'utilisateur :
codecatalyst-eks-user
-
Mot de passe :
one-time-password
-
-
Dans Définir un nouveau mot de passe, entrez un nouveau mot de passe et choisissez Définir un nouveau mot de passe.
Une Compte AWSboîte apparaît à l'écran.
-
Choisissez Compte AWS, puis choisissez le nom de l'utilisateur Compte AWS auquel vous avez attribué l'
codecatalyst-eks-user
utilisateur et le jeu d'autorisations. -
À côté de
codecatalyst-eks-permission-set
, choisissez Ligne de commande ou accès par programmation. -
Copiez les commandes au milieu de la page. Ils ressemblent à ce qui suit :
export AWS_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE" export AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" export AWS_SESSION_TOKEN="
session-token
"... où
session-token
est une longue chaîne aléatoire.
-
-
Ajoutez les clés d'accès et le jeton de session au AWS CLI, comme suit :
-
Retournez à votre CodeCatalyst environnement de développement.
-
À l'invite du terminal, collez les commandes que vous avez copiées. Appuyez sur Entrée.
Vous avez maintenant configuré le AWS CLI avec des clés d'accès et un jeton de session. Vous pouvez désormais utiliser AWS CLI pour effectuer les tâches requises par ce didacticiel.
Important
Si, à tout moment au cours de ce didacticiel, vous voyez des messages similaires aux suivants :
Unable to locate credentials. You can configure credentials by running "aws configure".
Ou:
ExpiredToken: The security token included in the request is expired
... c'est parce que votre AWS CLI session a expiré. Dans ce cas, n'exécutez pas la
aws configure
commande. Utilisez plutôt les instructions de l'étape 4 de cette procédure qui commence parObtain codecatalyst-eks-user's access key and session token
pour actualiser votre session.
-
Étape 2 : créer un EKS cluster Amazon
Dans cette section, vous allez créer un cluster sur AmazonEKS. Les instructions ci-dessous décrivent un moyen rapide de créer le cluster en utilisanteksctl
, mais si vous souhaitez obtenir des instructions détaillées, consultez :
-
Commencer à utiliser eksctl dans le guide de l'utilisateur Amazon EKS
or
-
Mise en route avec la console et AWS CLI dans le guide de EKS l'utilisateur Amazon (cette rubrique fournit des
kubectl
instructions pour créer le cluster)
Note
Les clusters privés ne sont pas pris en charge par l' CodeCatalyst intégration avec AmazonEKS.
Avant de commencer
Assurez-vous d'avoir effectué les tâches suivantes sur votre machine de développement :
-
L'
eksctl
utilitaire a été installé. -
L'
kubectl
utilitaire a été installé. -
Vous l'avez installé AWS CLI et configuré avec des clés d'accès et un jeton de session.
Pour plus d'informations sur la façon d'effectuer ces tâches, consultezÉtape 1 : configurer votre machine de développement.
Pour créer un cluster
Important
N'utilisez pas l'interface utilisateur du EKS service Amazon pour créer le cluster car celui-ci ne sera pas configuré correctement. Utilisez l'eksctl
utilitaire, comme décrit dans les étapes suivantes.
-
Accédez à votre environnement de développement.
-
Créez un cluster et des nœuds :
eksctl create cluster --name
codecatalyst-eks-cluster
--regionus-west-2
Où :
-
codecatalyst-eks-cluster
est remplacé par le nom que vous souhaitez donner à votre cluster. -
us-west-2
est remplacé par votre région.
Après 10 à 20 minutes, un message semblable au suivant s'affiche :
EKS cluster "codecatalyst-eks-cluster" in "us-west-2" region is ready
Note
Vous verrez plusieurs
waiting for CloudFormation stack
messages lors de la AWS création de votre cluster. Ceci est normal. -
-
Vérifiez que votre cluster a été créé avec succès :
kubectl cluster-info
Vous verrez un message similaire au suivant, indiquant une création de cluster réussie :
Kubernetes master is running at https://
long-string
.gr7.us-west-2.eks.amazonaws.com CoreDNS is running at https://long-string
.gr7.us-west-2.eks.amazonaws.com/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Étape 3 : Création d'un référentiel ECR d'images Amazon
Dans cette section, vous allez créer un référentiel d'images privé dans Amazon Elastic Container Registry (AmazonECR). Ce référentiel stocke l'image Docker pour le didacticiel.
Pour plus d'informations sur AmazonECR, consultez le guide de l'utilisateur d'Amazon Elastic Container Registry.
Pour créer un référentiel d'images dans Amazon ECR
-
Accédez à votre environnement de développement.
-
Créez un référentiel vide dans Amazon ECR :
aws ecr create-repository --repository-name
codecatalyst-eks-image-repo
Remplacez
codecatalyst-eks-image-repo
avec le nom que vous souhaitez attribuer au ECR référentiel Amazon.Ce didacticiel part du principe que vous avez donné un nom à votre dépôt
codecatalyst-eks-image-repo
. -
Affichez les détails du ECR référentiel Amazon :
aws ecr describe-repositories \ --repository-names codecatalyst-eks-image-repo
-
Notez la
“repositoryUri”:
valeur, par exemple,111122223333.dkr.ecr.us-west-2.amazonaws.com/codecatalyst-eks-image-repo
.Vous en aurez besoin ultérieurement lors de l'ajout du référentiel à votre flux de travail.
Étape 4 : Ajouter des fichiers source
Dans cette section, vous allez ajouter les fichiers source de l'application à votre référentiel source (codecatalyst-eks-source-repository
). Ils sont composés de :
-
Un
index.html
fichier — Affiche un message « Bonjour tout le monde ! » message dans le navigateur. -
Un Dockerfile — Décrit l'image de base à utiliser pour votre image Docker et les commandes Docker à appliquer à celle-ci.
-
Un
deployment.yaml
fichier : le manifeste Kubernetes qui définit le service et le déploiement de Kubernetes.
La structure des dossiers est la suivante :
|— codecatalyst-eks-source-repository |— Kubernetes |— deployment.yaml |— public-html | |— index.html |— Dockerfile
Rubriques
index.html
Le index.html
fichier affiche un message « Bonjour tout le monde ! » message dans le navigateur.
Pour ajouter le fichier index.html
-
Accédez à votre environnement de développement.
-
Dans
codecatalyst-eks-source-repository
, créez un dossier appelépublic-html
. -
Dans
/public-html
, créez un fichier appeléindex.html
avec le contenu suivant :<html> <head> <title>Hello World</title> <style> body { background-color: black; text-align: center; color: white; font-family: Arial, Helvetica, sans-serif; } </style> </head> <body> <h1>Hello, World!</h1> </body> </html>
-
À l'invite du terminal, entrez :
cd /projects/codecatalyst-eks-source-repository
-
Ajoutez, validez et envoyez :
git add . git commit -m "add public-html/index.html" git push
Le
index.html
est ajouté à votre dépôt dans unpublic-html
dossier.
Dockerfile
Le Dockerfile décrit l'image Docker de base à utiliser et les commandes Docker à lui appliquer. Pour plus d'informations sur le Dockerfile, consultez le Dockerfile
Le Dockerfile spécifié ici indique d'utiliser l'image de base d'Apache 2.4 ()httpd
. Il inclut également des instructions pour copier un fichier source appelé index.html
dans un dossier du serveur Apache qui sert aux pages Web. L'EXPOSE
instruction du Dockerfile indique à Docker que le conteneur écoute sur le port 80.
Pour ajouter le Dockerfile
-
Dans
codecatalyst-eks-source-repository
, créez un fichier appeléDockerfile
avec le contenu suivant :FROM httpd:2.4 COPY ./public-html/index.html /usr/local/apache2/htdocs/index.html EXPOSE 80
N'incluez pas d'extension de fichier.
Important
Le Dockerfile doit résider dans le dossier racine de votre dépôt. La
Docker build
commande du flux de travail s'attend à ce qu'il soit présent. -
Ajoutez, validez et envoyez :
git add . git commit -m "add Dockerfile" git push
Le Dockerfile est ajouté à votre dépôt.
deployment.yaml
Dans cette section, vous allez ajouter un deployment.yaml
fichier à votre dépôt. Le deployment.yaml
fichier est un manifeste Kubernetes qui définit deux types ou types de ressources Kubernetes à exécuter : un « service » et un « déploiement ».
-
Le « service » déploie un équilibreur de charge sur Amazon. EC2 L'équilibreur de charge vous fournit un port public URL et standard connecté à Internet (port 80) que vous pouvez utiliser pour accéder au « Hello, World ! » application.
-
Le « déploiement » déploie trois pods, et chaque pod contiendra un conteneur Docker avec le message « Hello, World ! » application. Les trois pods sont déployés sur les nœuds créés lorsque vous avez créé le cluster.
Le manifeste présenté dans ce didacticiel est court ; toutefois, un manifeste peut inclure un certain nombre de types de ressources Kubernetes, tels que des pods, des jobs, des entrées et des politiques réseau. En outre, vous pouvez utiliser plusieurs fichiers manifestes si votre déploiement est complexe.
Pour ajouter un fichier de déploiement .yaml
-
Dans
codecatalyst-eks-source-repository
, créez un dossier appeléKubernetes
. -
Dans
/Kubernetes
, créez un fichier appelédeployment.yaml
avec le contenu suivant :apiVersion: v1 kind: Service metadata: name: my-service labels: app: my-app spec: type: LoadBalancer selector: app: my-app ports: - protocol: TCP port: 80 targetPort: 80 --- apiVersion: apps/v1 kind: Deployment metadata: name: my-deployment labels: app: my-app spec: replicas: 3 selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - name: codecatalyst-eks-container # The $REPOSITORY_URI and $IMAGE_TAG placeholders will be replaced by actual values supplied by the build action in your workflow image: $REPOSITORY_URI:$IMAGE_TAG ports: - containerPort: 80
-
Ajoutez, validez et envoyez :
git add . git commit -m "add Kubernetes/deployment.yaml" git push
Le
deployment.yaml
fichier est ajouté à votre dépôt dans un dossier appeléKubernetes
.
Vous avez maintenant ajouté tous vos fichiers sources.
Prenez le temps de vérifier votre travail et de vous assurer que vous avez placé tous les fichiers dans les bons dossiers. La structure des dossiers est la suivante :
|— codecatalyst-eks-source-repository |— Kubernetes |— deployment.yaml |— public-html | |— index.html |— Dockerfile
Étape 5 : Création de AWS rôles
Dans cette section, vous allez créer AWS IAM les rôles dont votre CodeCatalyst flux de travail aura besoin pour fonctionner. Ces rôles sont les suivants :
-
Rôle de création : accorde à l'action de CodeCatalyst création (dans le flux de travail) l'autorisation d'accéder à votre AWS compte et d'écrire à Amazon ECR et AmazonEC2.
-
Rôle de déploiement : accorde à l'action du cluster CodeCatalyst Deploy to Kubernetes (dans le flux de travail) l'autorisation d'accéder à votre compte AWS et à Amazon. EKS
Pour plus d'informations sur IAM les rôles, voir IAMles rôles dans le Guide de AWS Identity and Access Management l'utilisateur.
Note
Pour gagner du temps, vous pouvez créer un seul rôle, appelé CodeCatalystWorkflowDevelopmentRole-
rôle, au lieu des deux rôles répertoriés précédemment. Pour de plus amples informations, veuillez consulter Création du CodeCatalystWorkflowDevelopmentRole-spaceNamerôle pour votre compte et votre espace. Sachez que le spaceName
CodeCatalystWorkflowDevelopmentRole-
rôle dispose d'autorisations très étendues, ce qui peut présenter un risque de sécurité. Nous vous recommandons de n'utiliser ce rôle que dans les didacticiels et les scénarios où la sécurité est moins préoccupante. Ce didacticiel part du principe que vous créez les deux rôles répertoriés précédemment.spaceName
Pour créer les rôles de génération et de déploiement, suivez la série de procédures suivante.
1. Pour créer une politique de confiance pour les deux rôles
-
Accédez à votre environnement de développement.
-
Dans le
Cloud9-
répertoire, créez un fichier appelélong-string
codecatalyst-eks-trust-policy.json
avec le contenu suivant :{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codecatalyst-runner.amazonaws.com", "codecatalyst.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
2. Pour créer la politique de build pour le rôle de build
-
Dans le
Cloud9-
répertoire, créez un fichier appelélong-string
codecatalyst-eks-build-policy.json
avec le contenu suivant :{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:*", "ec2:*" ], "Resource": "*" } ] }
Note
La première fois que le rôle est utilisé pour exécuter des actions de flux de travail, utilisez le caractère générique dans la déclaration de politique de ressources, puis définissez la stratégie avec le nom de la ressource une fois celle-ci disponible.
"Resource": "*"
3. Pour créer la politique de déploiement pour le rôle de déploiement
-
Dans le
Cloud9-
répertoire, créez un fichier appelélong-string
codecatalyst-eks-deploy-policy.json
avec le contenu suivant :{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "eks:DescribeCluster", "eks:ListClusters" ], "Resource": "*" } ] }
Note
La première fois que le rôle est utilisé pour exécuter des actions de flux de travail, utilisez le caractère générique dans la déclaration de politique de ressources, puis définissez la stratégie avec le nom de la ressource une fois celle-ci disponible.
"Resource": "*"
Vous avez maintenant ajouté trois documents de politique à votre environnement de développement. La structure de votre répertoire ressemble désormais à ceci :
|— Cloud9-
long-string
|— .c9 |— codecatalyst-eks-source-repository |— Kubernetes |— public-html |— Dockerfile codecatalyst-eks-build-policy.json codecatalyst-eks-deploy-policy.json codecatalyst-eks-trust-policy.json
4. Pour ajouter la politique de construction à AWS
-
Dans le terminal Dev Environment, entrez :
cd /projects
-
Entrez :
aws iam create-policy \ --policy-name codecatalyst-eks-build-policy \ --policy-document file://codecatalyst-eks-build-policy.json
-
Appuyez sur Entrée.
-
Dans la sortie de commande, notez la
"arn":
valeur, par exemple,arn:aws:iam::111122223333:policy/codecatalyst-eks-build-policy
. Tu en auras besoin ARN plus tard.
5. Pour ajouter la politique de déploiement à AWS
-
Entrez :
aws iam create-policy \ --policy-name codecatalyst-eks-deploy-policy \ --policy-document file://codecatalyst-eks-deploy-policy.json
-
Appuyez sur Entrée.
-
Dans le résultat de la commande, notez la
"arn":
valeur de la politique de déploiement, par exemple,arn:aws:iam::111122223333:policy/codecatalyst-eks-deploy-policy
. Tu en auras besoin ARN plus tard.
6. Pour créer le rôle de build
-
Entrez :
aws iam create-role \ --role-name codecatalyst-eks-build-role \ --assume-role-policy-document file://codecatalyst-eks-trust-policy.json
-
Appuyez sur Entrée.
-
Entrez :
aws iam attach-role-policy \ --role-name codecatalyst-eks-build-role \ --policy-arn
arn:aws:iam::111122223333:policy/codecatalyst-eks-build-policy
Où
arn:aws:iam::111122223333:policy/codecatalyst-eks-build-policy
est remplacé par celui ARN de la politique de construction que vous avez mentionnée précédemment. -
Appuyez sur Entrée.
-
À l'invite du terminal, entrez :
aws iam get-role \ --role-name codecatalyst-eks-build-role
-
Appuyez sur Entrée.
-
Notez la
"Arn":
valeur du rôle, par exemplearn:aws:iam::111122223333:role/codecatalyst-eks-build-role
. Tu en auras besoin ARN plus tard.
7. Pour créer le rôle de déploiement
-
Entrez :
aws iam create-role \ --role-name codecatalyst-eks-deploy-role \ --assume-role-policy-document file://codecatalyst-eks-trust-policy.json
-
Appuyez sur Entrée.
-
Entrez :
aws iam attach-role-policy \ --role-name codecatalyst-eks-deploy-role \ --policy-arn
arn:aws:iam::111122223333:policy/codecatalyst-eks-deploy-policy
Où
arn:aws:iam::111122223333:policy/codecatalyst-eks-deploy-policy
est remplacé par celui ARN de la politique de déploiement que vous avez mentionnée précédemment. -
Appuyez sur Entrée.
-
Entrez :
aws iam get-role \ --role-name codecatalyst-eks-deploy-role
-
Appuyez sur Entrée.
-
Notez la
"Arn":
valeur du rôle, par exemplearn:aws:iam::111122223333:role/codecatalyst-eks-deploy-role
. Tu en auras besoin ARN plus tard.
Vous avez maintenant créé des rôles de construction et de déploiement et les avez notésARNs.
Étape 6 : Ajouter AWS des rôles à CodeCatalyst
Au cours de cette étape, vous ajoutez le rôle de construction (codecatalyst-eks-build-role
) et le rôle de déploiement (codecatalyst-eks-deploy-role
) au rôle Compte AWS que vous avez connecté à votre espace. Les rôles peuvent ainsi être utilisés dans votre flux de travail.
Pour ajouter des rôles de création et de déploiement à votre Compte AWS
-
Dans la CodeCatalyst console, accédez à votre espace.
-
En haut, choisissez Réglages.
-
Dans le volet de navigation, sélectionnez AWS Accounts. La liste des comptes s'affiche.
-
Dans la colonne du nom CodeCatalyst d'affichage d'Amazon, copiez le nom d'affichage de l' Compte AWS endroit où vous avez créé vos rôles de création et de déploiement. (Il peut s'agir d'un chiffre.) Vous aurez besoin de cette valeur ultérieurement, lors de la création de votre flux de travail.
-
Choisissez le nom d'affichage.
-
Choisissez Gérer les rôles depuis AWS la console de gestion.
La page Ajouter IAM un rôle à CodeCatalyst l'espace Amazon apparaît. Vous devrez peut-être vous connecter pour accéder à la page.
-
Sélectionnez Ajouter un rôle existant que vous avez créé dans IAM.
Une liste déroulante apparaît. La liste affiche les rôles de création et de déploiement, ainsi que tous IAM les autres rôles dotés d'une politique de confiance incluant les principes
codecatalyst-runner.amazonaws.com
et les principauxcodecatalyst.amazonaws.com
de service. -
Dans la liste déroulante, ajoutez :
-
codecatalyst-eks-build-role
-
codecatalyst-eks-deploy-role
Note
Si vous le voyez
The security token included in the request is invalid
, c'est peut-être parce que vous ne disposez pas des autorisations appropriées. Pour résoudre ce problème, déconnectez-vous et reconnectez-vous avec le AWS compte que vous avez utilisé lors de la création de votre CodeCatalyst espace. AWS -
-
Retournez à la CodeCatalyst console et actualisez la page.
Les rôles de création et de déploiement devraient désormais apparaître sous IAMrôles.
Ces rôles peuvent désormais être utilisés dans les CodeCatalyst flux de travail.
Étape 7 : mettez à jour le ConfigMap
Vous devez ajouter le rôle de déploiement que vous avez créé dans le ConfigMap
fichier Kubernetes Étape 5 : Création de AWS rôles pour permettre à l'action Deploy to Kubernetes cluster (dans votre flux de travail) d'accéder à votre cluster et d'interagir avec celui-ci. Vous pouvez utiliser eksctl
ou kubectl
pour exécuter cette tâche.
Pour configurer le fichier Kubernetes ConfigMap à l'aide de eksctl
-
Dans le terminal Dev Environment, entrez :
eksctl create iamidentitymapping --cluster
codecatalyst-eks-cluster
--arnarn:aws:iam::111122223333:role/codecatalyst-eks-deploy-role
--group system:masters --usernamecodecatalyst-eks-deploy-role
--regionus-west-2
Où :
-
codecatalyst-eks-cluster
est remplacé par le nom du EKS cluster Amazon. -
arn:aws:iam::111122223333:role/codecatalyst-eks-deploy-role
est remplacé par le rôle ARN de déploiement que vous avez créé dansÉtape 5 : Création de AWS rôles. -
codecatalyst-eks-deploy-role
(à côté de--username
) est remplacé par le nom du rôle de déploiement que vous avez créé dansÉtape 5 : Création de AWS rôles.Note
Si vous avez décidé de ne pas créer de rôle de déploiement, remplacez
codecatalyst-eks-deploy-role
avec le nom duCodeCatalystWorkflowDevelopmentRole-
rôle. Pour plus d’informations sur ce rôle, consultez Étape 5 : Création de AWS rôles.spaceName
-
us-west-2
est remplacé par votre région.
Pour plus de détails sur cette commande, voir Gérer les IAM utilisateurs et les rôles
. Un message similaire au suivant s'affiche :
2023-06-09 00:58:29 [ℹ] checking arn arn:aws:iam::111122223333:role/codecatalyst-eks-deploy-role against entries in the auth ConfigMap 2023-06-09 00:58:29 [ℹ] adding identity "arn:aws:iam::111122223333:role/codecatalyst-eks-deploy-role" to auth ConfigMap
-
Pour configurer le fichier Kubernetes ConfigMap à l'aide de kubectl
-
Dans le terminal Dev Environment, entrez :
kubectl edit configmap -n kube-system aws-auth
Le ConfigMap fichier apparaît à l'écran.
-
Ajoutez le texte en italique rouge :
# Please edit the object below. Lines beginning with a '#' will be ignored, # and an empty file will abort the edit. If an error occurs while saving this file will be # reopened with the relevant failures. # apiVersion: v1 data: mapRoles: | - groups: - system:bootstrappers - system:nodes rolearn: arn:aws:iam::111122223333:role/eksctl-codecatalyst-eks-cluster-n-NodeInstanceRole-16BC456ME6YR5 username: system:node:{{EC2PrivateDNSName}}
- groups: - system:masters rolearn: arn:aws:iam::111122223333:role/codecatalyst-eks-deploy-role username: codecatalyst-eks-deploy-role
mapUsers: | [] kind: ConfigMap metadata: creationTimestamp: "2023-06-08T19:04:39Z" managedFields: ...Où :
-
arn:aws:iam::111122223333:role/codecatalyst-eks-deploy-role
est remplacé par le rôle ARN de déploiement que vous avez créé dansÉtape 5 : Création de AWS rôles. -
codecatalyst-eks-deploy-role
(à côté deusername:
) est remplacé par le nom du rôle de déploiement que vous avez créé dansÉtape 5 : Création de AWS rôles.Note
Si vous avez décidé de ne pas créer de rôle de déploiement, remplacez
codecatalyst-eks-deploy-role
avec le nom duCodeCatalystWorkflowDevelopmentRole-
rôle. Pour plus d’informations sur ce rôle, consultez Étape 5 : Création de AWS rôles.spaceName
Pour plus de détails, consultez la section Activation de l'accès IAM principal à votre cluster dans le guide de EKS l'utilisateur Amazon.
-
Vous avez maintenant accordé au rôle de déploiement, et par extension à l'EKSaction Deploy to Amazon, system:masters
des autorisations sur votre cluster Kubernetes.
Étape 8 : créer et exécuter un flux de travail
Au cours de cette étape, vous créez un flux de travail qui prend vos fichiers source, les intègre dans une image Docker, puis déploie l'image dans des capsules d'arbres de votre cluster AmazonEKS.
Le flux de travail comprend les éléments de base suivants qui s'exécutent de manière séquentielle :
-
Un déclencheur : ce déclencheur lance automatiquement l'exécution du flux de travail lorsque vous apportez une modification à votre référentiel source. Pour plus d'informations sur les déclencheurs, consultez Démarrage d'un flux de travail exécuté automatiquement à l'aide de déclencheurs.
-
Une action de construction (
BuildBackend
) — Au déclenchement, l'action crée l'image Docker à l'aide du Dockerfile et envoie l'image vers Amazon. ECR L'action de génération met également à jour les$IMAGE_TAG
variables$REPOSITORY_URI
et dudeployment.yaml
fichier avec les valeurs correctes, puis crée un artefact de sortie de ce fichier et de tous les autres éléments duKubernetes
dossier. Dans ce didacticiel, le seul fichier duKubernetes
dossier l'estdeployment.yaml
, mais vous pouvez inclure d'autres fichiers. L'artefact est utilisé comme entrée pour l'action de déploiement, qui est la suivante.Pour plus d'informations sur l'action de génération, consultezConstruire avec des flux de travail.
-
Une action de déploiement (
DeployToEKS
) : une fois l'action de génération terminée, l'action de déploiement recherche l'artefact de sortie généré par l'action de génération (Manifests
) et trouve ledeployment.yaml
fichier qu'il contient. L'action suit ensuite les instructions dudeployment.yaml
fichier pour exécuter trois pods, chacun contenant un seul « Hello, World ! » Conteneur Docker, à l'intérieur de votre cluster Amazon. EKS
Pour créer un flux de travail
-
Accédez à la CodeCatalyst console.
-
Accédez à votre projet (
codecatalyst-eks-project
). -
Dans le volet de navigation, choisissez CI/CD, puis Workflows.
-
Choisissez Créer un flux de travail.
-
Pour Référentiel source, choisissez
codecatalyst-eks-source-repository
. -
Pour Branch, choisissez
main
. -
Sélectionnez Create (Créer).
-
Supprimez l'YAMLexemple de code.
-
Ajoutez le YAML code suivant pour créer un nouveau fichier de définition de flux de travail :
Note
Pour plus d'informations sur le fichier de définition du flux de travail, consultezYAMLDéfinition du flux de travail.
Note
Dans le YAML code qui suit, vous pouvez omettre les
Connections:
sections si vous le souhaitez. Si vous omettez ces sections, vous devez vous assurer que le rôle spécifié dans le champ IAMRôle par défaut de votre environnement inclut les autorisations et les politiques de confiance des deux rôles décrits dansÉtape 6 : Ajouter AWS des rôles à CodeCatalyst. Pour plus d'informations sur la configuration d'un environnement doté d'un IAM rôle par défaut, consultezCréation d'un environnement.Name: codecatalyst-eks-workflow SchemaVersion: 1.0 Triggers: - Type: PUSH Branches: - main Actions: BuildBackend: Identifier: aws/build@v1 Environment: Name:
codecatalyst-eks-environment
Connections: - Name:codecatalyst-account-connection
Role:codecatalyst-eks-build-role
Inputs: Sources: - WorkflowSource Variables: - Name: REPOSITORY_URI Value:111122223333.dkr.ecr.us-west-2.amazonaws.com/codecatalyst-eks-image-repo
- Name: IMAGE_TAG Value: ${WorkflowSource.CommitId} Configuration: Steps: #pre_build: - Run: echo Logging in to Amazon ECR... - Run: aws --version - Run: aws ecr get-login-password --regionus-west-2
| docker login --username AWS --password-stdin111122223333.dkr.ecr.us-west-2.amazonaws.com
#build: - Run: echo Build started on `date` - Run: echo Building the Docker image... - Run: docker build -t $REPOSITORY_URI:latest . - Run: docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:$IMAGE_TAG #post_build: - Run: echo Build completed on `date` - Run: echo Pushing the Docker images... - Run: docker push $REPOSITORY_URI:latest - Run: docker push $REPOSITORY_URI:$IMAGE_TAG # Replace the variables in deployment.yaml - Run: find Kubernetes/ -type f | xargs sed -i "s|\$REPOSITORY_URI|$REPOSITORY_URI|g" - Run: find Kubernetes/ -type f | xargs sed -i "s|\$IMAGE_TAG|$IMAGE_TAG|g" - Run: cat Kubernetes/* # The output artifact will be a zip file that contains Kubernetes manifest files. Outputs: Artifacts: - Name: Manifests Files: - "Kubernetes/*" DeployToEKS: DependsOn: - BuildBackend Identifier: aws/kubernetes-deploy@v1 Environment: Name:codecatalyst-eks-environment
Connections: - Name:codecatalyst-account-connection
Role:codecatalyst-eks-deploy-role
Inputs: Artifacts: - Manifests Configuration: Namespace: default Region:us-west-2
Cluster: codecatalyst-eks-cluster Manifests: Kubernetes/Dans le code précédent, remplacez :
-
Les deux cas de
codecatalyst-eks-environment
avec le nom de l'environnement dans lequel vous l'avez crééPrérequis. -
Les deux cas de
codecatalyst-account-connection
avec le nom d'affichage de la connexion à votre compte. Le nom d'affichage peut être un chiffre. Pour de plus amples informations, veuillez consulter Étape 6 : Ajouter AWS des rôles à CodeCatalyst. -
codecatalyst-eks-build-role
avec le nom du rôle de build que vous avez créé dansÉtape 5 : Création de AWS rôles. -
111122223333.dkr.ecr.us-west-2.amazonaws.com/codecatalyst-eks-image-repo
(dans laValue:
propriété) avec le URI ECR référentiel Amazon dans lequel vous avez crééÉtape 3 : Création d'un référentiel ECR d'images Amazon. -
111122223333.dkr.ecr.us-west-2.amazonaws.com
(dans laRun: aws ecr
commande) avec le URI ECR référentiel Amazon sans le suffixe d'image (/codecatalyst-eks-image-repo
). -
codecatalyst-eks-deploy-role
avec le nom du rôle de déploiement que vous avez créé dansÉtape 5 : Création de AWS rôles. -
Les deux cas de
us-west-2
avec votre code AWS de région. Pour obtenir la liste des codes de région, consultez la section Points de terminaison régionaux dans le Références générales AWS.
Note
Si vous avez décidé de ne pas créer de rôles de génération et de déploiement, remplacez
codecatalyst-eks-build-role
andcodecatalyst-eks-deploy-role
avec le nom duCodeCatalystWorkflowDevelopmentRole-
rôle. Pour plus d’informations sur ce rôle, consultez Étape 5 : Création de AWS rôles.spaceName
-
-
(Facultatif) Choisissez Valider pour vous assurer que le YAML code est valide avant de le valider.
-
Choisissez Commit (Valider).
-
Dans la boîte de dialogue du flux de travail de validation, entrez les informations suivantes :
-
Pour le message de validation, supprimez le texte et entrez :
Add first workflow
-
Pour Repository, choisissez
codecatalyst-eks-source-repository
. -
Pour Nom de la branche, choisissez main.
-
Choisissez Commit (Valider).
Vous venez de créer un flux de travail. L'exécution d'un flux de travail démarre automatiquement en raison du déclencheur défini en haut du flux de travail. Plus précisément, lorsque vous avez validé (et transféré) le
workflow.yaml
fichier dans votre référentiel source, le déclencheur a lancé l'exécution du flux de travail. -
Pour consulter la progression de l'exécution du flux de travail
-
Dans le volet de navigation de la CodeCatalyst console, choisissez CI/CD, puis Workflows.
-
Choisissez le flux de travail que vous venez de créer,
codecatalyst-eks-workflow
. -
Choisissez BuildBackendde voir la progression de la construction.
-
Choisissez DeployToEKSde voir la progression du déploiement.
Pour plus d'informations sur l'affichage des détails des exécutions, consultezAfficher le statut et les détails de l'exécution du flux de travail.
Pour vérifier le déploiement
Ouvrez la EC2 console Amazon à l'adresse https://console.aws.amazon.com/ec2/
. -
Sur la gauche, vers le bas, choisissez Load Balancers.
-
Sélectionnez l'équilibreur de charge créé dans le cadre de votre déploiement Kubernetes. Si vous ne savez pas quel équilibreur de charge choisir, recherchez les balises suivantes sous l'onglet Tags :
-
kubernetes.io/service-name
-
kubernetes.io/cluster/ekstutorialcluster
-
-
Une fois le bon équilibreur de charge sélectionné, cliquez sur l'onglet Description.
-
Copiez et collez la valeur DNSdu nom dans la barre d'adresse de votre navigateur.
Le « Hello, World ! » Une page Web apparaît dans votre navigateur, indiquant que vous avez correctement déployé votre application.
Étape 9 : Apportez une modification à vos fichiers source
Dans cette section, vous allez modifier le index.html
fichier dans votre référentiel source. Cette modification oblige le flux de travail à créer une nouvelle image Docker, à l'étiqueter avec un ID de validation, à la transmettre à Amazon ECR et à la déployer sur AmazonECS.
Pour modifier le fichier index.html
-
Accédez à votre environnement de développement.
-
À l'invite du terminal, accédez à votre référentiel source :
cd /projects/codecatalyst-eks-source-repository
-
Tirez les dernières modifications du flux de travail :
git pull
-
Ouvrir
codecatalyst-eks-source-repository/public-html/index.html
. -
À la ligne 14, remplacez le
Hello, World!
texte parTutorial complete!
. -
Ajoutez, validez et envoyez :
git add . git commit -m "update index.html title" git push
L'exécution d'un flux de travail démarre automatiquement.
-
(Facultatif) Entrez :
git show HEAD
Notez l'ID de validation associé à la
index.html
modification. Cet ID de validation sera associé à l'image Docker qui sera déployée par le flux de travail que vous venez de démarrer. -
Suivez la progression du déploiement :
-
Dans le volet de navigation de la CodeCatalyst console, choisissez CI/CD, puis Workflows.
-
Choisissez
codecatalyst-eks-workflow
d'afficher la dernière édition. -
Choisissez BuildBackend, et DeployToEKSpour voir la progression de l'exécution du flux de travail.
-
-
Vérifiez que votre application a été mise à jour, comme suit :
Ouvrez la EC2 console Amazon à l'adresse https://console.aws.amazon.com/ec2/
. -
Sur la gauche, vers le bas, choisissez Load Balancers.
-
Sélectionnez l'équilibreur de charge créé dans le cadre de votre déploiement Kubernetes.
-
Copiez et collez la valeur DNSdu nom dans la barre d'adresse de votre navigateur.
Le « Tutoriel terminé ! » Une page Web apparaît dans votre navigateur, indiquant que vous avez déployé avec succès une nouvelle version de votre application.
-
(Facultatif) Dans AWS, passez à la ECR console Amazon et vérifiez que la nouvelle image Docker a été étiquetée avec l'ID de validation indiqué à l'étape 7 de cette procédure.
Nettoyage
Vous devez nettoyer votre environnement afin de ne pas être facturé inutilement pour les ressources de stockage et de calcul utilisées dans ce didacticiel.
Pour nettoyer
-
Supprimez votre cluster :
-
Dans le terminal Dev Environment, entrez :
eksctl delete cluster --region=
us-west-2
--name=codecatalyst-eks-cluster
Où :
-
us-west-2
est remplacé par votre région. -
codecatalyst-eks-cluster
est remplacé par le nom du cluster que vous avez créé.
Après 5 à 10 minutes, le cluster et les ressources associées sont supprimés, y compris, mais sans s'y limiter, les AWS CloudFormation piles, les groupes de nœuds (sur AmazonEC2) et les équilibreurs de charge.
-
Important
Si la
eksctl delete cluster
commande ne fonctionne pas, vous devrez peut-être actualiser vos AWS informations d'identification ou voskubectl
informations d'identification. Si vous n'êtes pas sûr des informations d'identification à actualiser, AWS actualisez-les d'abord. Pour actualiser vos AWS informations d'identification, consultezComment corriger les erreurs « Impossible de localiser les informations d'identification » et ExpiredToken « » ?. Pour actualiser voskubectl
informations d'identification, consultezComment corriger les erreurs « Impossible de se connecter au serveur » ?. -
-
Dans la AWS console, nettoyez comme suit :
-
Dans AmazonECR, supprimez
codecatalyst-eks-image-repo
. -
Dans IAM Identity Center, supprimez :
-
codecatalyst-eks-user
-
codecatalyst-eks-permission-set
-
-
DansIAM, supprimez :
-
codecatalyst-eks-build-role
-
codecatalyst-eks-deploy-role
-
codecatalyst-eks-build-policy
-
codecatalyst-eks-deploy-policy
-
-
-
Dans la CodeCatalyst console, nettoyez comme suit :
-
Supprimer
codecatalyst-eks-workflow
. -
Supprimer
codecatalyst-eks-environment
. -
Supprimer
codecatalyst-eks-source-repository
. -
Supprimez votre environnement de développement.
-
Supprimer
codecatalyst-eks-project
.
-
Dans ce didacticiel, vous avez appris à déployer une application sur un EKS service Amazon à l'aide d'un CodeCatalyst flux de travail et d'une action de cluster Deploy to Kubernetes.