Erstellen Sie ein kubeconfig für Amazon EKS - Amazon EKS

Erstellen Sie ein kubeconfig für Amazon EKS

In diesem Abschnitt erstellen Sie eine kubeconfig-Datei für Ihren Cluster (oder aktualisieren eine vorhandene).

Dieser Abschnitt bietet zwei Verfahren zum Erstellen oder Aktualisieren Ihrer kubeconfig-Datei. Sie können eine kubeconfig-Datei schnell über den AWS CLI-Befehl update-kubeconfig automatisch erstellen oder aktualisieren, indem Sie die AWS CLI verwenden. Sie können eine kubeconfig-Datei auch manuell über die AWS CLI oder den aws-iam-authenticator erstellen.

Amazon EKS verwendet den aws eks get-token-Befehl, der in Version 1.16.156 oder höher von AWS CLI oder AWS IAM Authenticator für Kubernetes mit kubectl für die Cluster-Authentifizierung verfügbar ist. Wenn Sie die AWS CLI auf Ihrem System installiert haben, verwendet der AWS-IAM-Authenticator für Kubernetes standardmäßig die gleichen Anmeldeinformationen, die mit dem folgenden Befehl zurückgegeben werden:

aws sts get-caller-identity

Weitere Informationen finden Sie unter Konfigurieren der AWS CLI im AWS Command Line Interface-Leitfaden.

kubeconfig-Datei automatisch erstellen

So erstellen Sie eine kubeconfig-Datei mit der AWS CLI

  1. Stellen Sie sicher, dass die AWS CLI-Version 1.16.156 oder höher installiert ist. Informationen zum Installieren oder Aktualisieren des AWS CLI finden Sie unter Installieren des AWS CLI im AWS Command Line Interface-Benutzerhandbuch.

    Anmerkung

    Die Python-Version Ihres Systems muss 2.7.9 oder höher sein. Andernfalls erhalten Sie hostname doesn't match-Fehler mit AWS CLI-Aufrufen an Amazon EKS.

    Sie können Ihre AWS CLI-Version mit dem folgenden Befehl überprüfen:

    aws --version
    Wichtig

    Mehrere Versionen der AWS CLI basieren häufig auf Paket-Managern wie yum, apt-get oder Homebrew für macOS. Um sicherzustellen, dass Sie über die neueste Version verfügen, lesen Sie Installieren von AWS CLI im AWS Command Line Interface-Benutzerhandbuch.

  2. Erstellen oder aktualisieren Sie eine kubeconfig-Datei für Ihren Cluster. Ersetzen Sie die Beispielwerte durch Ihre eigenen Werte.

    • Standardmäßig wird die resultierende Konfigurationsdatei im Standard kubeconfig-Pfad (.kube/config) in Ihrem Stammverzeichnis erstellt oder mit einer vorhandenen kubeconfig-Datei an diesem Speicherort zusammengeführt. Sie können mit der Option --kubeconfig einen anderen Pfad angeben.

    • Sie können einen IAM-Rollen-ARN mit der Option --role-arn für die Authentifizierung verwenden, wenn Sie kubectl-Befehle ausgeben. Andernfalls wird die IAM-Entität in Ihrer standardmäßigen AWS CLI- oder SDK-Anmeldedatenkette verwendet. Sie können Ihre standardmäßige AWS CLI - oder SDK-Identität anzeigen, indem Sie den Befehl aws sts get-caller-identity ausführen.

    • Weitere Informationen finden Sie auf der Hilfeseite mit dem aws eks update-kubeconfig help-Befehl oder unter update-kubeconfig in der AWS CLI-Befehlsreferenz.

    Anmerkung

    Um den folgenden Befehl auszuführen, müssen Sie über die Berechtigung verfügen, die API-Aktion eks:DescribeCluster mit dem angegebenen Cluster zu verwenden. Weitere Informationen finden Sie unter Beispiele für identitätsbasierte Amazon-EKS-Richtlinien.

    aws eks update-kubeconfig --region region-code --name cluster-name
  3. Testen Sie Ihre Konfiguration.

    kubectl get svc
    Anmerkung

    Wenn Sie Autorisierungs- oder Ressourcenfehler erhalten, finden Sie weitere Informationen unter Nicht autorisiert oder Zugriff verweigert (kubectl) im Abschnitt zur Fehlerbehebung.

    Ausgabe:

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

