Création d'unkubeconfigpour Amazon EKS - Amazon EKS

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.

Création d'unkubeconfigpour Amazon EKS

Dans cette section, vous allez créer un fichier kubeconfig pour votre cluster (ou mettre à jour un fichier existant).

Cette section propose deux procédures pour créer ou mettre à jour votre kubeconfig. Vous pouvez rapidement créer ou mettre à jour un kubeconfig avec la commande AWS CLI update-kubeconfig automatiquement à l'aide de AWS CLI, ou vous pouvez créer un kubeconfig manuellement à l'aide de AWS CLI ou aws-iam-authenticator.

Amazon EKS utilise leaws eks get-token, disponible dans la version 1.16.156 ou ultérieure de la commandeAWS CLIou leAWSAuthentificateur IAM pour KubernetesaveckubectlPour l'authentification du cluster. Si vous avez installé l'interfaceAWS CLIsur votre système, puis par défaut leAWSIAM Authenticator pour Kubernetes utilise les mêmes informations d'identification que celles renvoyées à l'aide de la commande suivante :

aws sts get-caller-identity

Pour plus d'informations, consultez Configuration de l'AWS CLI dans le Guide de l'utilisateur de l'AWS Command Line Interface.

Créer kubeconfig automatiquement

Pour créer votre fichier kubeconfig à l'aide de l'AWS CLI

  1. Vérifiez que vous utilisez la version 1.16.156 ou ultérieure de la versionAWS CLIInstallé. Pour installer ou mettre à niveau l'interfaceAWS CLI, voirInstallation du kitAWS CLIdans leAWS Command Line InterfaceGuide de l'utilisateur.

    Note

    La version Python de votre système doit être la version 2.7.9 ou une version ultérieure. Sinon, vous recevezhostname doesn't matchErreurs avecAWS CLIvers Amazon EKS.

    Vous pouvez vérifier votre version de l'AWS CLI avec la commande suivante :

    aws --version
    Important

    Gestionnaires de package telsyum,apt-get, ou Homebrew pour macOS sont souvent derrière plusieurs versions deAWS CLI. Pour vous assurer de disposer de la dernière version, consultezInstallation du kitAWS CLIdans leAWS Command Line InterfaceGuide de l'utilisateur.

  2. Utilisez la commande AWS CLI update-kubeconfig pour créer ou mettre à jour votre kubeconfig pour votre cluster.

    • Par défaut, le fichier de configuration en résultant est créé sur le chemin kubeconfig par défaut (.kube/config) dans votre répertoire de base ou fusionné avec un kubeconfig existant à cet emplacement. Vous pouvez spécifier un autre chemin avec l'option --kubeconfig.

    • Vous pouvez spécifier un ARN de rôle IAM avec l'option--role-arnà utiliser pour l'authentification lorsque vous émettezkubectlCommandes. Sinon, l'entité IAM dans votreAWS CLIou de la chaîne d'informations d'identification du kit SDK est utilisée. Vous pouvez consulter votre AWS CLI ou identité SDK par défaut en exécutant la commande aws sts get-caller-identity.

    • Pour plus d'informations, consultez la page d'aide avec leaws eks update-kubeconfig helpou consultezupdate-kubeconfigdans leAWS CLIRéférence des commandes.

    Note

    Pour exécuter la commande suivante, vous devez avoir l'autorisation d'utiliser l'interfaceeks:DescribeClusteravec le cluster que vous spécifiez. Pour de plus amples informations, veuillez consulter Exemples de stratégies basées sur l'identité Amazon EKS .

    aws eks --region <region-code> update-kubeconfig --name <cluster_name>
  3. Testez votre configuration.

    kubectl get svc
    Note

    Si vous recevez d'autres erreurs concernant les types d'autorisation ou de ressource, veuillez consulter Accès non autorisé ou refusé (kubectl) dans la section relative à la résolution des problèmes.

    Sortie :

    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE svc/kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 1m

Créer kubeconfig manuellement

