关于此 Codelab
1. 概览
在本实验中,您将使用 Cloud Run 作业创建一个 AlloyDB 数据库。您将配置专用服务访问通道和无服务器 VPC 访问通道,以使用专用 IP 在 Cloud Run 作业和 AlloyDB 数据库之间建立连接。
学习内容
在本实验中,您将学习如何完成以下操作:
- 设置 AlloyDB 集群和实例
- 部署 Cloud Run 作业以创建 AlloyDB 数据库
2. 设置和要求
Cloud 项目设置
- 登录 Google Cloud 控制台,然后创建一个新项目或重复使用现有项目。如果您还没有 Gmail 或 Google Workspace 账号,则必须创建一个。
- 项目名称是此项目参与者的显示名称。它是 Google API 尚未使用的字符串。您可以随时对其进行更新。
- 项目 ID 在所有 Google Cloud 项目中必须是唯一的,并且不可变(一经设置便无法更改)。Cloud 控制台会自动生成一个唯一字符串;通常您不在乎这是什么在大多数 Codelab 中,您都需要引用项目 ID(它通常标识为
PROJECT_ID
)。如果您不喜欢生成的 ID,可以再随机生成一个 ID。或者,您也可以尝试自己的项目 ID,看看是否可用。完成此步骤后便无法更改该 ID,并且该 ID 在项目期间会一直保留。 - 此外,还有第三个值,即某些 API 使用的项目编号,供您参考。如需详细了解所有这三个值,请参阅文档。
- 接下来,您需要在 Cloud 控制台中启用结算功能,以便使用 Cloud 资源/API。运行此 Codelab 应该不会产生太多的费用(如果有费用的话)。如需关停资源,以免产生超出本教程范围的结算费用,您可以删除自己创建的资源或删除整个项目。Google Cloud 的新用户符合参与 $300 USD 免费试用计划的条件。
环境设置
点击搜索栏右侧的图标,激活 Cloud Shell。
要启用服务 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 控制台中查看创建的集群。
将数据库 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 控制台中查看已创建的作业。
执行 Cloud Run 作业以创建“test
”数据库。
gcloud beta run jobs execute db-job --region $REGION
在 Cloud 控制台中查看 Cloud Run 作业日志。
6. 恭喜!
恭喜,您已完成此 Codelab!
所学内容:
- 如何创建 AlloyDB 集群和实例
- 如何使用 Cloud Run 作业创建 AlloyDB 数据库
清理
为避免因本教程中使用的资源导致您的 Google Cloud 账号产生费用,请删除包含这些资源的项目,或者保留项目但删除各个资源。
删除项目
若要避免产生费用,最简单的方法是删除您为本教程创建的项目。