AWS-Netzwerk vorbereiten

Um einen extern ausgerichteten Load-Balancer mit Anthos-Cluster auf AWS einzurichten, müssen Sie Ihre VPC und Ihr öffentliches Subnetz mit Ihrer Cluster-ID taggen. Wenn Sie Ihre VPC und Ihr Subnetz bereits getaggt haben, fahren Sie mit Eingehenden Traffic aktivieren fort.

Hinweis

Bevor Sie Anthos-Cluster auf AWS verwenden, führen Sie die folgenden Aufgaben aus:

Anthos Clusters on AWS erfordert Tags für Subnetze, die Endpunkte des Load-Balancers enthalten. Anthos Clusters on AWS kennzeichnet automatisch alle Subnetze im Feld spec.Networking.ServiceLoadBalancerSubnetIDs der Ressource AWSCluster mit Tags.

Wenn Sie Ihrem Nutzercluster weitere Subnetze hinzufügen oder Tags auf vorhandene Subnetze anwenden möchten, führen Sie die folgenden Schritte aus:

  1. Verwenden Sie anthos-gke im Verzeichnis anthos-aws, um den Kontext zu Ihrem Verwaltungsdienst zu wechseln.

    cd anthos-aws
    anthos-gke aws management get-credentials

  2. Rufen Sie die ID der AWS-VPC des Clusters mit kubectl ab und speichern Sie sie als Variable.

     export VPC_ID=$(\
     env HTTPS_PROXY=http://localhost:8118 \
     kubectl get awscluster cluster-0 -o jsonpath='{.spec.networking.vpcID}')
    
  3. Prüfen Sie den Inhalt der Variablen mit echo. Die Ausgabe ähnelt vpc-12345678abcdef0.

    echo $VPC_ID
    
  4. Speichern Sie die Cluster-ID in einer Umgebungsvariablen.

    export CLUSTER_ID=$(\
    env HTTPS_PROXY=http://localhost:8118 \
    kubectl get awscluster cluster-0 -o jsonpath='{.status.clusterID}')
    

    Sie können die Variable mit echo prüfen:

    echo $CLUSTER_ID
    

    Die Antwort enthält Ihre Cluster-ID.

    gke-12345678
    
  5. Wenn Sie Anthos-Cluster auf AWS in einer dedizierten VPC installiert haben, können Sie mit dem aws-Befehlszeilentool die Subnetz-ID abrufen.

    Folgende Optionen sind verfügbar:

    • Öffentlich, wenn Sie Dienste in Ihrem öffentlichen Subnetz verfügbar machen möchten.
    • Privat, wenn Sie Dienste in Ihrem privaten Subnetz verfügbar machen möchten.
    • Mehrere Subnetze, wenn Sie Dienste in mehreren Subnetzen verfügbar machen möchten.

    Öffentlich

     export SUBNET_ID=$(aws ec2 describe-subnets \
     --filters "Name=vpc-id,Values=$VPC_ID" "Name=tag:Name,Values=*public*" \
     --query "Subnets[*].SubnetId" \
     --output text)
    

    Die Ausgabe ist ein Objekt, das Ihre Subnetz-ID enthält. Sie ähnelt subnet-1234abcdefg. Sie können die Variable mit echo prüfen:

    echo $SUBNET_ID
    

    Die Antwort enthält Ihre Subnetz-ID.

    subnet-012345678abcdef
    

    Privat

     export SUBNET_ID=$(aws ec2 describe-subnets \
     --filters "Name=vpc-id,Values=$VPC_ID" "Name=tag:Name,Values=*private*" \
     --query "Subnets[*].SubnetId" \
     --output text)
    

    Die Ausgabe ist ein Objekt, das Ihre Subnetz-ID enthält. Sie ähnelt subnet-1234abcdefg. Sie können die Variable mit echo prüfen:

    echo $SUBNET_ID
    

    Die Antwort enthält Ihre Subnetz-ID.

    subnet-012345678abcdef
    

    Mehrere Subnetze

    Wenn Sie mehrere Subnetze für Ihre AWSNodePools nutzen, z. B. wenn Sie mehrere Verfügbarkeitszonen verwenden, müssen Sie Ihre Subnetz-IDs einzeln taggen.

    Rufen Sie die Liste der Subnetz-IDs mit aws ec2 describe-subnets ab.

    Führen Sie den folgenden Befehl aus, um eine Liste aller öffentlichen Subnetze abzurufen:

    aws ec2 describe-subnets \
     --filters "Name=vpc-id,Values=$VPC_ID" "Name=tag:Name,Values=*public*" \
     --query "Subnets[*].SubnetId" \
     --output text
    

    Führen Sie den folgenden Befehl aus, um eine Liste aller privaten Subnetze abzurufen:

    aws ec2 describe-subnets \
     --filters "Name=vpc-id,Values=$VPC_ID" "Name=tag:Name,Values=*private*" \
     --query "Subnets[*].SubnetId" \
     --output text
    

    Die Antwort enthält Ihre Subnetz-IDs.

    subnet-012345678abcdef
    subnet-abcdef123456789
    subnet-123456789abcdef
    
  6. Taggen Sie das Subnetz mit Ihrer Cluster-ID. Wenn Sie mehrere Subnetze haben, wählen Sie die Methode für mehrere Subnetze aus.

    Einzelnes Subnetz

    aws ec2 create-tags \
    --resources $SUBNET_ID \
    --tags Key=kubernetes.io/cluster/$CLUSTER_ID,Value=shared
    

    Mehrere Subnetze

    Führen Sie für jedes Ihrer Subnetze den folgenden Befehl aus:

    aws ec2 create-tags \
    --resources subnet-ids \
    --tags Key=kubernetes.io/cluster/$CLUSTER_ID,Value=shared
    

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