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

1. ภาพรวม

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

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

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

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

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

การตั้งค่าโปรเจ็กต์ Cloud

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

b35bf95b8bf3d5d8.pnga99b7ace416376c4.pngbd84a6d3004737c5.png

  • ชื่อโปรเจ็กต์ คือชื่อที่แสดงสำหรับผู้เข้าร่วมโปรเจ็กต์นี้ ซึ่งเป็นสตริงอักขระที่ Google APIs ไม่ได้ใช้ คุณสามารถอัปเดตได้ทุกเมื่อ
  • รหัสโปรเจ็กต์ ต้องไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมดและเปลี่ยนแปลงไม่ได้ (ไม่สามารถเปลี่ยนได้หลังจากตั้งค่าแล้ว) Cloud Console จะสร้างสตริงที่ไม่ซ้ำกันโดยอัตโนมัติ ซึ่งโดยปกติแล้วคุณไม่จำเป็นต้องสนใจว่าสตริงนั้นคืออะไร ใน Codelab ส่วนใหญ่ คุณจะต้องอ้างอิงรหัสโปรเจ็กต์ (โดยทั่วไปจะระบุเป็น PROJECT_ID) หากไม่ชอบรหัสที่สร้างขึ้น คุณสามารถสร้างรหัสแบบสุ่มอีกรหัสหนึ่งได้ หรือจะลองใช้รหัสของคุณเองและดูว่ารหัสดังกล่าวพร้อมใช้งานหรือไม่ก็ได้ คุณจะเปลี่ยนรหัสไม่ได้หลังจากขั้นตอนนี้ และรหัสจะยังคงอยู่ตลอดระยะเวลาของโปรเจ็กต์
  • โปรดทราบว่ามีค่าที่ 3 คือหมายเลขโปรเจ็กต์ ซึ่ง API บางรายการใช้ ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าทั้ง 3 นี้ได้ใน เอกสารประกอบ
  1. จากนั้นคุณจะต้อง เปิดใช้การเรียกเก็บเงิน ใน Cloud Console เพื่อใช้ทรัพยากร/API ของ Cloud การทำตาม 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 Job

การสร้างฐานข้อมูล AlloyDB ทำได้หลายวิธี วิธีหนึ่งคือการสร้าง VM ของ Compute Engine, ติดตั้งไคลเอ็นต์ psql แล้วเชื่อมต่อกับอินสแตนซ์เพื่อสร้างฐานข้อมูล อ่านเพิ่มเติมเกี่ยวกับแนวทางนี้ได้ที่นี่ ที่นี่

ในแล็บนี้ คุณจะได้สร้างฐานข้อมูล 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 Job

กำหนดค่าการเข้าถึง 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 Job

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 Job จะใช้เครื่องมือเชื่อมต่อ VPC เพื่อเข้าถึงที่อยู่ IP ส่วนตัวของ AlloyDB

ตรวจสอบงานที่สร้างขึ้นใน Cloud Console

93d8224eca8c687f.png

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

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

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

3f2269736b53f44c.png

6. ยินดีด้วย

ยินดีด้วย คุณทำ Codelab นี้เสร็จแล้ว

สิ่งที่เราได้พูดถึง

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

ล้างข้อมูล

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

การลบโปรเจ็กต์

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