GoogleCloud

Gcloud CLI

https://cloud.google.com/sdk/gcloud

Install the gcloud CLI:

% xhost +localhost
% docker run -e DISPLAY=docker.for.mac.host.internal:0 -it --rm -v /Users/kaikailiu/Documents/:/Documents --privileged --network host myubuntu22 /bin/bash
root@docker-desktop:/# sudo apt-get update
root@docker-desktop:/# sudo apt-get install apt-transport-https ca-certificates gnupg curl sudo
root@docker-desktop:/# echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
root@docker-desktop:/# curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add -
root@docker-desktop:/# sudo apt-get update && sudo apt-get install google-cloud-cli
root@docker-desktop:/# gcloud --version
Google Cloud SDK 436.0.0
alpha 2023.06.16
beta 2023.06.16
bq 2.0.93
bundled-python3-unix 3.9.16
core 2023.06.16
gcloud-crc32c 1.0.0
gsutil 5.24

Install any of the following additional components:

root@docker-desktop:/# sudo apt-get install google-cloud-cli google-cloud-cli-app-engine-python

Run gcloud init to authorizes the gcloud CLI to use your user account credentials to access Google Cloud and select the project:

root@docker-desktop:/# gcloud init
root@docker-desktop:/# gcloud config list
[core]
account = kaikai.liu@sjsu.edu
disable_usage_reporting = True
project = sjsu-rf-ohana

Your active configuration is: [default]

https://cloud.google.com/compute/docs/gcloud-compute#set_default_zone_and_region_in_your_local_client

root@docker-desktop:/# gcloud compute project-info describe --project sjsu-rf-ohana
root@docker-desktop:/# gcloud config get-value compute/region
root@docker-desktop:/# gcloud config get-value compute/zone
root@docker-desktop:/# gcloud compute regions list
root@docker-desktop:/# gcloud compute zones list
root@docker-desktop:/# gcloud compute project-info add-metadata \
--metadata google-compute-default-region=us-west1,google-compute-default-zone=us-west1-a
Updated [https://www.googleapis.com/compute/v1/projects/sjsu-rf-ohana].
root@docker-desktop:/# gcloud init
root@docker-desktop:/# gcloud config get-value compute/region
us-west1
root@docker-desktop:/# gcloud config get-value compute/zone
us-west1-a
gcloud config set compute/region REGION
gcloud config set compute/zone ZONE

Compute Engine

https://cloud.google.com/compute/docs

Create and start a VM instance: https://cloud.google.com/compute/docs/instances/create-start-instance

gcloud compute images list

NAME PROJECT FAMILY
ubuntu-minimal-2204-jammy-v20230617

gcloud compute images describe ubuntu-minimal-2204-jammy-v20230617  \
    --project=ubuntu-os-cloud


root@docker-desktop:/# gcloud compute instances create myubuntu22 \
    --image=ubuntu-minimal-2204-jammy-v20230617 \
    --image-project=ubuntu-os-cloud

Created [https://www.googleapis.com/compute/v1/projects/sjsu-rf-ohana/zones/us-west1-a/instances/myubuntu22].
NAME        ZONE        MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP    STATUS
myubuntu22  us-west1-a  n1-standard-1               10.138.0.2   34.145.90.176  RUNNING

root@docker-desktop:/# gcloud compute instances describe myubuntu22

You use the gcloud compute ssh command to connect to your VM.

# gcloud compute ssh myubuntu22 --project=sjsu-rf-ohana --zone=us-west1-a --troubleshoot
root@docker-desktop:~/.ssh# ssh -i google_compute_engine kaikai_liu@34.145.90.176
kaikai_liu@34.145.90.176: Permission denied (publickey).

Add keys to VMs that use OS Login: https://cloud.google.com/compute/docs/connect/add-ssh-keys#os-login

root@docker-desktop:~/.ssh# pwd
/root/.ssh
root@docker-desktop:~/.ssh# gcloud compute os-login ssh-keys add --key-file=/root/.ssh/google_compute_engine.pub

#Add SSH keys to instance metadata during VM creation
gcloud compute instances create VM_NAME \
--metadata=ssh-keys=PUBLIC_KEY

#Add SSH keys to instance metadata after VM creation
root@docker-desktop:~/.ssh# gcloud compute instances describe myubuntu22

#https://cloud.google.com/compute/docs/connect/create-ssh-keys
root@docker-desktop:~/.ssh# ssh-keygen -t rsa -f google_compute -C kaikai_liu -b 2048

root@docker-desktop:~/.ssh# gcloud compute os-login ssh-keys add --key-file=google_compute.pub

root@docker-desktop:~/.ssh# gcloud compute ssh myubuntu22

root@docker-desktop:/# gcloud compute machine-types list --zones us-west1-a
NAME              ZONE        CPUS  MEMORY_GB
c2-standard-4     us-west1-a  4     16.00

gcloud compute instances create myubuntu22 \
    --image=ubuntu-minimal-2204-jammy-v20230617 \
    --image-project=ubuntu-os-cloud
    --machine-type=c2-standard-4