Déploiement CI-CD sur AWS EKS par GitHub Actions / Blogs / Ferfient

GitHub Actions est un outil CI-CD open source qui est une fonctionnalité étendue de GitHub. Il automatise les flux de travail logiciels avec CI-CD de classe mondiale. Construire, tester et déployer votre code à partir de GitHub.
Comment Les actions GitHub fonctionnent
- Flux de travail: Les workflows sont des processus automatisés définis dans le fichier YAML et déclenchés sur un événement comme Push.
- Événements: Les événements sont des opérations qui modifient le référentiel, comme les opérations de traction et les opérations push.
- Emplois: Dans le workflow, nous pouvons définir un ou plusieurs emplois, tels qu’un emploi de build, de test ou de déploiement.
- Actes: Les actions définissent les entrées, les sorties et les points d’entrée principaux du workflow.
Kubernetes est un outil d’orchestration de conteneur open source qui automatise le déploiement, l’échelle et la gestion des applications conteneurisées. Kubernetes a été inventé par Google en 2013 et a été remis à CNCF (Cloud Native Computing Foundation), qui fait partie de la Fondation Linux. Cependant, Kubernetes n’est pas géré par une seule entité; Au lieu de cela, il s’agit d’une contribution d’une communauté mondiale ou de développeurs.
EKS est un service AWS Kubernetes entièrement géré qui vous permet d’exécuter votre application sur des infrastructures sans serveur. Il nécessite l’installation et l’exploitation du cluster Kubernetes, ce qui peut prendre du temps et complexe. Au lieu de configurer le cluster Kubernetes, EKS vous permet de vous concentrer sur le déploiement de l’application.
Quels problèmes sont résolus par l’outil d’orchestration des conteneurs
- Déploiement manuel: Le déploiement manuel des applications dans plusieurs environnements, la surveillance des infrastructures et la configuration du réseau peuvent être résolus par des outils d’orchestration des conteneurs.
- Échelle: Kubernetes prend en charge la mise à l’échelle automatique, qui évolue les propriétés des infrastructures comme le CPU RAM, etc.
- Gestion du cycle de vie de l’application: Gestion des mises à jour des applications, des déploiements, des reculs et de la récupération de défaillance d’une manière fiable, cohérente et efficace.
- Surveillance et dépannage: L’outil d’orchestration des conteneurs vous permet de surveiller la santé de l’application et de dépanner les échecs de débogage.
Comment Kubernetes résout ces problèmes
- Configuration: La configuration déclarative peut facilement permettre à l’utilisateur de définir l’état souhaité de l’application via le fichier YAML.
- Orchestration de conteneurs: Automatise le déploiement, la mise à l’échelle et la vérification de la santé des conteneurs, ce qui signifie que K8S automatise le cycle de vie des conteneurs.
- Mécanismes d’auto-guérison: K8S a également une propriété comme l’auto-guérison, ce qui signifie que supposons que l’un des conteneurs échoue pour quelque raison que ce soit. Automatiquement, un nouveau conteneur peut commencer à la place d’un conteneur défaillant.
- Évolutivité: Il permet la mise à l’échelle horizontale de l’application en ajoutant ou en supprimant les pods en fonction de la demande d’application.
Schéma d’architecture

Dans ce diagramme d’architecture, nous avons configuré le référentiel GIT et téléchargé les données d’application avec le dossier .github / workflow.
- .github /Flux de travail: Dans ce dossier, nous avons mentionné notre flux de travail CI-CD dans le fichier YAML (github-actions-ci.yml)
Lorsque nous poussons les modifications à la branche principale, le workflow GitHub Actions déclenche et exécute toutes les commandes mentionnées dans le workflow. - IAM Access: Nous avons donné accès aux actions GitHub, qui connecteront les services AWS Cloud, principalement AWS ECR et AWS EKS.
- Amazon ECR: Il s’agit d’un service de registre de conteneurs. Lorsque le flux de travail se déclenche, l’image Docker est stockée dans le référentiel ECR.
- Amazon ex: EKS Cluster a été créé dans Amazon EKS Service, un service de calcul. EKS tire l’image Docker d’ECR et le déploie sur le cluster EKS.
Nous avons reçu la notification par e-mail pour la réussite du flux de travail.
Étapes d’installations
Étape 1: Créer un cluster EKS
Pour créer un cluster, nous devons lancer l’instance EC2 dans la région US-East-2.
Pour créer un cluster et fournir un accès, suivez les instructions dans le lien ci-dessous:
https://github.com/prafulitankar/github-action-eks/blob/main/.github/workflows/eks-cluster-setup.md
Étape 2: Créer un utilisateur IAM
Créez un utilisateur IAM et fournissez l’accès ECR et EKS à l’utilisateur, qui est communiqué à GitHub et AWS Cloud.
Générez une clé d’accès et une clé secrète pour cet utilisateur particulier, et n’oubliez pas de le stocker quelque part.
Étape 3: Créez un repo ECR dans US-East-2
N’oubliez pas que c’est là que nous avons stocké des images Docker.
Étape 4: Créer un référentiel GitHub
Vous pouvez cloner mon référentiel GitHub: https://github.com/prafulitankar/github-action-eks.git
Étape 5: Configurer des secrets de référentiel
La clé d’accès de l’utilisateur IAM et la clé secrète communiquera entre GitHub Action et AWS Cloud.
Étape 6: Activer les notifications par e-mail
Nous recevrons une notification par e-mail à chaque poussée de la branche principale de l’adresse e-mail mentionnée.
Étape 7: Déploier la demande
Déploiement du déclencheur d’application Une fois que le code a poussé dans la branche principale.
Un accès IAM est donné au niveau du cluster.
Une fois que nous aurons déployé avec succès l’application sur EKS Cluster, nous recevrons une notification par e-mail.
Sortir:

Conclusion
GitHub est un CVS qui nous permet de stocker le code source et les actions GitHub, une fonctionnalité étendue de GitHub qui fournit la fonction CI-CD pour le déploiement des applications. Nous avons déployé le code source sur EKS à l’aide des actions GitHub.
Source link