1. ภาพรวม
ใน Lab นี้ คุณจะได้สร้างฐานข้อมูล AlloyDB ด้วย Cloud Run Job คุณจะกำหนดค่าการเข้าถึงบริการส่วนตัวและการเข้าถึง VPC แบบ Serverless เพื่อเปิดใช้การเชื่อมต่อระหว่างงาน Cloud Run กับฐานข้อมูล AlloyDB โดยใช้ IP ส่วนตัว
สิ่งที่คุณจะได้เรียนรู้
ในแล็บนี้ คุณจะได้เรียนรู้วิธีทำสิ่งต่อไปนี้
- ตั้งค่าคลัสเตอร์และอินสแตนซ์ AlloyDB
- ติดตั้งใช้งาน Cloud Run Job เพื่อสร้างฐานข้อมูล AlloyDB
2. การตั้งค่าและข้อกำหนด
การตั้งค่าโปรเจ็กต์ Cloud
- ลงชื่อเข้าใช้ Google Cloud Console แล้วสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี



- ชื่อโปรเจ็กต์คือชื่อที่แสดงสำหรับผู้เข้าร่วมโปรเจ็กต์นี้ ซึ่งเป็นสตริงอักขระที่ Google APIs ไม่ได้ใช้ โดยคุณจะอัปเดตได้ทุกเมื่อ
- รหัสโปรเจ็กต์ต้องไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมดและเปลี่ยนแปลงไม่ได้ (เปลี่ยนไม่ได้หลังจากตั้งค่าแล้ว) Cloud Console จะสร้างสตริงที่ไม่ซ้ำกันโดยอัตโนมัติ ซึ่งโดยปกติแล้วคุณไม่จำเป็นต้องสนใจว่าสตริงนั้นคืออะไร ใน Codelab ส่วนใหญ่ คุณจะต้องอ้างอิงรหัสโปรเจ็กต์ (โดยปกติจะระบุเป็น
PROJECT_ID) หากไม่ชอบรหัสที่สร้างขึ้น คุณก็สร้างรหัสแบบสุ่มอีกรหัสหนึ่งได้ หรือคุณจะลองใช้ชื่อของคุณเองเพื่อดูว่าพร้อมใช้งานหรือไม่ก็ได้ คุณจะเปลี่ยนแปลงรหัสนี้หลังจากขั้นตอนนี้ไม่ได้ และรหัสจะยังคงอยู่ตลอดระยะเวลาของโปรเจ็กต์ - โปรดทราบว่ายังมีค่าที่ 3 ซึ่งคือหมายเลขโปรเจ็กต์ที่ API บางตัวใช้ ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าทั้ง 3 นี้ได้ในเอกสารประกอบ
- จากนั้นคุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร/API ของ Cloud การทำตาม Codelab นี้ไม่ควรมีค่าใช้จ่ายมากนัก หรืออาจไม่มีเลย หากต้องการปิดทรัพยากรเพื่อไม่ให้มีการเรียกเก็บเงินนอกเหนือจากบทแนะนำนี้ คุณสามารถลบทรัพยากรที่สร้างขึ้นหรือลบทั้งโปรเจ็กต์ได้ ผู้ใช้ Google Cloud รายใหม่มีสิทธิ์เข้าร่วมโปรแกรมช่วงทดลองใช้ฟรีมูลค่า$300 USD
การตั้งค่าสภาพแวดล้อม
เปิดใช้งาน Cloud Shell โดยคลิกไอคอนทางด้านขวาของแถบค้นหา

