Accédez aux applications de conteneur en privé sur Amazon EKS à l'aide AWS PrivateLink 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 aux applications de conteneur en privé sur Amazon EKS à l'aide AWS PrivateLink 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

AWSservices : Amazon EKS ; Amazon VPC

Ce modèle décrit comment héberger en privé une application de conteneur Docker sur Amazon Elastic Kubernetes Service EKS (Amazon) derrière un Network Load Balancer, et comment accéder à l'application en utilisant. 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 EKS cluster Amazon 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 y accéder. AWS PrivateLink Ce service de VPC point de terminaison peut ensuite être partagé avec d'autres utilisateurs VPCs en utilisant leurs VPC points de terminaison.

La configuration décrite par ce modèle est un moyen sécurisé de partager l'accès aux applications entre VPCs les AWS comptes. Il ne nécessite aucune configuration de connectivité ou de routage particulière, car la connexion entre les comptes du consommateur et du fournisseur se fait sur le AWS backbone mondial 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.

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

  • Un EKS cluster Amazon 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 AmazonEKS. 

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

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

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, on AWS CodeCommit), et déployés en utilisant l'intégration continue et la livraison continue (CI/CD) dans. AWS CodePipeline 

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

  • AWSCLI— L'interface de ligne de AWS commande (AWSCLI) est un outil open source qui vous permet d'interagir avec les AWS services à l'aide de commandes dans votre interface 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 Amazon Elastic Compute Cloud (AmazonEC2), les conteneurs et les adresses IP, dans une ou plusieurs zones de disponibilité.

  • Amazon EKS — Amazon Elastic Kubernetes Service (EKSAmazon) est un service géré que vous pouvez utiliser pour exécuter AWS Kubernetes 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 (AmazonVPC) vous aide à lancer AWS des ressources 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 NGINX exemple de fichier de configuration déployé à l'aide de l'image NGINX Docker. 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 EKS cluster Amazon :

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 EKS cluster Amazon :

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 nécessaire pour créer un AWS PrivateLink point de terminaison.

DevOps ingénieur

Créez un AWS PrivateLink point de terminaison.

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

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

Administrateur du cloud

Création d'un point de terminaison VPC

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

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

Administrateur du cloud