1. Tổng quan
Trong phòng thí nghiệm này, bạn sẽ tạo một cơ sở dữ liệu AlloyDB bằng Công việc trên Cloud Run. Bạn sẽ định cấu hình Quyền truy cập vào dịch vụ riêng tư và Quyền truy cập VPC không dùng máy chủ để cho phép kết nối giữa Cloud Run Job và Cơ sở dữ liệu AlloyDB bằng IP riêng tư.
Kiến thức bạn sẽ học được
Trong phòng thí nghiệm này, bạn sẽ tìm hiểu cách thực hiện những việc sau:
- Thiết lập cụm và phiên bản AlloyDB
- Triển khai Công việc trên Cloud Run để tạo cơ sở dữ liệu AlloyDB
2. Thiết lập và yêu cầu
Thiết lập dự án trên đám mây
- Đăng nhập vào Google Cloud Console rồi tạo một dự án mới hoặc sử dụng lại một dự án hiện có. Nếu chưa có tài khoản Gmail hoặc Google Workspace, bạn phải tạo một tài khoản.



- Tên dự án là tên hiển thị của những người tham gia dự án này. Đây là một chuỗi ký tự mà các API của Google không sử dụng. Bạn có thể cập nhật thông tin này bất cứ lúc nào.
- Mã dự án phải là duy nhất trên tất cả các dự án trên Google Cloud và không thể thay đổi (bạn không thể thay đổi sau khi đã đặt). Cloud Console sẽ tự động tạo một chuỗi duy nhất; thường thì bạn không cần quan tâm đến chuỗi này. Trong hầu hết các lớp học lập trình, bạn sẽ cần tham chiếu đến Mã dự án (thường được xác định là
PROJECT_ID). Nếu không thích mã nhận dạng được tạo, bạn có thể tạo một mã nhận dạng ngẫu nhiên khác. Hoặc bạn có thể thử tên người dùng của riêng mình để xem tên đó có dùng được hay không. Bạn không thể thay đổi thông tin này sau bước này và thông tin này sẽ giữ nguyên trong suốt thời gian diễn ra dự án. - Để bạn biết, có một giá trị thứ ba là Số dự án mà một số API sử dụng. Tìm hiểu thêm về cả 3 giá trị này trong tài liệu.
- Tiếp theo, bạn cần bật tính năng thanh toán trong Cloud Console để sử dụng các tài nguyên/API trên Cloud. Việc thực hiện lớp học lập trình này sẽ không tốn nhiều chi phí, nếu có. Để tắt các tài nguyên nhằm tránh phát sinh phí thanh toán ngoài hướng dẫn này, bạn có thể xoá các tài nguyên đã tạo hoặc xoá toàn bộ dự án. Người dùng mới của Google Cloud đủ điều kiện tham gia chương trình Dùng thử miễn phí trị giá 300 USD.
Thiết lập môi trường
Kích hoạt Cloud Shell bằng cách nhấp vào biểu tượng ở bên phải thanh tìm kiếm.

Để bật các API dịch vụ, hãy sao chép và dán lệnh bên dưới vào thiết bị đầu cuối rồi nhấn 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
Đặt các biến môi trường:
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. Thiết lập và tạo cụm AlloyDB
Đặt các quyền bắt buộc cho chế độ thiết lập. Việc này sẽ cho phép Công việc trên Cloud Run kết nối với cơ sở dữ liệu AlloyDB.
gcloud projects add-iam-policy-binding $PROJECT_NAME \
--member="serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
--role="roles/alloydb.client"
Định cấu hình quyền truy cập vào các dịch vụ riêng tư
Quyền truy cập vào dịch vụ riêng tư được triển khai dưới dạng một kết nối ngang hàng VPC giữa mạng VPC của bạn và mạng VPC cơ bản của Google Cloud nơi các tài nguyên AlloyDB (cụm và phiên bản) của bạn cư trú. Kết nối riêng tư cho phép các tài nguyên trong mạng VPC của bạn giao tiếp với các tài nguyên AlloyDB mà chúng truy cập chỉ bằng cách sử dụng địa chỉ IP nội bộ. Các tài nguyên trong mạng VPC của bạn không cần quyền truy cập Internet hoặc địa chỉ IP ngoài để truy cập vào các tài nguyên AlloyDB.
Để tạo cấu hình truy cập vào dịch vụ riêng tư trong một mạng VPC nằm trong cùng một dự án trên đám mây với AlloyDB, bạn thực hiện hai thao tác:
Tạo một dải địa chỉ IP được phân bổ trong mạng VPC.
gcloud compute addresses create google-managed-services-default \
--global \
--purpose=VPC_PEERING \
--prefix-length=20 \
--network=projects/$PROJECT_ID/global/networks/default
Tạo một kết nối riêng tư giữa mạng VPC và mạng VPC cơ bản của Google Cloud. Bước này mất khoảng 2 phút.
gcloud services vpc-peerings connect \
--service=servicenetworking.googleapis.com \
--ranges=google-managed-services-default \
--network=default \
--project=$PROJECT_ID
Tạo một cụm 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
Tạo một phiên bản AlloyDB. Bước này mất khoảng 10 phút.
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
Xem lại cụm đã tạo trong bảng điều khiển Cloud.

