SSH in GKE-Knoten auf einem privaten Cluster

SSH in GKE-Knoten auf einem privaten Cluster

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.

verwandte Informationen