使用 Cloud Run 作业创建 AlloyDB 数据库

使用 Cloud Run 作业创建 AlloyDB 数据库

关于此 Codelab

subject上次更新时间:8月 10, 2022
account_circleAndrey Shakirov 编写

1. 概览

在本实验中,您将使用 Cloud Run 作业创建一个 AlloyDB 数据库。您将配置专用服务访问通道无服务器 VPC 访问通道,以使用专用 IP 在 Cloud Run 作业和 AlloyDB 数据库之间建立连接。

学习内容

在本实验中,您将学习如何完成以下操作:

  • 设置 AlloyDB 集群和实例
  • 部署 Cloud Run 作业以创建 AlloyDB 数据库

2. 设置和要求

Cloud 项目设置

  1. 登录 Google Cloud 控制台,然后创建一个新项目或重复使用现有项目。如果您还没有 Gmail 或 Google Workspace 账号,则必须创建一个

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • 项目名称是此项目参与者的显示名称。它是 Google API 尚未使用的字符串。您可以随时对其进行更新。
  • 项目 ID 在所有 Google Cloud 项目中必须是唯一的,并且不可变(一经设置便无法更改)。Cloud 控制台会自动生成一个唯一字符串;通常您不在乎这是什么在大多数 Codelab 中,您都需要引用项目 ID(它通常标识为 PROJECT_ID)。如果您不喜欢生成的 ID,可以再随机生成一个 ID。或者,您也可以尝试自己的项目 ID,看看是否可用。完成此步骤后便无法更改该 ID,并且该 ID 在项目期间会一直保留。
  • 此外,还有第三个值,即某些 API 使用的项目编号,供您参考。如需详细了解所有这三个值,请参阅文档
  1. 接下来,您需要在 Cloud 控制台中启用结算功能,以便使用 Cloud 资源/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 作业连接到 AlloyDB 数据库。

gcloud projects add-iam-policy-binding $PROJECT_NAME \
 
--member="serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
 
--role="roles/alloydb.client"

配置专用服务访问通道

专用服务访问通道是作为 VPC 网络与 AlloyDB 资源(集群和实例)所在的底层 Google Cloud VPC 网络之间的 VPC 对等互连连接实现的。通过专用连接,VPC 网络中的资源可以使用内部 IP 地址与其仅访问的 AlloyDB 资源进行通信。VPC 网络中的资源不需要接入互联网或具备外部 IP 地址,即可访问 AlloyDB 资源。

如需在与 AlloyDB 位于同一 Cloud 项目的 VPC 网络中创建专用服务访问通道配置,请执行两项操作:

在 VPC 网络中创建分配的 IP 地址范围。

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 控制台中查看创建的集群

568d273c0e0d6408

将数据库 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 数据库。一种方法是创建 Compute Engine 虚拟机,安装 psql 客户端,然后连接到实例以创建数据库。如需详细了解此方法,请点击此处

在本实验中,您将使用 Cloud Run 作业创建一个新的 AlloyDB 数据库。

请查看以下文件:

  • Dockerfile - 安装所需的依赖项(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 访问通道。这样,Cloud Run 作业就可以使用内部/专用 IP 与 AlloyDB 集群进行通信。此步骤大约需要 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 连接器访问 AlloyDB 专用 IP 地址。

在 Cloud 控制台中查看已创建的作业

93d8224eca8c687f

执行 Cloud Run 作业以创建“test”数据库。

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

在 Cloud 控制台中查看 Cloud Run 作业日志

3f2269736b53f44c

6. 恭喜!

恭喜,您已完成此 Codelab!

所学内容:

  • 如何创建 AlloyDB 集群和实例
  • 如何使用 Cloud Run 作业创建 AlloyDB 数据库

清理

为避免因本教程中使用的资源导致您的 Google Cloud 账号产生费用,请删除包含这些资源的项目,或者保留项目但删除各个资源。

删除项目

若要避免产生费用,最简单的方法是删除您为本教程创建的项目。