Google Cloud CLI เป็นชุดเครื่องมือ Command Line Interface สำหรับสร้าง จัดการ ตรวจสอบ และทำ Automation กับทรัพยากรบน Google Cloud โดยคำสั่งหลักที่ใช้งานคือ gcloud

แทนที่จะจัดการระบบผ่าน Google Cloud Console เพียงอย่างเดียว เราสามารถใช้ CLI เพื่อสร้าง VM, จัดการ Storage, Deploy Container, จัดการ Kubernetes Cluster และนำคำสั่งเหล่านี้ไปต่อยอดเป็น Shell Script หรือ CI/CD Pipeline ได้

เป้าหมาย Workshop: ผู้เรียนสามารถติดตั้งและตั้งค่า gcloud รวมถึงใช้ CLI จัดการบริการพื้นฐานของ Google Cloud ได้ด้วยตนเอง


#1. ภาพรวม Google Cloud CLI

โครงสร้างคำสั่งพื้นฐานของ gcloud มีลักษณะดังนี้

gcloud <GROUP> <COMMAND> [FLAGS]

ตัวอย่าง

gcloud compute instances list

ประกอบด้วย

  • gcloud คือโปรแกรม CLI
  • compute คือกลุ่มบริการ
  • instances คือ Resource
  • list คือ Action

สามารถเปิด Help ได้ตลอดเวลา

gcloud help
gcloud compute --help
gcloud compute instances --help
gcloud compute instances create --help

#2. สิ่งที่ต้องเตรียม

ก่อนเริ่ม Workshop ควรมี

  1. Google Account
  2. Google Cloud Project
  3. Billing Account สำหรับบริการที่มีค่าใช้จ่าย
  4. Terminal เช่น macOS Terminal, Linux Shell, Windows PowerShell หรือ Windows Terminal
  5. Docker สำหรับ Workshop ส่วน Container
  6. สิทธิ์ IAM ที่เพียงพอสำหรับ Resource ที่ต้องการสร้าง

ข้อควรระวัง: Workshop บางส่วนอาจสร้าง Resource ที่มีค่าใช้จ่าย ควรลบ Resource เมื่อทดลองเสร็จ


#Part 1: ติดตั้ง Google Cloud CLI

#3. ตรวจสอบก่อนติดตั้ง

ลองใช้คำสั่ง

gcloud version

หากติดตั้งแล้ว จะเห็นข้อมูลเวอร์ชันของ Google Cloud CLI


#4. ติดตั้งบน macOS

หากใช้ Homebrew สามารถติดตั้งได้ด้วย

brew install --cask google-cloud-sdk

จากนั้นตรวจสอบ

gcloud version

อีกทางเลือกหนึ่งคือใช้ Installer ตามเอกสาร Google Cloud


#5. ติดตั้งบน Windows

ดาวน์โหลด Google Cloud CLI Installer จากเอกสารอย่างเป็นทางการ แล้วทำตามขั้นตอนของ Wizard

เมื่อติดตั้งเสร็จ เปิด PowerShell แล้วตรวจสอบ

gcloud version

#6. ติดตั้งบน Ubuntu/Debian

Google แนะนำให้เพิ่ม Google Cloud package repository และติดตั้งแพ็กเกจ google-cloud-cli ตามคู่มือของระบบปฏิบัติการ

หลังติดตั้งตรวจสอบด้วย

gcloud version

เนื่องจากรายละเอียด repository/key อาจมีการปรับเปลี่ยน ควรใช้คำสั่งล่าสุดจากเอกสาร Install Google Cloud CLI เสมอ


#Part 2: Initialize และ Authentication

#7. เริ่มต้นใช้งาน

ใช้คำสั่ง

gcloud init

ระบบจะให้ดำเนินการ เช่น

  • Login
  • เลือก Google Cloud Project
  • ตั้งค่า Configuration

ตรวจสอบ Configuration ปัจจุบัน

gcloud config list

#8. Login

สามารถ Login โดยตรงด้วย

gcloud auth login

Browser จะเปิดขึ้นเพื่อให้ยืนยันบัญชี Google

ตรวจสอบบัญชี

gcloud auth list

ตัวอย่างแนวคิดของกระบวนการ

Developer
   |
   v
gcloud auth login
   |
   v
Google Identity
   |
   v
Access Token / Credentials
   |
   v
Google Cloud APIs

