In vorhandene Infrastruktur einbinden

In diesem Thema konfigurieren Sie eine vorhandene Virtual Private Cloud (VPC) von AWS mit öffentlichen und privaten Subnetzen und führen anthos-gke aus, um die Installation eines Verwaltungsdienstes abzuschließen.

Hinweis

Für die folgenden Schritte benötigen Sie:

  • AWS-IAM-Berechtigungen, wie unter Anforderungen beschrieben.

  • Eine vorhandene AWS-VPC, die Folgendes umfasst:

    • Mindestens ein öffentliches Subnetz
    • Mindestens ein privates Subnetz
    • Ein Internetgateway mit einer Route zum öffentlichen Subnetz
    • Ein NAT-Gateway mit einer Route zum privaten Subnetz
    • Aktivierte DNS-Hostnamen
    • Kein benutzerdefinierter Wert für domain-name in Ihren DHCP-Optionen festgelegt. Weitere Informationen finden Sie unter Fehlerbehebung. Anthos-Cluster in AWS unterstützen keine anderen Werte als die EC2-Standard-Domainnamen.

    Weitere Informationen zum Konfigurieren Ihrer AWS-VPC finden Sie unter VPC mit öffentlichen und privaten Subnetzen.

  • Die öffentlichen und privaten Subnetz-IDs Ihrer vorhandenen VPC. Beispiel: subnet-1234567890abcdefg

  • Für Clusterversion 1.20 oder niedriger eine AWS-Sicherheitsgruppe, die eingehenden SSH-Traffic (Port 22) von den Sicherheitsgruppen oder IP-Bereichen ermöglicht, in denen Sie Ihre Installation von Anthos-Cluster auf AWS verwalten.

  • Für Clusterversion 1.21 oder höher eine AWS-Sicherheitsgruppe, die Konnektivität (Port 8132) über die VPC-IP-Bereiche zulässt, in denen sich Ihre Knotenpools von Anthos-Cluster auf AWS befinden.

