Ich habe einen privaten Cluster auf GKE erstellt und ein NAT ist zusammen mit dem Cluster konfiguriert. Ich habe auch ein Bastion-Setup für den Zugriff auf den privaten Cluster. Ich versuche, mich per SSH mit einem der Knoten zu verbinden, aber das gelingt mir nicht, da private Knoten keine externe IP haben. Gibt es eine Möglichkeit, dies zu tun?
Antwort1
Sie können die Option "gcloud"-Befehl, um sich per SSH mit Ihren Instanzen zu verbinden, vorausgesetzt, die GCP-Firewallregeln sind vorhanden.
gcloud compute ssh example-instance --zone=us-central1-a
Antwort2
Die Art und Weise, wie Sie sich per SSH bei einem GKE-Knoten anmelden, unterscheidet sich (soweit ich weiß) nicht von der Art und Weise, wie Sie sich per SSH bei einer GCE-Instanz anmelden.
Es gibt grundsätzlich zwei Möglichkeiten (sofern ich nichts übersehen habe):
Im ersten FallSie fügen USER:$(cat ~/.ssh/id_rsa.pub)
den Instanzmetadaten (oder Projektmetadaten, wenn Sie sich Zugriff auf alle Projekt-VMs gewähren möchten) Folgendes hinzu:
$ gcloud compute instances add-metadata INSTANCE \
--metadata="ssh-keys=me:`cat ~/.ssh/id_rsa.pub`" \
--zone ZONE --project PROJECT_ID
Fügen Sie Ihre Quell-IP zu den Firewall-Regeln hinzu:
$ gcloud compute firewall-rules create allow-ssh \
--source-ranges SOURCE_IP --allow tcp:22 \
--project PROJECT_ID
und stellen Sie eine Verbindung zum Knoten her:
$ ssh me@EXTERNAL_IP
Wird verwendet gcloud compute instances list --project PROJECT_ID --filter name:NAME
, um die externe IP zu erfahren.
Alternativ können Sie eine Verbindung herstellen über:
$ gcloud compute ssh [USER@]INSTANCE \
--zone ZONE --project PROJECT_ID
Ihr Schlüssel wird automatisch zu den Projektmetadaten hinzugefügt. So fügen Sie ihn zuerst zum Instanzmetadatensatz hinzu block-project-ssh-keys = true
:
$ gcloud compute instances add-metadata INSTANCE \
--metadata=block-project-ssh-keys=true \
--zone ZONE --project PROJECT_ID
So melden Sie sich beim Betriebssystem an:
$ gcloud compute instances add-metadata INSTANCE \
--metadata=enable-oslogin=true \
--zone ZONE --project PROJECT_ID
$ gcloud compute ssh INSTANCE \
--zone ZONE --project PROJECT_ID
Im Falle eines privaten Knotensdas oben genannte gilt immer noch, aber zusätzlich müssen Sie eine Verbindung über einen VPN-Server herstellen, der im Subnetz des Knotens läuft,IAP verwenden, oderSSH im Browser(das IAP verwendet).
Wie Sie eine VPN-Serverinstanz starten, erfahren Sie imfolgendes Wesentliche( vpn.tf
, openvpn-server.sh
).
Im Falle von IAP und SSH im Browser müssen Sie den Zugriff auf Port 22 von folgender Adresse hinzufügen 35.235.240.0/20
:
$ gcloud compute firewall-rules create allow-ssh \
--source-ranges 35.235.240.0/20 --allow tcp:22 \
--project PROJECT_ID
und füge hinzu --tunnel-through-iap
:
$ gcloud compute ssh INSTANCE --tunnel-through-iap \
--zone ZONE --project PROJECT_ID
Hiersind die Ergebnisse meiner Versuche mit einigen dieser Methoden.