Tạo cơ sở dữ liệu AlloyDB bằng công việc Cloud Run

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 Cloud Run Job. Bạn sẽ định cấu hình Quyền truy cập vào dịch vụ riêng tưQuyền truy cập VPC khô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à bản sao AlloyDB
  • Triển khai Cloud Run Job (Công việc chạy Cloud) để 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 Cloud

  1. Đăng nhập vào Google Cloud Console rồi tạo dự án mới hoặc sử dụng lại 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.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • 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ự không được API của Google 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 trong tất cả các dự án Google Cloud và không thể thay đổi (không thể thay đổi sau khi đã đặt). Cloud Console sẽ tự động tạo một chuỗi duy nhất; thường bạn không quan tâm đến sản phẩm đó là gì. 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 (mã này thường được xác định là PROJECT_ID). Nếu không thích mã đã tạo, bạn có thể tạo một mã nhận dạng ngẫu nhiên khác. Ngoài ra, bạn có thể thử phương pháp của riêng mình và xem có được cung cấp hay không. Bạn không thể thay đổi thông tin này sau bước này và thông báo đó sẽ vẫn tồn tại trong thời gian của dự án.
  • Đối với thông tin của bạn, có giá trị thứ ba, Project Number (Số dự án) mà một số API sử dụng. Tìm hiểu thêm về cả ba giá trị này trong tài liệu này.
  1. Tiếp theo, bạn sẽ phải bật tính năng thanh toán trong Cloud Console để sử dụng API/tài nguyên trên đám mây. Việc chạy qua lớp học lập trình này sẽ không tốn nhiều chi phí. Để tắt các tài nguyên nhằm tránh bị tính phí ngoài hướng dẫn này, bạn có thể xoá các tài nguyên bạ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í 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.

eb0157a992f16fa3.png

Để bật các API dịch vụ, hãy sao chép và dán lệnh bên dưới vào cửa sổ dòng lệnh 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

Thiết lập 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 cần thiết cho quá trình thiết lập. Thao tác này sẽ cho phép Cloud Run Job 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"

Thiết lập quyền truy cập vào Dịch vụ riêng tư

Quyền truy cập vào các dịch vụ riêng tư được triển khai dưới dạng 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 lưu trữ các tài nguyên (cụm và phiên bản) AlloyDB của bạn. 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à những tài nguyên đó chỉ truy cập 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 có quyền truy cập Internet hoặc địa chỉ IP bên ngoài để truy cập tài nguyên AlloyDB.

Để tạo cấu hình truy cập dịch vụ riêng tư trong mạng VPC nằm trong cùng một dự án Cloud như 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 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 bản sao 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.

568d273c0e0d6408.pngS

Lưu địa chỉ IP của cơ sở dữ liệu thành 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 Cloud Run

Có nhiều cách để tạo cơ sở dữ liệu AlloyDB. Một là tạo 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ể đó để tạo 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 cơ sở dữ liệu AlloyDB mới bằng Cloud Run Job.

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 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 với 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 lệnh Cloud Run

Định cấu hình Quyền truy cập VPC không máy chủ. Điều này cho phép Cloud Run Job 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 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

Xem lại những cờ được dùng để tạo công việc:

--vpc-connector – Cloud Run Job sẽ sử dụng trình kết nối VPC để kết nối với địa chỉ IP riêng tư AlloyDB.

Xem lại công việc đã tạo trong bảng điều khiển Cloud.

93d8224eca8c687f.pngS

Thực thi công việc trong Cloud Run để tạo cơ sở dữ liệu test.

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

Xem nhật ký công việc trên Cloud Run trong Cloud Console.

3f2269736b53f44c.png.

6. Xin chúc mừng!

Xin chúc mừng, bạn đã hoàn thành lớp học lập trình!

Những nội dung chúng ta đã đề cập:

  • Cách tạo cụm và bản sao AlloyDB
  • Cách tạo cơ sở dữ liệu AlloyDB bằng Cloud Run Job

Dọn dẹp

Để tránh làm phát sinh chi phí cho các tài nguyên được sử dụng trong hướng dẫn này trong tài khoản Google Cloud của bạn, hãy xoá dự án chứa các tài nguyên đó, hoặc giữ lại dự án và xoá từng tài nguyên riêng lẻ.

Xoá dự án

Cách dễ nhất để loại bỏ việc thanh toán là xoá dự án bạn đã tạo cho phần hướng dẫn.