สำหรับเครื่อง Developer การใช้ gcloud auth login เหมาะกับ interactive user แต่ไม่ควรนำ user credential รูปแบบนี้ไปใช้แทน workload identity ใน production automation


#Part 3: จัดการ Project

#9. แสดงรายการ Project

gcloud projects list

กำหนด Project ที่ต้องการใช้งาน

gcloud config set project PROJECT_ID

ตัวอย่าง

gcloud config set project my-cloud-lab-123

ตรวจสอบ

gcloud config get-value project

หรือ

gcloud config list

#10. กำหนด Region และ Zone

สำหรับ Workshop นี้สามารถใช้ Singapore region เป็นตัวอย่าง

gcloud config set compute/region asia-southeast1
gcloud config set compute/zone asia-southeast1-b

ตรวจสอบ

gcloud config list

Zone และบริการที่เปิดให้ใช้งานอาจแตกต่างกันตาม Region ควรตรวจสอบก่อนสร้าง Resource จริง


#Part 4: จัดการ APIs

Google Cloud Services หลายรายการต้องเปิด API ก่อนใช้งาน

ตรวจสอบ API ที่เปิดแล้ว

gcloud services list --enabled

เปิด Compute Engine API

gcloud services enable compute.googleapis.com

เปิดบริการที่ใช้ใน Workshop

gcloud services enable \
  compute.googleapis.com \
  storage.googleapis.com \
  artifactregistry.googleapis.com \
  run.googleapis.com \
  cloudbuild.googleapis.com \
  container.googleapis.com

#Part 5: Workshop Compute Engine

#11. แสดง VM

gcloud compute instances list

#12. สร้าง VM

ตัวอย่างสร้าง VM ขนาดเล็ก

gcloud compute instances create web-server \
  --zone=asia-southeast1-b \
  --machine-type=e2-micro \
  --image-family=debian-12 \
  --image-project=debian-cloud

ตรวจสอบ

gcloud compute instances list

#13. SSH เข้า VM

gcloud compute ssh web-server \
  --zone=asia-southeast1-b

เมื่อเข้า VM แล้วทดลอง

hostname
uname -a

ออกจาก VM

exit

#14. Start / Stop VM

หยุด VM

gcloud compute instances stop web-server \
  --zone=asia-southeast1-b

เปิด VM

gcloud compute instances start web-server \
  --zone=asia-southeast1-b

ดูรายละเอียด

gcloud compute instances describe web-server \
  --zone=asia-southeast1-b

#15. ลบ VM

gcloud compute instances delete web-server \
  --zone=asia-southeast1-b

ตอบ Y เพื่อยืนยัน หรือใช้ --quiet เฉพาะกรณี automation ที่ออกแบบการตรวจสอบมาแล้ว


#Part 6: Workshop Cloud Storage

#16. สร้าง Bucket

ชื่อ Bucket ต้อง unique ใน namespace ของ Cloud Storage

กำหนดตัวแปรก่อน

export BUCKET_NAME=my-gcloud-workshop-UNIQUE_ID

สร้าง Bucket

gcloud storage buckets create gs://$BUCKET_NAME \
  --location=asia-southeast1

ตรวจสอบ

gcloud storage buckets list

#17. Upload File

สร้างไฟล์

echo "Hello Google Cloud CLI" > hello.txt

Upload

gcloud storage cp hello.txt gs://$BUCKET_NAME/

แสดงไฟล์

gcloud storage ls gs://$BUCKET_NAME

Download

gcloud storage cp gs://$BUCKET_NAME/hello.txt downloaded.txt

#18. ลบ Bucket

ลบ Object ก่อน

gcloud storage rm gs://$BUCKET_NAME/hello.txt

จากนั้นลบ Bucket

gcloud storage buckets delete gs://$BUCKET_NAME

#Part 7: Workshop Artifact Registry

Artifact Registry ใช้เก็บ Artifact เช่น Docker Container Images

#19. สร้าง Docker Repository

กำหนดค่าตัวแปร

export REGION=asia-southeast1
export REPOSITORY=workshop-repo

สร้าง Repository

gcloud artifacts repositories create $REPOSITORY \
  --repository-format=docker \
  --location=$REGION \
  --description="Docker repository for gcloud workshop"

ตรวจสอบ

gcloud artifacts repositories list

#20. ตั้งค่า Docker Authentication

gcloud auth configure-docker asia-southeast1-docker.pkg.dev

หา Project ID

export PROJECT_ID=$(gcloud config get-value project)
echo $PROJECT_ID