Pour créer votre fichier kubeconfig manuellement

  1. Créez le répertoire ~/.kube par défaut s'il n'existe pas déjà.

    mkdir -p ~/.kube
  2. Ouvrez votre éditeur de texte préféré et copiez dans l'éditeur l'un des blocs de code kubeconfig ci-dessous, en fonction de la méthode de jeton client souhaitée.

    • Pour utiliserAWS CLI aws eks get-token(nécessite la version 1.16.156 ou ultérieure de la commandeAWS CLI) :

      apiVersion: v1 clusters: - cluster: server: <endpoint-url> certificate-authority-data: <base64-encoded-ca-cert> name: kubernetes contexts: - context: cluster: kubernetes user: aws name: aws current-context: aws kind: Config preferences: {} users: - name: aws user: exec: apiVersion: client.authentication.k8s.io/v1alpha1 command: aws args: - "eks" - "get-token" - "--cluster-name" - "<cluster-name>" # - "--role-arn" # - "<role-arn>" # env: # - name: AWS_PROFILE # value: "<aws-profile>"
    • Pour utiliserAWSAuthentificateur IAM pour Kubernetes :

      apiVersion: v1 clusters: - cluster: server: <endpoint-url> certificate-authority-data: <base64-encoded-ca-cert> name: kubernetes contexts: - context: cluster: kubernetes user: aws name: aws current-context: aws kind: Config preferences: {} users: - name: aws user: exec: apiVersion: client.authentication.k8s.io/v1alpha1 command: aws-iam-authenticator args: - "token" - "-i" - "<cluster-name>" # - "-r" # - "<role-arn>" # env: # - name: AWS_PROFILE # value: "<aws-profile>"
  3. Remplacez le<endpoint-url>par l'URL du point de terminaison créée pour votre cluster.

  4. Remplacez le<base64-encoded-ca-cert>avec lecertificateAuthority.dataqui a été créée pour votre cluster.

  5. Remplacez le<cluster-name>par votre nom de cluster.

  6. (Facultatif) Pour assumer un rôle IAM pour effectuer des opérations de cluster (au lieu du rôle par défaut)AWSchaîne de fournisseurs d'informations d'identification, supprimez le commentaire-rou--roleand<role-arn>et remplacez un ARN de rôle IAM à utiliser avec votre utilisateur.

  7. (Facultatif) Pour toujours utiliser un nom spécifiqueAWSprofil d'identification (au lieu de la valeur par défautAWSchaîne de fournisseurs d'informations d'identification), supprimez le commentaire deenvlignes et substitut<aws-profile>avec le nom du profil à utiliser.

  8. Enregistrez le fichier dans le dossier kubectl par défaut, avec le nom du cluster dans le nom du fichier. Par exemple, si le nom de votre cluster est<devel>, enregistrez le fichier dans~/.kube/config-<devel>.

  9. Ajoutez ce chemin de fichier à la variable d'environnement KUBECONFIG afin que la commande kubectl sache où trouver la configuration de votre cluster.

    • Pour les shells Bash sur macOS ou Linux :

      export KUBECONFIG=$KUBECONFIG:~/.kube/config-<devel>
    • Pour PowerShell sur Windows :

      $ENV:KUBECONFIG="{0};{1}" -f $ENV:KUBECONFIG, "$ENV:userprofile\.kube\config-<devel>"
  10. (Facultatif) Ajoutez la configuration à votre fichier d'initialisation du shell de façon à ce qu'il soit configuré lorsque vous ouvrez un shell.

    • Pour les shells Bash sur macOS :

      echo 'export KUBECONFIG=$KUBECONFIG:~/.kube/config-<devel>' >> ~/.bash_profile
    • Pour les shells Bash sur Linux :

      echo 'export KUBECONFIG=$KUBECONFIG:~/.kube/config-<devel>' >> ~/.bashrc
    • Pour PowerShell sur Windows :

      [System.Environment]::SetEnvironmentVariable('KUBECONFIG', $ENV:KUBECONFIG, 'Machine')
  11. Testez votre configuration.

    kubectl get svc
    Note

    Si vous recevez d'autres erreurs concernant les types d'autorisation ou de ressource, veuillez consulter Accès non autorisé ou refusé (kubectl) dans la section relative à la résolution des problèmes.

    File d'attente:

    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE svc/kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 1m