Arbeitsbereich erstellen

  1. Erstellen Sie eine Datei namens anthos-gke.yaml in einem Texteditor. Fügen Sie den folgenden Inhalt in die Datei ein.

     apiVersion: multicloud.cluster.gke.io/v1
     kind: AWSManagementService
     metadata:
       name: management
     spec:
       version: aws-1.14.1-gke.0
       region: AWS_REGION
       authentication:
         awsIAM:
           adminIdentityARNs:
           - ADMIN_AWS_IAM_ARN
       kmsKeyARN: KMS_KEY_ARN
       databaseEncryption:
         kmsKeyARN: DATABASE_KMS_KEY_ARN
       securityGroupIDs:
       - SECURITY_GROUP_IDS
       googleCloud:
         projectID: GCP_PROJECT_ID
         serviceAccountKeys:
           managementService: MANAGEMENT_KEY_PATH
           connectAgent: HUB_KEY_PATH
           node: NODE_KEY_PATH
       existingVPC:
         subnetID: VPC_SUBNET_ID
         allowedSSHSecurityGroupIDs:
         - SSH_SECURITY_GROUP
       # Optional fields
       rootVolume:
         sizeGiB: ROOT_VOLUME_SIZE
         volumeType: ROOT_VOLUME_TYPE
         iops: ROOT_VOLUME_IOPS
         kmsKeyARN: ROOT_VOLUME_KEY
       bastionHost:
         subnetID: BASTION_HOST_SUBNET_ID
         allowedSSHCIDRBlocks:
         - SSH_CIDR_BLOCK
         rootVolume: # Optional
           kmsKeyARN: BASTION_VOLUME_KEY
       proxy: PROXY_JSON_FILE
    

    Ersetzen Sie die folgenden Werte:

    • AWS_REGION durch die AWS-Region, in der Sie den Cluster ausführen möchten.
    • ADMIN_AWS_IAM_ARN durch den Amazon-Ressourcennamen des AWS-IAM-Schlüssels des Administrators.
    • KMS_KEY_ARN durch den Amazon-Ressourcennamen des AWS-KMS-Schlüssels, der die Daten Ihres Verwaltungsdienstes sichert, wenn der Verwaltungsdienst erstellt wird.
    • DATABASE_KMS_KEY_ARN durch den Amazon-Ressourcennamen des AWS-KMS-Schlüssels, der Ihre etcd-Datenbanken sichert.
    • SECURITY_GROUP_IDS durch zusätzliche Sicherheitsgruppen-IDs, die Zugriff auf Ihre Verwaltungsdienst-VMs gewähren.
    • GCP_PROJECT_ID durch das Google Cloud-Projekt, das Ihre Anthos-Umgebung hostet.
    • MANAGEMENT_KEY_PATH durch den Speicherort Ihres Dienstkontoschlüssels für die Google Cloud-Verwaltung.
    • HUB_KEY_PATH durch den Speicherort Ihres Dienstkontoschlüssels für Google Cloud Connect.
    • NODE_KEY_PATH mit dem Standort Ihrer Anthos-Cluster im Dienstkontoschlüssel des AWS-Knotens.
    • VPC_SUBNET_ID durch die ID des Subnetzes, in dem der Verwaltungsdienst ausgeführt wird.
    • SSH_SECURITY_GROUP durch die Liste der Sicherheitsgruppen-IDs, denen der SSH-Zugriff innerhalb der Verwaltungsdienstinstanzen erlaubt ist.

    Optional: Ersetzen Sie die folgenden Werte, wenn Sie die Verwaltungsdienst-Volumes verschlüsseln möchten:

    • ROOT_VOLUME_SIZE durch die Volume-Größe in Gigabyte für den Verwaltungsdienst. Beispiel: 10.
    • ROOT_VOLUME_TYPE durch den EBS-Volume-Typ. Beispiel: gp3
    • ROOT_VOLUME_IOPS durch die Anzahl der bereitgestellten E/A-Vorgänge pro Sekunde (IOPS) für das Volume. Nur gültig, wenn volumeType GP3 ist. Weitere Informationen finden Sie unter SSD-Volumes für allgemeine Zwecke (gp3).
    • ROOT_VOLUME_KEY durch den Amazon-Ressourcennamen des AWS-KMS-Schlüssels, der die Root-Volumes der Verwaltungsdienstinstanz verschlüsselt. Weitere Informationen finden Sie unter Vom Kunden verwalteten CMK zum Verschlüsseln von Volumes verwenden.

    Optional: Wenn Sie einen Bastion Host erstellen möchten, um über einen SSH-Tunnel auf Ihre Anthos-Cluster in der AWS-Umgebung zuzugreifen, ersetzen Sie die folgenden Werte:

    • BASTION_HOST_SUBNET_ID durch die Subnetz-ID, unter der der Bastion Host ausgeführt wird. Achten Sie darauf, dass VPC_SUBNET_ID eingehende Verbindungen von BASTION_HOST_SUBNET_ID zulässt.
    • SSH_CIDR_BLOCK durch den CIDR-Block, über den der Bastion Host eingehende SSH-Verbindungen zulässt. Beispiel: 203.0.113.0/24. Wenn Sie SSH von jeder IP-Adresse zulassen möchten, verwenden Sie 0.0.0.0/0.
    • BASTION_VOLUME_KEY durch den Amazon-Ressourcennamen des AWS-KMS-Schlüssels, der Ihr Bastion-Root-Volume absichert.

    Wenn Sie möchten, dass Traffic direkt über einen HTTP-Proxy geleitet wird, ersetzen Sie den folgenden Wert:

    • Optional: PROXY_JSON_FILE durch den relativen Pfad der Proxy-Konfigurationsdatei. Wenn Sie keinen Proxy verwenden, entfernen Sie diese Zeile.
  2. Führen Sie anthos-gke aws management init aus, um Konfigurationsdateien zu erstellen:

    anthos-gke aws management init
    
  3. Führen Sie anthos-gke aws management apply aus, um den Cluster zu erstellen.

    anthos-gke aws management apply
    

    Die Verarbeitung des Befehls anthos-gke aws management apply kann bis zu zehn Minuten dauern. Wenn anthos-gke abgeschlossen ist, wird Ihr Verwaltungsdienst auf AWS ausgeführt.

Subnetze mit dem Clusternamen taggen

Wenn Sie vorhandene AWS-Subnetze mit Anthos-Clustern in AWS verwenden und Load-Balancer erstellen möchten, müssen Sie Ihre VPC und Subnetze mit dem Namen Ihres Verwaltungsdienstes taggen. Wenn Sie die VPC mit anthos-gke erstellt oder Ihre Subnetze bereits getaggt haben, überspringen Sie diesen Schritt.

