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éployez des charges de travail à partir de DevOps pipelines Azure vers des clusters Amazon EKS privés
Mahendra Ranasiddappa, Amazon Web Services
Récapitulatif
Ce modèle montre comment implémenter l'intégration continue et la livraison continue (CI/CD) à partir de DevOps pipelines Azure vers des clusters privés Amazon Elastic Kubernetes Service (Amazon EKS). Il répond à un défi critique auquel sont confrontées les entreprises qui améliorent leur niveau de sécurité en optant pour des points de terminaison de serveurs d'API privés pour leurs clusters Amazon EKS.
Un point de terminaison public expose le serveur d'API Kubernetes directement à Internet, ce qui crée une plus grande surface d'attaque que des acteurs malveillants pourraient potentiellement cibler. En passant à un point de terminaison privé, l'accès au plan de contrôle du cluster est limité au cloud privé virtuel (VPC) du client.
Bien que la transition d'un cluster Amazon EKS vers un point de terminaison d'API privé améliore considérablement la sécurité, elle pose des problèmes de connectivité pour les CI/CD plateformes externes telles qu'Azure DevOps. Le point de terminaison privé n'est accessible que depuis le VPC ou les réseaux pairs du cluster. Par conséquent, les DevOps agents Azure standard hébergés par Microsoft, opérant en dehors du réseau AWS privé, ne peuvent pas accéder directement au serveur d'API Kubernetes. Cela interrompt les flux de travail de déploiement classiques qui reposent sur des outils tels que kubectl ou Helm exécutés sur ces agents, car ils ne parviennent pas à établir de connexion avec le cluster.
Pour surmonter ce problème, ce modèle illustre une approche efficace en utilisant des DevOps agents Azure auto-hébergés au sein de clusters Amazon EKS privés. Cette solution offre une optimisation des coûts, une efficacité opérationnelle et une évolutivité supérieures tout en préservant les exigences de sécurité. Cette approche profite particulièrement aux entreprises qui cherchent à rationaliser leurs DevOps processus multicloud sans compromettre les performances ou la sécurité.
Conditions préalables et limitations
Prérequis
Un actif Compte AWS.
AWS Command Line Interface (AWS CLI) version 2.13.17 ou ultérieure, installée.
Un cluster Amazon EKS privé version 1.24 ou ultérieure créé, avec des autorisations pour créer des espaces de noms, des secrets et des déploiements.
Nœuds de travail dans un cluster Amazon EKS dotés d'une connectivité sortante à Internet afin que l' DevOps agent Azure qui s'exécute sur ces nœuds puisse se connecter au pool d' DevOps agents Azure.
GitHub compte créé
. Un DevOps projet Azure permettant de configurer les connexions de service, qui sont des connexions authentifiées entre Azure Pipelines et des services externes ou distants, a été créé
. La AWS Toolkit for Azure DevOps version 1.15 ou ultérieure installée pour le DevOps projet Azure décrit au point précédent. Pour les instructions d'installation, reportez-vous AWS Toolkit for Azure DevOps
à Visual Studio Marketplace.
Limites
Certains Services AWS ne sont pas disponibles du tout Régions AWS. Pour connaître la disponibilité par région, consultez la section AWS Services par région
. Pour des points de terminaison spécifiques, consultez Points de terminaison de service et quotas, puis choisissez le lien correspondant au service.
Architecture
Ce modèle crée ce qui suit :
Référentiel Amazon ECR : le référentiel Amazon Elastic Container Registry (Amazon ECR) stocke l'image Docker avec l' DevOps agent Azure et l'exemple d'application déployé.
Pool d' DevOps agents Azure : un pool d'agents DevOps auto-hébergé par Azure enregistre l'agent exécuté sur le cluster Amazon EKS privé.
Rôle IAM : rôle AWS Identity and Access Management (IAM) permettant à la connexion au service Azure de fournir l'accès requis à l'agent qui s'exécute sur un cluster Amazon EKS privé.
Connexion au DevOps service Azure : connexion au service dans un DevOps compte Azure pour utiliser le rôle IAM qui fournit l'accès requis pour que les tâches du pipeline puissent accéder Services AWS.
Le schéma suivant montre l'architecture du déploiement d'un DevOps agent Azure auto-hébergé sur un cluster Amazon EKS privé et du déploiement d'un exemple d'application sur le même cluster.

