Accédez à des applications de conteneur en privé sur Amazon EKS à l'aide d'AWS PrivateLink et d'un Network Load Balancer - Recommandations AWS

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.

Accédez à des applications de conteneur en privé sur Amazon EKS à l'aide d'AWS PrivateLink et d'un Network Load Balancer

Créée par Kirankumar Chandrashekar (AWS)

Environnement : Production

Technologies : conteneurs et microservices DevOps ; modernisation ; sécurité, identité, conformité

Charge de travail : toutes les autres charges de travail

Services AWS : Amazon EKS ; Amazon VPC

Ce modèle décrit comment héberger en privé une application de conteneur Docker sur Amazon Elastic Kubernetes Service (Amazon EKS) derrière un Network Load Balancer, et comment accéder à l'application via AWS. PrivateLink Vous pouvez ensuite utiliser un réseau privé pour accéder en toute sécurité aux services sur le cloud Amazon Web Services (AWS). 

Le cluster Amazon EKS exécutant les applications Docker, avec un Network Load Balancer sur le front-end, peut être associé à un point de terminaison de cloud privé virtuel (VPC) pour un accès via AWS. PrivateLink Ce service de point de terminaison VPC peut ensuite être partagé avec d'autres VPC en utilisant leurs points de terminaison VPC.

La configuration décrite par ce modèle est un moyen sécurisé de partager l'accès aux applications entre les VPC et les comptes AWS. Il ne nécessite aucune configuration de connectivité ou de routage particulière, car la connexion entre les comptes client et fournisseur se fait sur le backbone mondial d'AWS et ne traverse pas l'Internet public.

Prérequis

  • Docker, installé et configuré sous Linux, macOS ou Windows.

  • Une application qui s'exécute sur Docker.

  • Un compte AWS actif.

  • Interface de ligne de commande AWS (AWS CLI) version 2, installée et configurée sous Linux, macOS ou Windows.

  • Un cluster Amazon EKS existant avec des sous-réseaux privés balisés et configuré pour héberger des applications. Pour plus d'informations, consultez la section Balisage des sous-réseaux dans la documentation Amazon EKS. 

  • Kubectl, installé et configuré pour accéder aux ressources de votre cluster Amazon EKS. Pour plus d'informations, consultez la section Installation de kubectl dans la documentation Amazon EKS. 

Utilisez PrivateLink un Network Load Balancer pour accéder à une application dans un conteneur Amazon EKS.

Pile technologique

  • Amazon EKS

  • AWS PrivateLink

  • Network Load Balancer

Automatisation et mise à l'échelle

  • Les manifestes Kubernetes peuvent être suivis et gérés sur un référentiel basé sur Git (par exemple, sur AWS CodeCommit), et déployés en utilisant l'intégration continue et la livraison continue (CI/CD) dans AWS. CodePipeline 

  • Vous pouvez utiliser AWS CloudFormation pour créer ce modèle en utilisant l'infrastructure en tant que code (IaC).

  • AWS CLI — AWS Command Line Interface (AWS CLI) est un outil open source qui vous permet d'interagir avec les services AWS à l'aide de commandes dans votre shell de ligne de commande.

  • Elastic Load Balancing — Elastic Load Balancing distribue le trafic applicatif ou réseau entrant sur plusieurs cibles, telles que les instances, les conteneurs et les adresses IP d'Amazon Elastic Compute Cloud (Amazon EC2), dans une ou plusieurs zones de disponibilité.

  • Amazon EKS — Amazon Elastic Kubernetes Service (Amazon EKS) est un service géré que vous pouvez utiliser pour exécuter Kubernetes sur AWS sans avoir à installer, exploiter et gérer votre propre plan de contrôle ou vos propres nœuds Kubernetes.

  • Amazon VPC — Amazon Virtual Private Cloud (Amazon VPC) vous aide à déployer des ressources AWS dans un réseau virtuel que vous avez défini.

  • Kubectl — Kubectl est un utilitaire de ligne de commande permettant d'exécuter des commandes sur des clusters Kubernetes.

TâcheDescriptionCompétences requises

Créez le fichier manifeste de déploiement de Kubernetes.

Créez un fichier manifeste de déploiement en modifiant le fichier d'exemple suivant en fonction de vos besoins.

apiVersion: apps/v1 kind: Deployment metadata: name: sample-app spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: public.ecr.aws/z9d2n7e1/nginx:1.19.5 ports: - name: http containerPort: 80

Remarque : Il s'agit d'un exemple de fichier de configuration NGINX déployé à l'aide de l'image Docker NGINX. Pour plus d'informations, consultez Comment utiliser l'image officielle de NGINX Docker dans la documentation Docker.

DevOps ingénieur

Déployez le fichier manifeste de déploiement de Kubernetes.

Exécutez la commande suivante pour appliquer le fichier manifeste de déploiement à votre cluster Amazon EKS :

kubectl apply –f <your_deployment_file_name> 

DevOps ingénieur

Créez le fichier manifeste du service Kubernetes.

Créez un fichier manifeste de service en modifiant le fichier d'exemple suivant en fonction de vos besoins.

apiVersion: v1 kind: Service metadata: name: sample-service annotations: service.beta.kubernetes.io/aws-load-balancer-type: nlb service.beta.kubernetes.io/aws-load-balancer-internal: "true" spec: ports: - port: 80 targetPort: 80 protocol: TCP type: LoadBalancer selector: app: nginx

Important : Assurez-vous d'avoir inclus les éléments suivants annotations pour définir un Network Load Balancer interne :

service.beta.kubernetes.io/aws-load-balancer-type: nlb service.beta.kubernetes.io/aws-load-balancer-internal: "true"
DevOps ingénieur

Déployez le fichier manifeste du service Kubernetes.

Exécutez la commande suivante pour appliquer le fichier manifeste du service à votre cluster Amazon EKS :

kubectl apply -f <your_service_file_name>

DevOps ingénieur
TâcheDescriptionCompétences requises

Enregistrez le nom du Network Load Balancer.

Exécutez la commande suivante pour récupérer le nom du Network Load Balancer :

kubectl get svc sample-service -o wide

Enregistrez le nom du Network Load Balancer, qui est requis pour créer un point de PrivateLink terminaison AWS.

DevOps ingénieur

Créez un point de PrivateLink terminaison AWS.

Connectez-vous à l'AWS Management Console, ouvrez la console Amazon VPC, puis créez un point de terminaison AWS PrivateLink . Associez ce point de terminaison au Network Load Balancer pour mettre l'application à la disposition privée des clients. Pour plus d'informations, consultez les services de point de terminaison VPC PrivateLink (AWS) dans la documentation Amazon VPC.

Important : si le compte client nécessite l'accès à l'application, l'ID de compte AWS du compte consommateur doit être ajouté à la liste des principaux autorisés pour la configuration du point de PrivateLink terminaison AWS. Pour plus d'informations, consultez la section Ajouter et supprimer des autorisations pour votre service de point de terminaison dans la documentation Amazon VPC.

Administrateur du cloud

Créez un point de terminaison de VPC.

Sur la console Amazon VPC, choisissez Endpoint Services, puis Create Endpoint Service. Créez un point de terminaison VPC pour le point de terminaison AWS PrivateLink .

Le nom de domaine complet (FQDN) du point de terminaison VPC pointe vers le nom de domaine complet du point de terminaison AWS. PrivateLink Cela crée une interface réseau élastique vers le service de point de terminaison VPC à laquelle les points de terminaison DNS peuvent accéder. 

Administrateur du cloud