#21. สร้าง Container Image

สร้าง Dockerfile

FROM nginx:alpine
COPY index.html /usr/share/nginx/html/index.html

สร้าง index.html

<!DOCTYPE html>
<html>
<head>
    <title>Google Cloud CLI Workshop</title>
</head>
<body>
    <h1>Hello Google Cloud CLI</h1>
</body>
</html>

Build

docker build -t gcloud-demo:v1 .

Tag

docker tag gcloud-demo:v1 \
  $REGION-docker.pkg.dev/$PROJECT_ID/$REPOSITORY/gcloud-demo:v1

Push

docker push \
  $REGION-docker.pkg.dev/$PROJECT_ID/$REPOSITORY/gcloud-demo:v1

ตรวจสอบ Image

gcloud artifacts docker images list \
  $REGION-docker.pkg.dev/$PROJECT_ID/$REPOSITORY

#Part 8: Workshop Cloud Run

#22. Deploy Container ไป Cloud Run

ใช้ Image ที่ Push ไว้ใน Artifact Registry

gcloud run deploy gcloud-demo \
  --image=$REGION-docker.pkg.dev/$PROJECT_ID/$REPOSITORY/gcloud-demo:v1 \
  --region=$REGION \
  --allow-unauthenticated

เมื่อสำเร็จ Cloud Run จะแสดง URL ของ Service

ตรวจสอบ Service

gcloud run services list \
  --region=$REGION

ดูรายละเอียด

gcloud run services describe gcloud-demo \
  --region=$REGION

--allow-unauthenticated ทำให้ Service เรียกจาก Internet ได้โดยไม่ต้อง Login จึงควรใช้เฉพาะบริการที่ตั้งใจเปิด public


#23. ดู Logs

gcloud run services logs read gcloud-demo \
  --region=$REGION

#24. ลบ Cloud Run Service

gcloud run services delete gcloud-demo \
  --region=$REGION

#Part 9: Workshop GKE

#25. ติดตั้ง kubectl Component

ขึ้นกับวิธีที่ติดตั้ง Google Cloud CLI และ OS อาจติดตั้ง kubectl ผ่าน package manager หรือ component manager

ตรวจสอบก่อน

kubectl version --client

#26. สร้าง GKE Cluster

ขั้นตอนนี้อาจมีค่าใช้จ่ายมากกว่า Workshop ส่วนอื่น ควรตรวจสอบ Billing และ Quota ก่อนดำเนินการ

ตัวอย่างสร้าง Autopilot Cluster

gcloud container clusters create-auto workshop-cluster \
  --region=asia-southeast1

ตรวจสอบ

gcloud container clusters list

#27. รับ Kubernetes Credentials

gcloud container clusters get-credentials workshop-cluster \
  --region=asia-southeast1

จากนั้น

kubectl get nodes

#28. Deploy NGINX

kubectl create deployment nginx \
  --image=nginx:alpine

ตรวจสอบ

kubectl get deployments
kubectl get pods

สร้าง Service

kubectl expose deployment nginx \
  --type=LoadBalancer \
  --port=80

ตรวจสอบ

kubectl get service

รอจน EXTERNAL-IP พร้อมใช้งาน


#29. Cleanup GKE

ลบ Cluster

gcloud container clusters delete workshop-cluster \
  --region=asia-southeast1

#Part 10: Output Formats สำหรับ Automation

ข้อดีสำคัญของ gcloud คือสามารถกำหนดรูปแบบ Output ได้

#Table

gcloud compute instances list \
  --format="table(name,zone,status)"

#JSON

gcloud compute instances list \
  --format=json

#Value

gcloud config get-value project

หรือเลือก field จาก Resource

gcloud compute instances list \
  --format="value(name)"

รูปแบบเหล่านี้มีประโยชน์มากสำหรับ Shell Script และ CI/CD


#Part 11: Configuration หลาย Environment

สามารถสร้าง Configuration แยกระหว่าง Development และ Production ได้

สร้าง

gcloud config configurations create development

ตั้ง Project

gcloud config set project DEV_PROJECT_ID

สร้างอีก Configuration

gcloud config configurations create production
gcloud config set project PROD_PROJECT_ID

ดูทั้งหมด

gcloud config configurations list

สลับกลับ Development

gcloud config configurations activate development

วิธีนี้ช่วยลดความเสี่ยงในการสั่งงานผิด Project


#Part 12: ตัวอย่าง Shell Script

ตัวอย่างตรวจสอบ VM

