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
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 Sie0.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.
Führen Sie
anthos-gke aws management init
aus, um Konfigurationsdateien zu erstellen:anthos-gke aws management init
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. Wennanthos-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:
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
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)
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)
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
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:
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.Führen Sie das Skript
bastion-tunnel.sh
aus, um den Tunnel zu öffnen. Der Tunnel sorgt für eine Weiterleitung vonlocalhost: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.
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.
Generieren Sie eine
kubeconfig
für die Authentifizierung. Verwenden Sieanthos-gke
, um Anmeldedaten an Ihre in~/.kube/config
gespeicherte Konfiguration anzuhängen.anthos-gke aws management get-credentials
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
- Nutzercluster erstellen
- Proxy mit Anthos-Clustern in AWS verwenden.
- Ändern Sie die Konfiguration
kubectl
, um eine Verbindung zu Anthos-Clustern in AWS mit weniger Befehlszeilenoptionen herzustellen. - Prüfen Sie die erforderlichen Sicherheitsgruppen für Ihre Anthos-Cluster im AWS-Verwaltungsdienst und Nutzercluster.