Führen Sie zum Taggen Ihrer Subnetze die folgenden Schritte aus:

  1. Wechseln Sie in das Verzeichnis mit Ihren Anthos-Clustern in der AWS-Konfiguration. Sie haben dieses Verzeichnis bei der Installation des Verwaltungsdienstes erstellt.

    cd anthos-aws

  2. Exportieren Sie Ihre Cluster-ID als Umgebungsvariable $CLUSTER-ID. Wählen Sie Ihre Terraform-Version aus und führen Sie dann die folgenden Befehle aus:

    Terraform 0.12, 0.13

    export CLUSTER_ID=$(terraform output cluster_id)
    

    Terraform 0.14.3+

    export CLUSTER_ID=$(terraform output -raw cluster_id)
    
  3. Exportieren Sie Ihre AWS-VPC-ID als Umgebungsvariable $VPC_ID. Wählen Sie Ihre Terraform-Version aus und führen Sie dann die folgenden Befehle aus:

    Terraform 0.12, 0.13

    export VPC_ID=$(terraform output vpc_id)
    

    Terraform 0.14.3+

    export VPC_ID=$(terraform output -raw vpc_id)
    
  4. Rufen Sie Ihre privaten Subnetz-IDs mit dem aws-Befehlszeilentool ab.

      aws ec2 describe-subnets \
          --filters "Name=vpc-id,Values=$VPC_ID" "Name=tag:Name,Values=*private*" \
          --query "Subnets[*].SubnetId" \
          --output text
    
  5. Taggen Sie Ihre Subnetze mit Ihrer Cluster-ID. Führen Sie den folgenden Befehl für jedes Ihrer Subnetze aus.

      aws ec2 create-tags \
          --resources SUBNET_IDS \
          --tags Key=gke:multicloud:cluster-id,Value=$CLUSTER_ID
    

    Ersetzen Sie SUBNET_IDS durch die durch Leerzeichen getrennte Liste der Subnetz-IDs. Beispiel: subnet-012345678abcdef subnet-abcdef123456789 subnet-123456789abcdef

Verbindung zum Verwaltungsdienst herstellen

In diesem Abschnitt stellen Sie eine Verbindung zu Ihrem Verwaltungsdienst her. Sie können Ihre Befehle über einen Bastion Host tunneln. Wenn Sie eine direkte Verbindung zu Ihrer AWS-VPC haben, fahren Sie mit Anmeldedaten generieren und verbinden fort.

Verbindung mit einem Bastion Host herstellen

Wenn Sie den SSH-Tunnel mit einem Bastion Host einrichten, konfigurieren Sie den Host zuerst in Ihrem anthos-gke.yaml. Erstellen Sie als Nächstes ein Skript, um den Tunnel zu öffnen. Gehen Sie dazu so vor:

  1. Verwenden Sie terraform, um ein Skript zu generieren, das einen SSH-Tunnel zum Bastion Host öffnet.

    terraform output bastion_tunnel > bastion-tunnel.sh
    chmod 755 bastion-tunnel.sh
    

    Terraform erstellt das Skript bastion-tunnel.sh, das den SSH-Schlüssel des Bastion Host (~/.ssh/anthos-gke) verwendet.

  2. Führen Sie das Skript bastion-tunnel.sh aus, um den Tunnel zu öffnen. Der Tunnel sorgt für eine Weiterleitung von localhost:8118 an den Bastion Host.

    Führen Sie den folgenden Befehl aus, um einen Tunnel zum Bastion Host zu öffnen:

    ./bastion-tunnel.sh -N
    

    In diesem Fenster werden Nachrichten aus dem SSH-Tunnel angezeigt. Wenn die Verbindung geschlossen werden kann, beenden Sie den Vorgang mit Strg + C oder durch Schließen des Fensters.

  3. Wechseln Sie in das Verzeichnis mit Ihrer Anthos Cluster auf AWS-Konfiguration.

    cd anthos-aws

Anmeldedaten generieren und verbinden

In der Dokumentation für Anthos-Cluster in AWS wird davon ausgegangen, dass Sie einen SSH-Tunnel an localhost-Port 8118 für den Zugriff auf den Cluster verwenden. Wenn Sie einen anderen Verbindungstyp zu Ihrer VPC verwenden, z. B. eine direkte Interconnect-Verbindung, ein VPN oder eine andere Methode, können Sie die Zeile env HTTP_PROXY=http://localhost:8118 in Befehlen weglassen.

  1. Generieren Sie eine kubeconfig für die Authentifizierung. Verwenden Sie anthos-gke, um Anmeldedaten an Ihre in ~/.kube/config gespeicherte Konfiguration anzuhängen.

    anthos-gke aws management get-credentials
    
  2. Prüfen Sie, ob Sie mit kubectl eine Verbindung zum Verwaltungsdienst herstellen können.

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl cluster-info
    

    kubectl gibt den Status des Clusters aus.

Nächste Schritte