หากต้องการเปิดใช้ API ของบริการ ให้คัดลอกและวางคำสั่งด้านล่างลงในเทอร์มินัล แล้วกด Enter
gcloud services enable \
alloydb.googleapis.com \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com \
run.googleapis.com \
vpcaccess.googleapis.com \
compute.googleapis.com \
servicenetworking.googleapis.com \
--quiet
ตั้งค่าตัวแปรสภาพแวดล้อม
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
export PROJECT_NAME=$(gcloud projects describe $PROJECT_ID --format='value(name)')
export DB_DATABASE=test
export DB_USER=postgres
export DB_PASSWORD=password123
export REGION=us-central1
export CLUSTER=test-cluster
export INSTANCE=test-instance
export VPC_CONNECTOR=vpcconnector
3. ตั้งค่าและสร้างคลัสเตอร์ AlloyDB
ตั้งค่าสิทธิ์ที่จำเป็นสำหรับการตั้งค่า ซึ่งจะช่วยให้ Cloud Run Job เชื่อมต่อกับฐานข้อมูล AlloyDB ได้
gcloud projects add-iam-policy-binding $PROJECT_NAME \
--member="serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
--role="roles/alloydb.client"
กำหนดค่าการเข้าถึงบริการส่วนตัว
ระบบจะใช้การเข้าถึงบริการส่วนตัวเป็นการเชื่อมต่อการเพียร์ VPC ระหว่างเครือข่าย VPC ของคุณกับเครือข่าย VPC ของ Google Cloud ที่อยู่เบื้องหลังซึ่งมีทรัพยากร AlloyDB (คลัสเตอร์และอินสแตนซ์) อยู่ การเชื่อมต่อส่วนตัวช่วยให้ทรัพยากรในเครือข่าย VPC สื่อสารกับทรัพยากร AlloyDB ที่เข้าถึงได้โดยใช้ที่อยู่ IP ภายในเท่านั้น ทรัพยากรในเครือข่าย VPC ไม่จำเป็นต้องมีสิทธิ์เข้าถึงอินเทอร์เน็ตหรือที่อยู่ IP ภายนอกเพื่อเข้าถึงทรัพยากร AlloyDB
หากต้องการสร้างการกำหนดค่าการเข้าถึงบริการส่วนตัวในเครือข่าย VPC ที่อยู่ในโปรเจ็กต์ที่อยู่ในระบบคลาวด์เดียวกันกับ AlloyDB คุณต้องดำเนินการ 2 อย่างต่อไปนี้
สร้างช่วงที่อยู่ IP ที่จัดสรรในเครือข่าย VPC
gcloud compute addresses create google-managed-services-default \
--global \
--purpose=VPC_PEERING \
--prefix-length=20 \
--network=projects/$PROJECT_ID/global/networks/default
สร้างการเชื่อมต่อส่วนตัวระหว่างเครือข่าย VPC กับเครือข่าย Google Cloud VPC ที่อยู่เบื้องหลัง ขั้นตอนนี้ใช้เวลาประมาณ 2 นาที
gcloud services vpc-peerings connect \
--service=servicenetworking.googleapis.com \
--ranges=google-managed-services-default \
--network=default \
--project=$PROJECT_ID
สร้างคลัสเตอร์ AlloyDB
gcloud beta alloydb clusters create $CLUSTER \
--password=$DB_PASSWORD \
--network=default \
--region=$REGION \
--project=$PROJECT_NAME
gcloud beta alloydb clusters describe $CLUSTER --region=$REGION
สร้างอินสแตนซ์ AlloyDB ขั้นตอนนี้ใช้เวลาประมาณ 10 นาที
gcloud beta alloydb instances create $INSTANCE \
--cluster=$CLUSTER \
--region=$REGION \
--instance-type=PRIMARY \
--cpu-count=2 \
--project=$PROJECT_NAME
gcloud beta alloydb instances describe $INSTANCE \
--cluster=$CLUSTER \
--region $REGION
ตรวจสอบคลัสเตอร์ที่สร้างขึ้นใน Cloud Console