#!/bin/bash

PROJECT_ID="my-project"
ZONE="asia-southeast1-b"

gcloud config set project "$PROJECT_ID"

gcloud compute instances list \
  --filter="zone:$ZONE" \
  --format="table(name,status,networkInterfaces[0].networkIP)"

ให้สิทธิ์ Execute

chmod +x check-vm.sh

Run

./check-vm.sh

#Part 13: Google Cloud CLI กับ CI/CD

ภาพรวม Pipeline สามารถออกแบบได้ดังนี้

Developer
   |
   v
Git Repository
   |
   v
CI/CD Pipeline
   |
   +--> Test
   |
   +--> Build Container
   |
   +--> Authenticate to Google Cloud
   |
   +--> Push Artifact Registry
   |
   +--> gcloud run deploy
   |
   v
Cloud Run

สำหรับ Production CI/CD ควรใช้แนวทาง identity ของ workload เช่น Workload Identity Federation หรือ credential mechanism ที่ระบบ CI รองรับ แทนการนำ credential จาก gcloud auth login ของผู้ใช้ไปเก็บใน Pipeline


#Part 14: คำสั่งที่ควรรู้

# Version
gcloud version

# Initialize
gcloud init

# Login
gcloud auth login

# Accounts
gcloud auth list

# Projects
gcloud projects list

# Current configuration
gcloud config list

# Set project
gcloud config set project PROJECT_ID

# Enabled APIs
gcloud services list --enabled

# VM
gcloud compute instances list

# Storage
gcloud storage buckets list

# Artifact Registry
gcloud artifacts repositories list

# Cloud Run
gcloud run services list

# GKE
gcloud container clusters list

# Help
gcloud help

#Part 15: Cleanup Checklist

หลัง Workshop ตรวจสอบ Resource ที่ยังทำงานอยู่

gcloud compute instances list
gcloud storage buckets list
gcloud artifacts repositories list
gcloud run services list --region=asia-southeast1
gcloud container clusters list

หาก Repository ใช้สำหรับ Workshop เท่านั้น สามารถลบได้

gcloud artifacts repositories delete workshop-repo \
  --location=asia-southeast1

ควรตรวจสอบ Cloud Console/Billing เพิ่มเติมเพื่อให้แน่ใจว่าไม่มี Resource อื่นจากการทดลองค้างอยู่


#สรุป

Google Cloud CLI ทำให้เราจัดการ Google Cloud ผ่าน Terminal ได้อย่างเป็นระบบ และเป็นพื้นฐานสำคัญสำหรับ Cloud Automation และ DevOps

หลังจบ Workshop ผู้เรียนควรเข้าใจ workflow หลักดังนี้

Install gcloud
      |
      v
Authenticate
      |
      v
Select Project
      |
      v
Enable APIs
      |
      +-------------------+
      |                   |
      v                   v
Compute Engine        Cloud Storage
      |                   |
      +---------+---------+
                |
                v
        Artifact Registry
                |
                v
            Cloud Run
                |
                v
               GKE

จุดสำคัญไม่ใช่เพียงจำคำสั่ง แต่คือเข้าใจว่า gcloud เป็น automation interface ของ Google Cloud ซึ่งสามารถนำไปต่อยอดเป็น Shell Script, Infrastructure workflow และ CI/CD Pipeline ได้


#แบบฝึกหัดท้าย Workshop

  1. สร้าง Configuration ชื่อ workshop
  2. ตั้ง Project และ Region เป็น asia-southeast1
  3. สร้าง Compute Engine VM จำนวน 1 เครื่อง
  4. ใช้ gcloud compute ssh เข้า VM
  5. สร้าง Cloud Storage Bucket และ Upload ไฟล์
  6. สร้าง Artifact Registry Docker Repository
  7. Build และ Push NGINX Image
  8. Deploy Image ไปยัง Cloud Run
  9. แสดง Cloud Run Service ด้วย gcloud
  10. Cleanup Resource ทั้งหมดหลังทดสอบเสร็จ

#Challenge

สร้าง Shell Script ชื่อ

deploy.sh

ให้ทำงานตามลำดับ

Build Docker Image
       |
       v
Tag Image
       |
       v
Push Artifact Registry
       |
       v
Deploy Cloud Run
       |
       v
Display Service URL

จากนั้นนำ Script ไปต่อยอดกับ GitHub Actions, GitLab CI/CD หรือ Jenkins


#เอกสารอ้างอิง