| name | gcloud |
| description | Manage Google Cloud Platform resources via gcloud CLI. Use for Compute Engine VMs, Cloud Run services, Firebase Hosting, Cloud Storage, and project management. Covers deployment, monitoring, logs, and SSH access. |
Google Cloud Platform Skill
Manage GCP resources using gcloud, gsutil, and firebase CLIs.
Installation
gcloud CLI (one-time setup)
cd ~ && curl -O https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-cli-linux-x86_64.tar.gz
tar -xzf google-cloud-cli-linux-x86_64.tar.gz
./google-cloud-sdk/install.sh --quiet --path-update true
source ~/.bashrc
gcloud auth login
Firebase CLI
npm install -g firebase-tools
firebase login
Quick Reference
Authentication & Config
gcloud auth list
gcloud config set account EMAIL
gcloud projects list
gcloud config set project PROJECT_ID
gcloud config list
Compute Engine (VMs)
List Instances
gcloud compute instances list --project PROJECT_ID
gcloud compute instances list --project PROJECT_ID \
--format="table(name,zone,status,networkInterfaces[0].accessConfigs[0].natIP)"
Start/Stop/Restart
gcloud compute instances start INSTANCE_NAME --zone ZONE --project PROJECT_ID
gcloud compute instances stop INSTANCE_NAME --zone ZONE --project PROJECT_ID
gcloud compute instances reset INSTANCE_NAME --zone ZONE --project PROJECT_ID
SSH Access
gcloud compute ssh INSTANCE_NAME --zone ZONE --project PROJECT_ID
gcloud compute ssh INSTANCE_NAME --zone ZONE --project PROJECT_ID --command "uptime"
gcloud compute ssh INSTANCE_NAME --zone ZONE --project PROJECT_ID -- -L 8080:localhost:8080
View Logs
gcloud compute instances get-serial-port-output INSTANCE_NAME --zone ZONE --project PROJECT_ID
gcloud compute ssh INSTANCE_NAME --zone ZONE --project PROJECT_ID --command "journalctl -f"
Cloud Run
List Services
gcloud run services list --region REGION --project PROJECT_ID
gcloud run services list --project PROJECT_ID
Deploy
gcloud run deploy SERVICE_NAME \
--source . \
--region REGION \
--project PROJECT_ID \
--allow-unauthenticated
gcloud run deploy SERVICE_NAME \
--image gcr.io/PROJECT_ID/IMAGE:TAG \
--region REGION \
--project PROJECT_ID
View Service Details
gcloud run services describe SERVICE_NAME --region REGION --project PROJECT_ID
View Logs
gcloud run services logs read SERVICE_NAME --region REGION --project PROJECT_ID --limit 50
gcloud logging read "resource.type=cloud_run_revision AND resource.labels.service_name=SERVICE_NAME" \
--project PROJECT_ID --limit 20 --format="table(timestamp,textPayload)"
Update Environment Variables
gcloud run services update SERVICE_NAME \
--region REGION \
--project PROJECT_ID \
--set-env-vars "KEY1=value1,KEY2=value2"
Traffic Management
gcloud run services update-traffic SERVICE_NAME --to-latest --region REGION --project PROJECT_ID
gcloud run services update-traffic SERVICE_NAME \
--to-revisions=REVISION1=90,REVISION2=10 \
--region REGION --project PROJECT_ID
Firebase Hosting
List Projects
firebase projects:list
Deploy
firebase deploy --project PROJECT_ID
firebase deploy --only hosting --project PROJECT_ID
firebase deploy --only hosting:SITE_NAME --project PROJECT_ID
Preview Channels
firebase hosting:channel:deploy CHANNEL_NAME --project PROJECT_ID
firebase hosting:channel:list --project PROJECT_ID
firebase hosting:channel:delete CHANNEL_NAME --project PROJECT_ID
Rollback
firebase hosting:releases:list --project PROJECT_ID
firebase hosting:rollback --project PROJECT_ID
Cloud Storage (gsutil)
gsutil ls
gsutil ls gs://BUCKET_NAME/
gsutil cp LOCAL_FILE gs://BUCKET_NAME/path/
gsutil cp gs://BUCKET_NAME/path/file LOCAL_PATH
gsutil -m rsync -r LOCAL_DIR gs://BUCKET_NAME/path/
gsutil iam ch allUsers:objectViewer gs://BUCKET_NAME
Logs & Monitoring
Cloud Logging
gcloud logging read "resource.type=gce_instance" --project PROJECT_ID --limit 20
gcloud logging read "severity>=ERROR" --project PROJECT_ID --limit 20
gcloud logging read "resource.type=cloud_run_revision AND resource.labels.service_name=my-service" \
--project PROJECT_ID --limit 20
Monitoring Metrics
gcloud monitoring metrics list --project PROJECT_ID | head -50
gcloud monitoring metrics-scopes describe projects/PROJECT_ID
Billing & Cost Monitoring
View Current Costs
gcloud billing accounts list
gcloud billing projects describe PROJECT_ID
gcloud services list --enabled --project PROJECT_ID
Set Budget Alerts
gcloud billing budgets create \
--billing-account=BILLING_ACCOUNT_ID \
--display-name="Monthly Budget" \
--budget-amount=50EUR \
--threshold-rule=percent=50 \
--threshold-rule=percent=90 \
--threshold-rule=percent=100
gcloud billing budgets list --billing-account=BILLING_ACCOUNT_ID
gcloud billing budgets describe BUDGET_ID --billing-account=BILLING_ACCOUNT_ID
Cost-Saving Tips
gcloud compute instances stop INSTANCE_NAME --zone ZONE --project PROJECT_ID
gcloud recommender recommendations list \
--project=PROJECT_ID \
--location=global \
--recommender=google.compute.instance.IdleResourceRecommender
Secret Manager
Create & Manage Secrets
gcloud services enable secretmanager.googleapis.com --project PROJECT_ID
echo -n "my-secret-value" | gcloud secrets create SECRET_NAME \
--data-file=- \
--project PROJECT_ID
gcloud secrets create SECRET_NAME --data-file=./secret.txt --project PROJECT_ID
Access Secrets
gcloud secrets versions access latest --secret=SECRET_NAME --project PROJECT_ID
gcloud secrets versions access 1 --secret=SECRET_NAME --project PROJECT_ID
gcloud secrets list --project PROJECT_ID
gcloud secrets versions list SECRET_NAME --project PROJECT_ID
Update Secrets
echo -n "new-value" | gcloud secrets versions add SECRET_NAME --data-file=- --project PROJECT_ID
gcloud secrets versions disable VERSION_ID --secret=SECRET_NAME --project PROJECT_ID
gcloud secrets versions destroy VERSION_ID --secret=SECRET_NAME --project PROJECT_ID
Use in Cloud Run
gcloud run deploy SERVICE_NAME \
--image IMAGE \
--region REGION \
--project PROJECT_ID \
--set-secrets="ENV_VAR_NAME=SECRET_NAME:latest"
gcloud run deploy SERVICE_NAME \
--image IMAGE \
--region REGION \
--project PROJECT_ID \
--set-secrets="/path/to/secret=SECRET_NAME:latest"
Artifact Registry (Container Images)
Setup
gcloud services enable artifactregistry.googleapis.com --project PROJECT_ID
gcloud artifacts repositories create REPO_NAME \
--repository-format=docker \
--location=REGION \
--project PROJECT_ID \
--description="Docker images"
Configure Docker Auth
gcloud auth configure-docker REGION-docker.pkg.dev
Build & Push Images
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/IMAGE:TAG
docker build -t REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/IMAGE:TAG .
docker push REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/IMAGE:TAG
List & Manage Images
gcloud artifacts docker images list REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME
gcloud artifacts docker tags list REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/IMAGE
gcloud artifacts docker images delete REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/IMAGE:TAG
Cloud SQL (Databases)
Create Instance
gcloud services enable sqladmin.googleapis.com --project PROJECT_ID
gcloud sql instances create INSTANCE_NAME \
--database-version=POSTGRES_15 \
--tier=db-f1-micro \
--region=REGION \
--project PROJECT_ID
gcloud sql instances create INSTANCE_NAME \
--database-version=MYSQL_8_0 \
--tier=db-f1-micro \
--region=REGION \
--project PROJECT_ID
Manage Databases & Users
gcloud sql databases create DB_NAME --instance=INSTANCE_NAME --project PROJECT_ID
gcloud sql databases list --instance=INSTANCE_NAME --project PROJECT_ID
gcloud sql users create USERNAME \
--instance=INSTANCE_NAME \
--password=PASSWORD \
--project PROJECT_ID
gcloud sql users list --instance=INSTANCE_NAME --project PROJECT_ID
Connect
gcloud sql connect INSTANCE_NAME --user=USERNAME --project PROJECT_ID
gcloud sql instances describe INSTANCE_NAME --project PROJECT_ID \
--format="value(connectionName)"
Backups
gcloud sql backups create --instance=INSTANCE_NAME --project PROJECT_ID
gcloud sql backups list --instance=INSTANCE_NAME --project PROJECT_ID
gcloud sql backups restore BACKUP_ID --restore-instance=INSTANCE_NAME --project PROJECT_ID
Connect from Cloud Run
gcloud run deploy SERVICE_NAME \
--image IMAGE \
--region REGION \
--project PROJECT_ID \
--add-cloudsql-instances=PROJECT_ID:REGION:INSTANCE_NAME \
--set-env-vars="DB_HOST=/cloudsql/PROJECT_ID:REGION:INSTANCE_NAME"
Troubleshooting
"API not enabled"
gcloud services enable run.googleapis.com --project PROJECT_ID
gcloud services enable compute.googleapis.com --project PROJECT_ID
"Permission denied"
gcloud projects get-iam-policy PROJECT_ID --flatten="bindings[].members" \
--format="table(bindings.role)" --filter="bindings.members:EMAIL"
"Not authenticated"
gcloud auth login
gcloud auth application-default login
Refresh credentials
gcloud auth login --force