เกี่ยวกับ Codelab นี้
1 ภาพรวม
ใน Lab นี้ คุณจะสร้างฐานข้อมูล AlloyDB ด้วย Cloud Run Job คุณจะต้องกำหนดค่าการเข้าถึงบริการส่วนตัวและการเข้าถึง VPC แบบ Serverless เพื่อเปิดใช้การเชื่อมต่อระหว่าง Cloud Run Job และฐานข้อมูล AlloyDB โดยใช้ IP ส่วนตัว
สิ่งที่คุณจะได้เรียนรู้
ในห้องทดลองนี้ คุณจะได้ศึกษาวิธีทำสิ่งต่อไปนี้
- ตั้งค่าคลัสเตอร์และอินสแตนซ์ของ AlloyDB
- ทำให้งาน Cloud Run ใช้งานได้เพื่อสร้างฐานข้อมูล AlloyDB
2 การตั้งค่าและข้อกำหนด
ตั้งค่าโปรเจ็กต์ที่อยู่ในระบบคลาวด์
- ลงชื่อเข้าใช้ Google Cloud Console และสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี
- ชื่อโครงการคือชื่อที่แสดงของผู้เข้าร่วมโปรเจ็กต์นี้ เป็นสตริงอักขระที่ Google APIs ไม่ได้ใช้ โดยคุณจะอัปเดตได้ทุกเมื่อ
- รหัสโปรเจ็กต์ต้องไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมดและจะเปลี่ยนแปลงไม่ได้ (เปลี่ยนแปลงไม่ได้หลังจากตั้งค่าแล้ว) Cloud Console จะสร้างสตริงที่ไม่ซ้ำกันโดยอัตโนมัติ ปกติแล้วคุณไม่สนว่าอะไรเป็นอะไร ใน Codelab ส่วนใหญ่ คุณจะต้องอ้างอิงรหัสโปรเจ็กต์ (โดยปกติจะระบุเป็น
PROJECT_ID
) หากคุณไม่ชอบรหัสที่สร้างขึ้น คุณสามารถสร้างรหัสแบบสุ่มอื่นได้ หรือคุณจะลองดำเนินการเองแล้วดูว่าพร้อมให้บริการหรือไม่ และไม่สามารถเปลี่ยนแปลงได้หลังจากขั้นตอนนี้และจะยังคงอยู่ตลอดระยะเวลาของโปรเจ็กต์ - สำหรับข้อมูลของคุณ ค่าที่ 3 คือหมายเลขโปรเจ็กต์ที่ API บางตัวใช้ ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าทั้ง 3 ค่าได้ในเอกสารประกอบ
- ถัดไป คุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร/API ของระบบคลาวด์ การใช้งาน 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 และเครือข่าย Google Cloud VPC ที่สำคัญซึ่งเป็นที่อยู่ของทรัพยากร AlloyDB (คลัสเตอร์และอินสแตนซ์) ของคุณ การเชื่อมต่อส่วนตัวช่วยให้ทรัพยากรในเครือข่าย VPC สื่อสารกับทรัพยากร AlloyDB ที่เข้าถึงโดยใช้ที่อยู่ IP ภายในได้ ทรัพยากรในเครือข่าย VPC ของคุณไม่จำเป็นต้องใช้การเข้าถึงอินเทอร์เน็ตหรือที่อยู่ IP ภายนอกเพื่อเข้าถึงทรัพยากร AlloyDB
ในการสร้างการกำหนดค่าการเข้าถึงบริการส่วนตัวในเครือข่าย VPC ที่อยู่ในโปรเจ็กต์ Cloud เดียวกับ 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 - ติดตั้ง Dependencies ที่จำเป็น(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 เพื่อสร้างฐานข้อมูล test
gcloud beta run jobs execute db-job --region $REGION
ตรวจสอบบันทึกงาน Cloud Run ใน Cloud Console
6 ยินดีด้วย
ยินดีด้วย คุณศึกษา Codelab จบแล้ว
สิ่งที่เราได้พูดคุยกันมีดังนี้
- วิธีสร้างคลัสเตอร์และอินสแตนซ์ AlloyDB
- วิธีสร้างฐานข้อมูล AlloyDB โดยใช้ Cloud Run Job
ล้างข้อมูล
เพื่อหลีกเลี่ยงไม่ให้เกิดการเรียกเก็บเงินกับบัญชี Google Cloud สำหรับทรัพยากรที่ใช้ในบทแนะนำนี้ โปรดลบโปรเจ็กต์ที่มีทรัพยากรดังกล่าวหรือเก็บโปรเจ็กต์ไว้และลบทรัพยากรแต่ละรายการ
กำลังลบโปรเจ็กต์
วิธีที่ง่ายที่สุดในการยกเลิกการเรียกเก็บเงินคือการลบโปรเจ็กต์ที่คุณสร้างไว้สำหรับบทแนะนำ