บันทึกที่อยู่ IP ของฐานข้อมูลลงในตัวแปร""
export DB_HOST=$(gcloud beta alloydb instances describe $INSTANCE \
--cluster=$CLUSTER \
--region=$REGION \
--format=json | jq \
--raw-output ".ipAddress")
echo "DB_HOST=$DB_HOST"
4. สำรวจโค้ดของงานใน Cloud Run
การสร้างฐานข้อมูล AlloyDB ทำได้หลายวิธี วิธีหนึ่งคือการสร้าง VM ของ Compute Engine ติดตั้งไคลเอ็นต์ psql แล้วเชื่อมต่อกับอินสแตนซ์เพื่อสร้างฐานข้อมูล อ่านเพิ่มเติมเกี่ยวกับแนวทางนี้ได้ที่นี่
ใน Lab นี้ คุณจะได้สร้างฐานข้อมูล AlloyDB ใหม่โดยใช้ Cloud Run Job
ตรวจสอบไฟล์ด้านล่าง
- Dockerfile - ติดตั้งทรัพยากร Dependency ที่จำเป็น(postgresql-client)
- script.sh - ใช้ยูทิลิตีบรรทัดคำสั่งเพื่อสร้างฐานข้อมูล
สร้างโฟลเดอร์ใหม่ใน Cloud Shell โดยทำดังนี้
mkdir ~/alloy-db-cloud-run-job
cd ~/alloy-db-cloud-run-job
สร้างไฟล์ใหม่ Dockerfile:
cat > Dockerfile <<EOF
FROM ubuntu:latest
RUN apt-get update && apt-get install -y postgresql-client && apt-get clean
COPY script.sh /
RUN chmod +x /script.sh
CMD ["/script.sh"]
ENTRYPOINT ["/bin/bash"]
EOF
สร้างไฟล์ใหม่ script.sh ที่มีเนื้อหาด้านล่าง
echo "Connecting to $DB_HOST"
createdb -h $DB_HOST -p 5432 $PGDB
echo "Created $PGDB database"
psql -h $DB_HOST -l
เปลี่ยนสิทธิ์ใน script.sh ดังนี้
chmod +x script.sh
5. ติดตั้งใช้งานงานใน Cloud Run
กำหนดค่าการเข้าถึง VPC แบบ Serverless ซึ่งจะช่วยให้ Cloud Run Job สื่อสารกับคลัสเตอร์ AlloyDB โดยใช้ IP ภายใน/ส่วนตัวได้ ขั้นตอนนี้ใช้เวลาประมาณ 2 นาที
gcloud compute networks vpc-access connectors create ${VPC_CONNECTOR} \
--region=${REGION} \
--range=10.8.0.0/28
สร้างที่เก็บ Artifact Registry เพื่อจัดเก็บอิมเมจคอนเทนเนอร์
gcloud artifacts repositories create db-job-repository \
--repository-format=docker \
--location=$REGION
สร้างและเผยแพร่อิมเมจคอนเทนเนอร์ไปยัง Artifact Registry
gcloud builds submit -t $REGION-docker.pkg.dev/$PROJECT_NAME/db-job-repository/db-job:latest
ทำให้งานใน Cloud Run ใช้งานได้
gcloud beta run jobs create db-job \
--image=$REGION-docker.pkg.dev/$PROJECT_NAME/db-job-repository/db-job:latest \
--set-env-vars DB_HOST=$DB_HOST \
--set-env-vars PGUSER=$DB_USER \
--set-env-vars PGPASSWORD=$DB_PASSWORD \
--set-env-vars PGDB=$DB_DATABASE \
--vpc-connector $VPC_CONNECTOR \
--region $REGION
ตรวจสอบฟีเจอร์ที่ใช้สร้างงาน
--vpc-connector - งาน Cloud Run จะใช้เครื่องมือเชื่อมต่อ VPC เพื่อเข้าถึงที่อยู่ IP ส่วนตัวของ AlloyDB
ตรวจสอบงานที่สร้างขึ้นใน Cloud Console

เรียกใช้ Cloud Run Job เพื่อสร้างฐานข้อมูล test
gcloud beta run jobs execute db-job --region $REGION
ตรวจสอบบันทึกของ Cloud Run Job ใน Cloud Console

6. ยินดีด้วย
ยินดีด้วย คุณทำ Codelab เสร็จแล้ว
สิ่งที่เราได้พูดถึงไปแล้ว
- วิธีสร้างคลัสเตอร์และอินสแตนซ์ AlloyDB
- วิธีสร้างฐานข้อมูล AlloyDB โดยใช้ Cloud Run Job
ล้างข้อมูล
โปรดลบโปรเจ็กต์ที่มีทรัพยากรหรือเก็บโปรเจ็กต์ไว้และลบทรัพยากรแต่ละรายการเพื่อหลีกเลี่ยงการเรียกเก็บเงินจากบัญชี Google Cloud สำหรับทรัพยากรที่ใช้ในบทแนะนำนี้
การลบโปรเจ็กต์
วิธีที่ง่ายที่สุดในการยกเลิกการเรียกเก็บเงินคือการลบโปรเจ็กต์ที่คุณสร้างขึ้นสำหรับบทแนะนำ