กำลังสร้างฐานข้อมูล AlloyDB ด้วย Cloud Run Job

1. ภาพรวม

ใน Lab นี้ คุณจะสร้างฐานข้อมูล AlloyDB ด้วย Cloud Run Job คุณจะต้องกำหนดค่าการเข้าถึงบริการส่วนตัวและการเข้าถึง VPC แบบ Serverless เพื่อเปิดใช้การเชื่อมต่อระหว่าง Cloud Run Job และฐานข้อมูล AlloyDB โดยใช้ IP ส่วนตัว

สิ่งที่คุณจะได้เรียนรู้

ในห้องทดลองนี้ คุณจะได้ศึกษาวิธีทำสิ่งต่อไปนี้

  • ตั้งค่าคลัสเตอร์และอินสแตนซ์ของ AlloyDB
  • ทำให้งาน Cloud Run ใช้งานได้เพื่อสร้างฐานข้อมูล AlloyDB

2. การตั้งค่าและข้อกำหนด

ตั้งค่าโปรเจ็กต์ที่อยู่ในระบบคลาวด์

  1. ลงชื่อเข้าใช้ Google Cloud Console และสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่อีกครั้ง หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

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

การตั้งค่าสภาพแวดล้อม

เปิดใช้งาน Cloud Shell โดยคลิกไอคอนทางด้านขวาของแถบค้นหา

eb0157a992f16fa3.png

หากต้องการเปิดใช้ 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 ที่อยู่ในโปรเจ็กต์ระบบคลาวด์เดียวกับ 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

568d273c0e0d6408.png

บันทึกที่อยู่ 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

93d8224eca8c687f.png

เรียกใช้งาน Cloud Run เพื่อสร้างฐานข้อมูล test

gcloud beta run jobs execute db-job --region $REGION

ตรวจสอบบันทึกงาน Cloud Run ใน Cloud Console

3f2269736b53f44c.png

6. ยินดีด้วย

ยินดีด้วย คุณศึกษา Codelab จบแล้ว

สิ่งที่เราได้พูดคุยกันมีดังนี้

  • วิธีสร้างคลัสเตอร์และอินสแตนซ์ AlloyDB
  • วิธีสร้างฐานข้อมูล AlloyDB โดยใช้ Cloud Run Job

ล้างข้อมูล

เพื่อหลีกเลี่ยงไม่ให้เกิดการเรียกเก็บเงินกับบัญชี Google Cloud สำหรับทรัพยากรที่ใช้ในบทแนะนำนี้ โปรดลบโปรเจ็กต์ที่มีทรัพยากรดังกล่าวหรือเก็บโปรเจ็กต์ไว้และลบทรัพยากรแต่ละรายการ

กำลังลบโปรเจ็กต์

วิธีที่ง่ายที่สุดในการยกเลิกการเรียกเก็บเงินคือการลบโปรเจ็กต์ที่คุณสร้างไว้สำหรับบทแนะนำ