GCP CLI Reference
Auth & Configuration
# Login
gcloud auth login
gcloud auth application-default login # for SDK/libraries
# Set active project
gcloud config set project my-project-id
gcloud config set compute/region us-central1
gcloud config set compute/zone us-central1-a
# Named configurations
gcloud config configurations create prod
gcloud config configurations activate prod
gcloud config configurations list
# Current config
gcloud config list
gcloud auth list
Projects
# List projects
gcloud projects list
# Create project
gcloud projects create my-new-project \
--name="My New Project" \
--folder=FOLDER_ID
# Get project info
gcloud projects describe my-project-id
# Link billing account
gcloud billing projects link my-project-id \
--billing-account=BILLING_ACCOUNT_ID
# Enable APIs
gcloud services enable container.googleapis.com
gcloud services enable cloudfunctions.googleapis.com
gcloud services list --enabled
Compute Engine
# List instances
gcloud compute instances list
# Create instance
gcloud compute instances create my-vm \
--machine-type=e2-medium \
--image-family=debian-12 \
--image-project=debian-cloud \
--zone=us-central1-a \
--tags=http-server,https-server \
--metadata=startup-script='#!/bin/bash
apt-get update && apt-get install -y nginx'
# SSH into instance
gcloud compute ssh my-vm --zone=us-central1-a
# Copy files
gcloud compute scp ./file.txt my-vm:~/ --zone=us-central1-a
# Start / stop
gcloud compute instances start my-vm --zone=us-central1-a
gcloud compute instances stop my-vm --zone=us-central1-a
GKE (Container)
# Create GKE cluster
gcloud container clusters create my-cluster \
--zone=us-central1-a \
--num-nodes=3 \
--machine-type=e2-standard-2 \
--enable-autoscaling \
--min-nodes=1 --max-nodes=5
# Get cluster credentials
gcloud container clusters get-credentials my-cluster \
--zone=us-central1-a
# List clusters
gcloud container clusters list
# Upgrade cluster
gcloud container clusters upgrade my-cluster \
--master --cluster-version=1.28 \
--zone=us-central1-a
# List node pools
gcloud container node-pools list --cluster=my-cluster --zone=us-central1-a
Cloud Storage
# Create bucket
gsutil mb -l us-central1 gs://my-bucket
# Copy / sync
gsutil cp file.txt gs://my-bucket/
gsutil rsync -r ./local-dir gs://my-bucket/remote-dir
# List / remove
gsutil ls gs://my-bucket/
gsutil rm gs://my-bucket/file.txt
gsutil rm -r gs://my-bucket/prefix/
# Set lifecycle
gsutil lifecycle set lifecycle.json gs://my-bucket
# Make object public
gsutil acl ch -u AllUsers:R gs://my-bucket/file.txt
# Signed URL (1 hour)
gsutil signurl -d 1h service-account.json gs://my-bucket/file.txt
Service Accounts
# Create service account
gcloud iam service-accounts create my-sa \
--display-name="My Service Account"
# Grant role to service account
gcloud projects add-iam-policy-binding my-project \
--member="serviceAccount:[email protected]" \
--role="roles/storage.objectAdmin"
# Create and download key
gcloud iam service-accounts keys create key.json \
[email protected]
# Impersonate service account
gcloud config set auth/impersonate_service_account \
[email protected]
# List service accounts
gcloud iam service-accounts list