Benutzer-Werkzeuge

Webseiten-Werkzeuge


de:sysadmin:tools:gcloud

gcloud - Google Cloud Spickzettel

Installation (Google Cloud SDK)

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

Authentifizierung (mit Benutzer)

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.

Authentifizierung (mit Service-Account + Credentials File)

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

Konfiguration zeigen

Die Konfiguration prüfen: gcloud config list

Diese Konfiguration ist in Dateien unter $HOME/.config/gcloud/ hinterlegt.

An einem Projekt arbeiten

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

Compute Engine - virtuelle Maschinen

Neue Virtuelle Maschine erstellen

gcloud compute instances create nocheintest-b --machine-type f1-micro --zone europe-west1-b

Login mit SSH

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

root werden mit sudo -s

Metadaten von der Compute Engine aus herausfinden

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

Projektübersicht & IAM

Projekte? Welche Projekte?

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

Policies für ein Projekt anzeigen

gcloud projects get-iam-policy foo-bar-project-1234567890

Zeigt Service-Accounts und User mit ihren Rollen an

Wer hat welche Rolle in meiner Organisation?

(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
....

Welche IP-Adressen werden in meinem Projekt verwendet?

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 )"

Welche Kubernetes-Cluster gehören zu meinem GCP-Projekt?

$ 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

Kubernetes Authentifizierung einholen / erneuern

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
de/sysadmin/tools/gcloud.txt · Zuletzt geändert: 2023-04-03 18:06 von hella

Seiten-Werkzeuge

Mastodon Twitter