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

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

เกี่ยวกับ Codelab นี้

subjectอัปเดตล่าสุดเมื่อ ส.ค. 10, 2022
account_circleเขียนโดย Andrey Shakirov

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 ที่อยู่ในโปรเจ็กต์ 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

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 สำหรับทรัพยากรที่ใช้ในบทแนะนำนี้ โปรดลบโปรเจ็กต์ที่มีทรัพยากรดังกล่าวหรือเก็บโปรเจ็กต์ไว้และลบทรัพยากรแต่ละรายการ

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

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