Creazione di un kubeconfig per Amazon EKS - Amazon EKS

Creazione di un kubeconfig per Amazon EKS

In questa sezione viene creato un file kubeconfig per il cluster (o ne viene aggiornato uno esistente).

Questa sezione offre due procedure per creare o aggiornare il file kubeconfig. È possibile creare o aggiornare rapidamente un file kubeconfig kubeconfig con il comando AWS CLI update-kubeconfig automaticamente utilizzando la AWS CLI, oppure è possibile creare un file kubeconfig manualmente utilizzando la AWS CLI o aws-iam-authenticator.

Amazon EKS usa il comando aws eks get-token, disponibile nella versione 1.16.156 o successiva della AWS CLI o dell'Autenticatore IAM AWS per Kubernetes con kubectl per l'autenticazione del cluster. Se si è installato la AWS CLI sul proprio sistema, per impostazione predefinita l'Autenticatore IAM AWS per Kubernetes utilizza le stesse credenziali che vengono restituite con il comando seguente:

aws sts get-caller-identity

Per ulteriori informazioni, consulta Configurazione della AWS CLI nella Guida per l'utente di AWS Command Line Interface.

Crea un file kubeconfig automaticamente

Per creare il file kubeconfig con la AWS CLI

  1. Verificare di avere installato la versione 1.16.156 o successiva della AWS CLI. Per installare AWS CLI, consultare Installazione della AWS CLI nella Guida per l'utente di AWS Command Line Interface.

    Nota

    La versione Python del sistema deve essere 2.7.9 o successiva. In caso contrario, si riceveranno errori hostname doesn't match con chiamate AWS CLI a Amazon EKS.

    È possibile verificare la versione della AWS CLI con il seguente comando:

    aws --version
    Importante

    I programmi di gestione dei pacchetti, come yum, apt-get, o Homebrew per macOS sono spesso aggiornati a versioni precedenti della AWS CLI. Per verificare di disporre della versione più recente, consultare Installazione della AWS CLI nella Guida per l'utente di AWS Command Line Interface.

  2. Crea o aggiorna un file kubeconfig per il cluster. Sostituire i valori di esempio con i propri valori.

    • Per impostazione predefinita, il file di configurazione risultante viene creato nel percorso kubeconfig predefinito (.kube/config) nella home directory o unito a un file kubeconfig esistente in quel percorso. È possibile specificare un altro percorso con l'opzione --kubeconfig.

    • È possibile specificare un ARN del ruolo IAM con l'opzione --role-arn da utilizzare per l'autenticazione quando si inviano i comandi kubectl. In caso contrario, viene utilizzata l'entità IAM nella AWS CLI di default o la catena di credenziali SDK. È possibile visualizzare la identità SDK o AWS CLI predefinita eseguendo il comando aws sts get-caller-identity.

    • Per ulteriori informazioni, consultare la pagina di aiuto con il comando aws eks update-kubeconfig help o consultare update-kubeconfig nel AWS CLI Command Reference.

    Nota

    Per eseguire il comando seguente è necessaria l'autorizzazione per utilizzare l'operazione API eks:DescribeCluster con il cluster specificato. Per ulteriori informazioni, consulta . Esempi di policy basate su identità Amazon EKS.

    aws eks update-kubeconfig --region region-code --name cluster-name
  3. Prova la configurazione.

    kubectl get svc
    Nota

    Se ricevi qualsiasi altro errore di tipo risorsa o autorizzazione, consulta Accesso negato o non autorizzato (kubectl) nella sezione relativa alla risoluzione dei problemi.

    Output:

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

Crea kubeconfig manualmente

Per creare manualmente il file kubeconfig

  1. Recuperare l'endpoint per il cluster. Sostituire i valori di esempio con i propri valori per il cluster.

    aws eks describe-cluster \ --region region-code \ --name my-cluster \ --query "cluster.endpoint" \ --output text

    Output

    https://E0EED553387FD639757D97A76EXAMPLE.gr7.region-code.eks.amazonaws.com
  2. Recupera i dati del certificato con codifica Base64 necessari per comunicare con il cluster.

    aws eks describe-cluster \ --region region-code \ --name my-cluster \ --query "cluster.certificateAuthority.data" \ --output text

    L'output è una stringa molto lunga.

  3. Crea la directory predefinita ~/.kube se non esiste già.

    mkdir -p ~/.kube
  4. Copia il contenuto da uno dei seguenti blocchi di codice (a seconda del metodo di token client preferito) con l'editor di testo.

    • Per utilizzare il comando AWS CLI aws eks get-token (richiede la versione 1.16.156 o successiva della AWS CLI).

      apiVersion: v1 clusters: - cluster: server: endpoint certificate-authority-data: certificate-data 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"
    • Per utilizzare Autenticatore IAM AWS per Kubernetes:

      apiVersion: v1 clusters: - cluster: server: endpoint certificate-authority-data: certificate-data 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"
  5. Sostituisci endpoint con l'endpoint ottenuto in un passaggio precedente.

  6. Sostituisci dati del certificato con i dati del certificato con codifica Base64 ottenuti in un passaggio precedente.

  7. Sostituisci cluster-name> con il nome del cluster.

  8. (Facoltativo) Per assumere un ruolo IAM per eseguire le operazioni del cluster, invece della catena di provider di credenziali AWS di default, elimina il commento dalle righe -r e role-arn e sostituiscile con un ARN del ruolo IAM da utilizzare con l'utente.

  9. Salva il file nella cartella kubectl predefinita, con il nome del cluster nel nome file. Ad esempio, se il nome del cluster è my-cluster, salva il file in ~/.kube/config-my-cluster.

  10. Aggiungi il percorso di file alla variabile di ambiente KUBECONFIG in modo che kubectl sappia dove cercare la configurazione cluster.

    • Per le shell Bash su macOS o Linux:

      export KUBECONFIG=$KUBECONFIG:~/.kube/config-my-cluster
    • Per PowerShell su Windows:

      $ENV:KUBECONFIG="{0};{1}" -f $ENV:KUBECONFIG, "$ENV:userprofile\.kube\config-my-cluster"
  11. (Facoltativo) Aggiungi la configurazione al file di inizializzazione della shell in modo che sia configurato quando si apre una shell.

    • Per le shell Bash su macOS:

      echo 'export KUBECONFIG=$KUBECONFIG:~/.kube/config-my-cluster' >> ~/.bash_profile
    • Per le shell Bash su Linux:

      echo 'export KUBECONFIG=$KUBECONFIG:~/.kube/config-my-cluster' >> ~/.bashrc
    • Per PowerShell su Windows:

      [System.Environment]::SetEnvironmentVariable('KUBECONFIG', $ENV:KUBECONFIG, 'Machine')
  12. Prova la configurazione.

    kubectl get svc
    Nota

    Se ricevi qualsiasi altro errore di tipo risorsa o autorizzazione, consulta Accesso negato o non autorizzato (kubectl) nella sezione relativa alla risoluzione dei problemi.

    Output:

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