Le schéma suivant illustre le flux de travail suivant :
Déployez un DevOps agent Azure auto-hébergé en tant que déploiement au sein d'un cluster Amazon EKS.
Un DevOps agent Azure se connecte au pool d'agents sur un DevOps compte Azure à l'aide d'un jeton d'accès personnel (PAT) pour l'authentification.
Azure Pipelines configure un pipeline à déployer en utilisant le code d'un GitHub référentiel.
Le pipeline s'exécute sur l'agent à partir du pool d'agents configuré dans la configuration du pipeline. L' DevOps agent Azure obtient les informations relatives aux tâches du pipeline en interrogeant constamment le DevOps compte Azure.
L' DevOps agent Azure crée une image Docker dans le cadre de la tâche de pipeline et envoie l'image vers le référentiel Amazon ECR.
L' DevOps agent Azure déploie l'exemple d'application sur un cluster Amazon EKS privé dans un espace de noms appelé.
webapp
Outils
Outils
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 permet d'exécuter AWS Kubernetes sans avoir à installer ou à gérer votre propre plan de contrôle ou vos propres nœuds Kubernetes.
AWS Identity and Access Management (IAM) vous aide à gérer en toute sécurité l'accès à vos AWS ressources en contrôlant qui est authentifié et autorisé à les utiliser.
Autres outils
Docker
est un ensemble de produits de plateforme en tant que service (PaaS) qui utilisent la virtualisation au niveau du système d'exploitation pour fournir des logiciels dans des conteneurs. kubectl
est une interface de ligne de commande qui vous permet d'exécuter des commandes sur des clusters Kubernetes.
Référentiel de code
Le code de ce modèle est disponible dans le référentiel GitHub deploy-kubernetes-resources-to- amazon-eks-using-azure -devops
.
Bonnes pratiques
Pour Amazon EKS, consultez le guide des meilleures pratiques Amazon EKS.
Respectez le principe du moindre privilège et accordez les autorisations minimales requises pour effectuer une tâche. Pour plus d'informations, consultez les sections Accorder le moindre privilège et Bonnes pratiques en matière de sécurité dans la documentation IAM.
Épopées
Tâche | Description | Compétences requises |
---|---|---|
Trouvez le GUID de DevOps l'organisation Azure. | Connectez-vous à votre DevOps compte Azure, puis utilisez l'URL suivante pour trouver le GUID de l'organisation : | AWS DevOps |
Configurez un IdP dans le. Compte AWS | Pour configurer un fournisseur d'identité (IdP) dans le cadre Compte AWS d'une connexion au service Azure, procédez comme suit :
Pour plus de détails, consultez Comment créer une fédération AWS depuis Azure à DevOps l'aide d'OpenID Connect | AWS DevOps |
Créez une politique IAM dans le Compte AWS. | Pour créer une politique IAM afin de fournir les autorisations requises au rôle IAM utilisé par le DevOps pipeline Azure, procédez comme suit :
| AWS DevOps |
Créez un rôle IAM dans le Compte AWS. | Pour configurer un rôle IAM dans Compte AWS la connexion au service Azure, procédez comme suit :
Dans la politique, fournissez vos informations pour les espaces réservés suivants :
| AWS DevOps |
Créez une connexion de service dans le DevOps compte Azure. | Pour configurer une connexion au service Azure, procédez comme suit :
Pour plus de détails, consultez la section Créer une connexion de service | AWS DevOps |
Ajoutez le rôle IAM au fichier de configuration Amazon EKS. | Le rôle IAM doit disposer des autorisations nécessaires pour effectuer les opérations requises sur le cluster Amazon EKS. Comme il s'agit d'un rôle de pipeline, le rôle IAM doit être capable de gérer presque tous les types de ressources du cluster. Par conséquent, l'autorisation de Pour ajouter la configuration requise à Kubernetes, utilisez le code
Pour plus d'informations, consultez Comment Amazon EKS fonctionne avec IAM dans la documentation Amazon EKS. | AWS DevOps |
Tâche | Description | Compétences requises |
---|---|---|
Créez un pool d'agents auto-hébergé. | Pour configurer un pool d'agents auto-hébergé dans le DevOps compte Azure, procédez comme suit :
Pour plus de détails, consultez la section Création et gestion de pools d'agents |
Tâche | Description | Compétences requises |
---|---|---|
Créez un référentiel Amazon ECR. | Les images Docker utilisées pour déployer l' DevOps agent Azure et l'exemple d'application (
Pour plus de détails, consultez la section Création d'un référentiel privé Amazon ECR pour stocker des images dans la documentation Amazon ECR. | AWS DevOps |
Créez un Dockerfile pour créer l'agent Azure DevOps . | Créez un Dockerfile pour créer l'image Docker sur laquelle l'agent Azure DevOps est installé. Stockez le contenu suivant dans un fichier nommé
| AWS DevOps |
Créez un script pour l' DevOps agent Azure. | Pour créer le
| AWS DevOps |
Créez une image Docker avec l' DevOps agent Azure. | Pour créer une image Docker afin d'installer l' DevOps agent Azure, utilisez le Dockerfile que vous avez créé précédemment pour créer l'image. Dans le répertoire où le Dockerfile est stocké, exécutez les commandes suivantes :
Remplacez | AWS DevOps |
Tâche | Description | Compétences requises |
---|---|---|
Générez un jeton d'accès personnel Azure. | L'agent exécuté sur le cluster privé Amazon EKS a besoin d'un jeton d'accès personnel (PAT) afin de pouvoir s'authentifier auprès du DevOps compte Azure. Pour générer un PAT, procédez comme suit :
Pour plus de détails, voir Enregistrer un agent à l'aide d'un jeton d'accès personnel (PAT) | AWS DevOps |
Utilisez le fichier manifeste Kubernetes pour le déploiement de l'agent. | Pour déployer l' DevOps agent Azure sur le cluster privé Amazon EKS, copiez le fichier manifeste suivant et stockez-le sous le nom
Remplacez | AWS DevOps |
Déployez l'agent sur le cluster Amazon EKS privé. | Pour déployer l'agent Azure Devops sur le cluster privé Amazon EKS, utilisez la commande suivante :
| AWS DevOps |
Vérifiez que l'agent est en cours d'exécution. | Pour vérifier que l' DevOps agent Azure est en cours d'exécution, utilisez la commande suivante :
Le résultat attendu doit être similaire à ce qui suit :
Assurez-vous que la | AWS DevOps |
Vérifiez que l'agent est enregistré dans le pool d' DevOps agents Azure. | Pour vérifier que l'agent est déployé sur le cluster privé Amazon EKS et qu'il est enregistré dans le pool d'agents
Vous devriez voir un agent répertorié avec un statut en ligne, et le nom de l'agent doit commencer par azure-pipelines-agent-eks-*. | AWS DevOps |
Tâche | Description | Compétences requises |
---|---|---|
Ajoutez le référentiel d'exemples d'applications à votre GitHub compte. | Ajoutez le référentiel AWS d'échantillons suivant à votre GitHub compte : https://github.com/aws-samples/deploy-kubernetes-resources-to- amazon-eks-using-azure devops | AWS DevOps |
Créez un pipeline. | Pour créer un pipeline dans votre DevOps compte Azure, procédez comme suit :
| AWS DevOps |
Vérifiez que l'exemple d'application a été déployé. | Une fois le pipeline terminé, vérifiez le déploiement réussi de l'exemple d'application en vérifiant à la fois le référentiel Amazon ECR et le cluster Amazon EKS. Pour vérifier les artefacts dans le référentiel Amazon ECR, procédez comme suit :
Par exemple : Pour vérifier le déploiement sur le cluster privé Amazon EKS dans l'espace de noms
La sortie attendue est la suivante :
Remarque : s'il s'agit de votre première exécution de pipeline, vous devrez peut-être autoriser la connexion au service et le pool d'agents. Recherchez les demandes d'autorisation dans l'interface du DevOps pipeline Azure et approuvez-les pour continuer. | AWS DevOps |
Résolution des problèmes
Problème | Solution |
---|---|
Le pipeline échoue lorsque le nom du référentiel Amazon ECR ne correspond pas | L'exemple d'application s'attend à ce que le nom du référentiel Amazon ECR corresponde au Pour résoudre ce problème, renommez votre référentiel Amazon ECR en ou mettez à jour
|
Erreur : le cluster Kubernetes est inaccessible : le serveur a demandé au client de fournir des informations d'identification | Si vous rencontrez cette erreur à l'étape « Pull and Deploy Helm Chart » de votre pipeline Azure, la cause première provient généralement d'une configuration incorrecte des rôles IAM dans celui de Pour résoudre ce problème, vérifiez les points suivants :
|
Ressources connexes
AWS Blogs
Services AWS documentation
Documentation Microsoft