Zuerst die Google Cloud SDK nach Anleitung installieren: https://cloud.google.com/sdk/
(Download, tgz Auspacken, ./install
)
Hinweis: Die Installation erfolgt in das Verzeichnis, von dem man das Installationsscript ./install
aufruft, (bei mir alles in /opt/google-cloud-sdk
).
Hier für die bash beschrieben, gibts aber auch für zsh: Für den Komfort werden noch zwei Ergänzungen in .profile oder .bashrc empfohlen (wenn man das ganze mit dem selben Benutzer installiert, mit dem man später arbeitet, wird das aber schon vom install erledigt):
source /opt/google-cloud-sdk/completion.bash.inc # gcloud shell command completion source /opt/google-cloud-sdk/path.bash.inc # $PATH Ergänzung
Nach der Installation Authentifizieren: gcloud auth login
(es öffnet sich ein Browser-Fenster, in dem man sich mit seinem Google Account anmelden muss)
Die Credentials werden dann in $HOME/.config/gcloud/credentials
gespeichert.
Für Scripts empfiehlt es sich, einen speziellen Service-Account anzulegen und dafür eine "Credentials Datei" herunterzuladen und die zu verwenden.
so bindet man das in Python ein:
import os os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "./meine-credentials-fuer-dieses-projekt.json"
und so bei einem Shell-Script:
export GOOGLE_APPLICATION_CREDENTIALS=./meine-credentials-fuer-dieses-projekt.json
Die Konfiguration prüfen: gcloud config list
Diese Konfiguration ist in Dateien unter $HOME/.config/gcloud/
hinterlegt.
zu einem Project wechseln, z.B. "meintest": gcloud config set project meintest
Welche Virtuellen Maschinen gibt es: gcloud compute instances list
das sollte so (ähnlich) aussehen:
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS meintest-b europe-west1-b f1-micro 10.219.123.101 203.0.113.183 RUNNING meintest-c europe-west1-c f1-micro 10.219.123.102 198.51.100.89 RUNNING
gcloud compute instances create nocheintest-b --machine-type f1-micro --zone europe-west1-b
das erste Mal auf einer virtuellen Maschine einloggen;
gcloud compute ssh meintest-b --zone europe-west1-b
HINWEIS: Auf der Instanz wird der User angelegt, per Default wird als Name $USER
verwendet (der User, mit dem man lokal eingeloggt ist).
Wenn man das nicht will, $USER
kurz mal ändern oder den gewünschten Benutzernamen angeben:
gcloud compute ssh meinuser@meintest-b --zone europe-west1-b
Beim ersten mal einloggen, wird ein ssh-key generiert ( $HOME/.ssh/google_compute_engine
)
Diesen key kann man mit ssh-add $HOME/.ssh/google_compute_engine
in den ssh-Agent laden
und sich ab da einfacher einloggen mit:
ssh meinuser@IP-Adresse
root werden mit sudo -s
innerhalb der VM rausfinden, wie sie in der Cloud benannt ist, in welcher Zone sie sich befindet und mehr …
Der FQDN (Fully Qualified Domain Name, allerdings von intern aus gesehen)
$ FQDN=$( curl -H Metadata-Flavor:Google http://metadata/computeMetadata/v1/instance/hostname 2>/dev/null ) $ echo $FQDN meintest-c.c.meintest.internal
oder kürzer nur der Name:
$ HOST=$( curl -H Metadata-Flavor:Google http://metadata/computeMetadata/v1/instance/name 2>/dev/null ) $ echo $HOST meintest-c
die Zone
$ ZONEPATH=$( curl -H Metadata-Flavor:Google http://metadata/computeMetadata/v1/instance/zone 2>/dev/null;echo ) $ echo $ZONEPATH projects/1234567890123/zones/europe-west1-c
Machine Type
$ curl -H Metadata-Flavor:Google http://metadata/computeMetadata/v1/instance/machine-type 2>/dev/null;echo projects/1234567890123/machineTypes/f1-micro
Mehr dazu: https://cloud.google.com/compute/docs/storing-retrieving-metadata
Der Cloud Resource Manager gibt Übersicht über alle Projekte (auf die man Zugriff hat). Die Übersicht zeigt auch, wann sich zuletzt etwas getan hat … hilft beim "jäten". Über die Jahre sammelt sich da sonst einiges, was gar nicht mehr gebraucht wird.
Mit der Kommandozeile kann man sich auch alle Projekte anzeigen lassen, die man sehen dürfte.
$ gcloud projects list
PROJECT_ID NAME PROJECT_NUMBER foo-bar-project-1234567890 foo-bar Project 1245892040987 toast-as-a-service-245 Toast as a Service 798000808307 these-are-no-real-projects All Fake Projects 243139786784 example-45678901234 An Example 68546852904 example2-987654321 Another EXAMPLE 9528529035994
gcloud projects get-iam-policy foo-bar-project-1234567890
Zeigt Service-Accounts und User mit ihren Rollen an
(man kann Projekte auch ohne Organisation betreiben, dann geht folgendes natürlich nicht)
In welchen Organisationen bin ich dabei? Und wie sind die IDs dieser Organisationen?
gcloud organizations list
DISPLAY_NAME ID DIRECTORY_CUSTOMER_ID example.org 556415725628 XXXXXXXXX
Zeig mir die Rollen, die in dieser Organisation vergeben sind
gcloud organizations get-iam-policy 556415725628
bindings: - members: - user:peter.zahlt@example.org - user:anna.beispiel@example.org - user:thomas.thomas@example.org role: roles/billing.admin ....
Zeigt alle von extern (oder per VPN) erreichbaren IP-Adressen in den angegebenen Regionen (VPN-Endpunkte, VMs und kubernetes-pods … u.ä.):
gcloud compute addresses list --project meintest --filter="region:( europe-west1, europe-west3 )"
$ gcloud container clusters list --project meintest NAME LOCATION MASTER_VERSION MASTER_IP MACHINE_TYPE NODE_VERSION NUM_NODES STATUS test-dev europe-west3-c 1.21.14-gke.18100 198.51.100.142 n1-standard-2 1.21.14-gke.15800 * 12 RUNNING test-cluster2 europe-west3-c 1.24.9-gke.3200 203.0.113.188 n1-standard-4 1.24.9-gke.3200 RUNNING
2023-04: kubectl
wirft auf einmal den schönen Fehler
"W0403 15:58:16.351560 18936 gcp.go:119] WARNING: the gcp auth plugin is deprecated in v1.22+, unavailable in v1.25+; use gcloud instead.
To learn more, consult https://cloud.google.com/blog/products/containers-kubernetes/kubectl-auth-changes-in-gke"
$ gcloud container clusters get-credentials test-dev --region europe-west3-c --project meintest
siehe auch hcloud - Hetzner cloud CLI (Notizen), kubectl Spickzettel
gilt für alle Tipps, Tricks & Spickzettel:
dies sind einfache, teils banale Notizen für meinen persönlichen Gebrauch,
die hier eher zufällig auch öffentlich lesbar sind
(vielleicht hilft es ja jemandem weiter). Verwendung auf eigene Gefahr
Fehler-Hinweise, Dankesschreiben , etc. bitte an: web.21@unixwitch.de
weitere Tools / Spickzettel