Comment configurer un accès public et privé au serveur API dans Amazon EKS ?

Dernière mise à jour : 12/06/2020

Je souhaite configurer un accès public et privé pour le point de terminaison du serveur API Kubernetes de mon cluster Amazon Elastic Kubernetes Service (Amazon EKS).

Brève description

Pour configurer un accès public et privé pour le point de terminaison du serveur API Kubernetes, vous devez :

  • comprendre le comportement par défaut du serveur API Kubernetes ;
  • comprendre le fonctionnement de l'accès privé au point de terminaison de l'API Amazon EKS ;
  • modifier l'accès au point de terminaison ;
  • comprendre le fonctionnement de la résolution DNS pour le point de terminaison de l'API Amazon EKS.

Si vous rencontrez des problèmes avec votre point de terminaison du serveur API Kubernetes, consultez Comment résoudre les problèmes liés au point de terminaison du serveur API de mon cluster Amazon EKS ?

Résolution

Comprendre le comportement par défaut du serveur API Kubernetes

Lorsque vous créez un nouveau cluster, les conditions suivantes sont remplies :

  • Amazon EKS crée un point de terminaison pour le serveur API Kubernetes géré qui est utilisé pour communiquer avec votre cluster.
  • Le point de terminaison du serveur API est public sur Internet.
  • L'accès au serveur API est sécurisé avec AWS Identity and Access Management (IAM) et le contrôle d'accès basé sur les rôles (RBAC, role-based access control)Kubernetes natif.

Comprendre le fonctionnement de l'accès privé au point de terminaison de l'API Amazon EKS

Pour maintenir la communication entre vos nœuds de travail et le serveur API au sein de votre Amazon Virtual Private Cloud (Amazon VPC), activez l'accès privé au point de terminaison de l'API Amazon EKS.

Lorsque vous activez l'accès privé au point de terminaison de l'API pour votre cluster, les conditions suivantes sont remplies :

  • Amazon EKS crée en votre nom une zone hébergée privée Amazon Route 53, puis l'associe uniquement au VPC de votre cluster.
  • La zone hébergée privée est gérée par Amazon EKS et n'apparaît pas dans les ressources Route 53 de votre compte.

Les clusters configurés pour n'autoriser qu'un accès privé sont seulement accessibles depuis ces emplacements :

  • VPC où résident les nœuds de travail
  • Réseaux appairés au VPC du cluster Amazon EKS
  • Un réseau connecté au VPC du cluster Amazon EKS via AWS Direct Connect ou un réseau privé virtuel (VPN, virtual private network)

Comprendre le fonctionnement de la résolution DNS pour le point de terminaison de l'API Amazon EKS

Si public = vrai et privé = faux, le point de terminaison de l'API Amazon EKS est accessible n'importe où depuis Internet. Il s'agit du comportement par défaut d'un cluster Amazon EKS. Vous pouvez également limiter l'accès depuis l'interface de ligne de commande AWS (AWS CLI).

Si public = vrai et privé = vrai, le point de terminaison de l'API Amazon EKS est accessible et résolvable sur Internet et depuis les réseaux connectés du VPC. Les réseaux connectés incluent DX, un VPN ou une connexion appairée de VPC. Si vous accédez au point de terminaison depuis le même VPC, le point de terminaison est résolu en IP interne. Toutefois, si vous accédez au point de terminaison via les réseaux connectés tels que DX, un VPN ou une connexion appairée de VPC, le point de terminaison de l'API se résout en adresse IP publique.

Si public = faux et privé = vrai, tout le trafic vers le serveur API du cluster Amazon EKS doit provenir de votre VPC ou de ses réseaux connectés. Le point de terminaison du serveur API n'est pas accessible sur Internet. Le point de terminaison du serveur API du cluster est résolu par les serveurs DNS publics en une adresse IP privée du VPC.

Modifier l'accès au point de terminaison

Pour mettre à jour l'accès privé sur un cluster dont l'accès au point de terminaison de l'API privé est désactivé (défini sur vrai), exécutez la commande de l'interface de ligne de commande AWS suivante :

aws eks update-cluster-config \
    --region region \
    --name dev \
    --resources-vpc-config endpointPublicAccess=true,endpointPrivateAccess=true

Pour désactiver l'accès API public au point de terminaison, définissez endpointPublicAccess sur faux.