Lưu địa chỉ IP của cơ sở dữ liệu vào một biến.""
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. Khám phá mã Công việc trên Cloud Run
Có nhiều cách để tạo cơ sở dữ liệu AlloyDB. Một cách là tạo một máy ảo Compute Engine, cài đặt một ứng dụng psql rồi kết nối với thực thể này để tạo một cơ sở dữ liệu. Bạn có thể đọc thêm về phương pháp này tại đây.
Trong phòng thí nghiệm này, bạn sẽ tạo một cơ sở dữ liệu AlloyDB mới bằng Công việc trên Cloud Run.
Kiểm tra các tệp bên dưới:
- Dockerfile – cài đặt các phần phụ thuộc bắt buộc(postgresql-client)
- script.sh – sử dụng các tiện ích dòng lệnh để tạo cơ sở dữ liệu
Trong Cloud Shell, hãy tạo thư mục mới:
mkdir ~/alloy-db-cloud-run-job
cd ~/alloy-db-cloud-run-job
Tạo tệp mới 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
Tạo tệp mới script.sh có nội dung bên dưới:
echo "Connecting to $DB_HOST"
createdb -h $DB_HOST -p 5432 $PGDB
echo "Created $PGDB database"
psql -h $DB_HOST -l
Thay đổi quyền trên script.sh:
chmod +x script.sh
5. Triển khai công việc trên Cloud Run
Định cấu hình quyền truy cập VPC không máy chủ. Việc này cho phép Công việc trên Cloud Run giao tiếp với cụm AlloyDB bằng IP nội bộ/riêng tư. Bước này mất khoảng 2 phút.
gcloud compute networks vpc-access connectors create ${VPC_CONNECTOR} \
--region=${REGION} \
--range=10.8.0.0/28
Tạo kho lưu trữ Artifact Registry để lưu trữ hình ảnh vùng chứa.
gcloud artifacts repositories create db-job-repository \
--repository-format=docker \
--location=$REGION
Tạo và xuất bản hình ảnh vùng chứa lên Artifact Registry.
gcloud builds submit -t $REGION-docker.pkg.dev/$PROJECT_NAME/db-job-repository/db-job:latest
Triển khai công việc trên 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
Xem lại các cờ được dùng để tạo công việc:
--vpc-connector – Công việc trên Cloud Run sẽ sử dụng trình kết nối VPC để truy cập vào địa chỉ IP riêng tư của AlloyDB.
Xem lại công việc đã tạo trong bảng điều khiển Cloud.

Thực thi Công việc trên Cloud Run để tạo cơ sở dữ liệu test.
gcloud beta run jobs execute db-job --region $REGION
Xem lại nhật ký của Công việc Cloud Run trong Cloud Console.

6. Xin chúc mừng!
Xin chúc mừng, bạn đã hoàn tất lớp học lập trình này!
Nội dung đã đề cập:
- Cách tạo cụm và thực thể AlloyDB
- Cách tạo cơ sở dữ liệu AlloyDB bằng Công việc trên Cloud Run
Dọn dẹp
Để tránh bị tính phí vào tài khoản Google Cloud của bạn cho các tài nguyên được dùng trong hướng dẫn này, hãy xoá dự án chứa các tài nguyên đó hoặc giữ lại dự án rồi xoá từng tài nguyên.
Xoá dự án
Cách dễ nhất để loại bỏ phí thanh toán là xoá dự án mà bạn đã tạo cho hướng dẫn này.