Manuelles Erstellen der kubeconfig

So erstellen Sie Ihre kubeconfig-Datei manuell

  1. Rufen Sie den Endpunkt für Ihren Cluster ab. Ersetzen Sie die Beispielwerte durch die Werte für Ihren Cluster.

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

    Ausgabe

    https://E0EED553387FD639757D97A76EXAMPLE.gr7.region-code.eks.amazonaws.com
  2. Rufen Sie die Base64-kodierten Zertifikatsdaten ab, die für die Kommunikation mit Ihrem Cluster erforderlich sind.

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

    Die Ausgabe ist eine sehr lange Zeichenfolge.

  3. Erstellen Sie das ~/.kube-Standardverzeichnis, wenn es nicht bereits vorhanden ist.

    mkdir -p ~/.kube
  4. Kopieren Sie den Inhalt aus einem der folgenden Codeblöcke (abhängig von Ihrer bevorzugten Client-Token-Methode) mit Ihrem Texteditor.

    • So verwenden Sie den AWS CLI-Befehl aws eks get-token (erfordert die AWS CLI-Version 1.16.156 oder höher).

      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"
    • So verwenden Sie den AWS IAM Authenticator für 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. Ersetzen Sie Endpunkt mit dem Endpunkt, den Sie in einem vorherigen Schritt erhalten haben.

  6. Ersetzen Sie certificate-data mit den Base64-kodierten Zertifikatsdaten, die Sie in einem vorherigen Schritt erhalten haben.

  7. Ersetzen Sie den cluster-name durch Ihren Cluster-Namen.

  8. (Optional) Damit eine IAM-Rolle für die Durchführung von Clustervorgängen statt der standardmäßigen AWS-Kette von Anmeldeinformationsanbieter angenommen werden kann, kommentieren Sie die Zeilen -r und role-arn und ersetzen Sie sie durch einen IAM-Rollen-ARN, den Sie mit Ihrem Benutzer verwenden können.

  9. Speichern Sie die Datei im Standard-kubectl-Ordner mit Ihrem Cluster-Namen im Dateinamen. Wenn Ihr Cluster-Name beispielsweise my-cluster lautet, speichern Sie die Datei unter ~/.kube/config-my-cluster.

  10. Fügen Sie den Dateipfad zu Ihrer KUBECONFIG-Umgebungsvariable hinzu, sodass kubectl weiß, wo er nach der Cluster-Konfiguration suchen soll.

    • Für Bash-Shells unter macOS oder Linux:

      export KUBECONFIG=$KUBECONFIG:~/.kube/config-my-cluster
    • Für PowerShell unter Windows:

      $ENV:KUBECONFIG="{0};{1}" -f $ENV:KUBECONFIG, "$ENV:userprofile\.kube\config-my-cluster"
  11. (Optional) Fügen Sie die Konfiguration zu Ihrer Shell-Initialisierungsdatei hinzu, um den Pfad bereits beim Öffnen einer Shell zu konfigurieren.

    • Für Bash-Shells unter macOS:

      echo 'export KUBECONFIG=$KUBECONFIG:~/.kube/config-my-cluster' >> ~/.bash_profile
    • Für Bash-Shells unter Linux:

      echo 'export KUBECONFIG=$KUBECONFIG:~/.kube/config-my-cluster' >> ~/.bashrc
    • Für PowerShell unter Windows:

      [System.Environment]::SetEnvironmentVariable('KUBECONFIG', $ENV:KUBECONFIG, 'Machine')
  12. Testen Sie Ihre Konfiguration.

    kubectl get svc
    Anmerkung

    Wenn Sie Autorisierungs- oder Ressourcenfehler erhalten, finden Sie weitere Informationen unter Nicht autorisiert oder Zugriff verweigert (kubectl) im Abschnitt zur Fehlerbehebung.

    Ausgabe:

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