Table of Contents

gcloud

gcloud version

create virtual machine

gcloud compute instances create my-first-vm \
    --project=u-p1-2023 \
    --zone=europe-west1-b \
    --machine-type=e2-micro \
    --network-interface=network-tier=PREMIUM,stack-type=IPV4_ONLY,subnet=default \
    --maintenance-policy=MIGRATE \
    --provisioning-model=STANDARD \
    --service-account=538478614556-compute@developer.gserviceaccount.com \
    --scopes=https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring.write,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/trace.append \
    --tags=http-server,https-server \
    --create-disk=auto-delete=yes,boot=yes,device-name=my-first-vm,image=projects/debian-cloud/global/images/debian-11-bullseye-v20230411,mode=rw,size=10,type=projects/u-p1-2023/zones/us-west4-b/diskTypes/pd-balanced \
    --no-shielded-secure-boot \
    --shielded-vtpm \
    --shielded-integrity-monitoring \
    --labels=ec-src=vm_add-gcloud \
    --reservation-affinity=any

images List

gcloud compute images list | grep debian

machien type

gcloud compute machine-types list --filter="zone:( europe-central2-a europe-west1-d )"

example with gke

set default project:

$ gcloud config set project my-first-gke-project-386406

setup our compute default zone:

$ gcloud config set compute/zone europe-central2-a
$ gcloud compute regions list
$ gcloud config set compute/region europe-central2

$ gcloud container clusters create hello-cluster --num-nodes=1

get-credential of my gke cluster:

$ gcloud container clusters get-credentials hello-cluster

create a deployment on my server using a sample from google dev:

$ kubectl create deployment hello-server --image=us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
deployment.apps/hello-server created

create an expose to internet: a service

$ kubectl expose deployment hello-server  --type LoadBalancer --port 80 --target-port 8080

get pods and services:

cianodoro@cloudshell:~ (my-first-gke-project-386406)$ kubectl get pods
NAME                           READY   STATUS    RESTARTS   AGE
hello-server-c4cc56fb6-t5kgl   1/1     Running   0          3m20s

cianodoro@cloudshell:~ (my-first-gke-project-386406)$ kubectl get service
NAME           TYPE           CLUSTER-IP     EXTERNAL-IP      PORT(S)        AGE
hello-server   LoadBalancer   10.108.14.12   34.116.138.183   80:31638/TCP   56s
kubernetes     ClusterIP      10.108.0.1     <none>           443/TCP        19m
cianodoro@cloudshell:~ (my-first-gke-project-386406)$ kubectl get service hello-server
NAME           TYPE           CLUSTER-IP     EXTERNAL-IP      PORT(S)        AGE
hello-server   LoadBalancer   10.108.14.12   34.116.138.183   80:31638/TCP   66s