第 4 步:设置组件
本页介绍了部署 Cortex Framework 数据基础(Cortex Framework 的核心)的第四步。在此步骤中,您将设置要部署的必需Google Cloud 服务。
启用 Google Cloud 服务
在本部分中,您将在Google Cloud 项目中启用以下 Google Cloud 服务:
- BigQuery 实例和数据集
- Cloud Build API
- Cloud Storage 存储分区
- 服务账号
- Cloud Resource Manager API
- Data Catalog API(如果部署 Datamesh)
- 工作流执行作业(如果部署 Cortex for Meridian)
- AI 平台(如果部署 Cortex for Meridian)
使用 Cloud Shell 启用这些 Google Cloud 服务:
复制并粘贴以下命令:
gcloud config set project SOURCE_PROJECT gcloud services enable bigquery.googleapis.com \ cloudbuild.googleapis.com \ composer.googleapis.com \ storage-component.googleapis.com \ cloudresourcemanager.googleapis.com \ dataflow.googleapis.com \ datacatalog.googleapis.com \ workflowexecutions.googleapis.com \ workflows.googleapis.com \ aiplatform.googleapis.com
将
SOURCE_PROJECT
替换为源项目 ID。如果您收到成功消息,请验证 Google Cloud 服务是否已启用。
可选。您可以在Google Cloud 项目中启用以下 Google Cloud 服务:
- Cloud Composer,用于通过有向无环图 (DAG) 处理变更数据捕获 (CDC)、层次结构扁平化(仅限 SAP)和数据复制(仅限非 SAP)。 如需设置实例,请参阅 Cloud Composer 文档。
- Looker,用于连接到报告模板。
- BigQuery Sharing(以前称为 Analytics Hub)关联的数据集用于某些外部来源,例如 Weather DAG。对于高级方案,您可以选择使用任何其他可用来源来填充此结构。
- Dataflow:适用于许多营销数据集(例如 Google Ads)的集成工具。
- Dataplex Universal Catalog:用于构建数据网格。如需了解详情,请参阅 Data Mesh 用户指南。
- 对于采用 Meridian 的 Cortex Framework:
- Colab Enterprise:在运行 Colab Enterprise 笔记本期间和执行期间,有权访问以下内容:
- Cloud Storage 中的笔记本和配置文件。
- 查询相关的 BigQuery 视图和表。
- 将结果写回 Cloud Storage。
- Workflows:运行工作流和 Cloud Build 以触发 Colab Enterprise 笔记本执行。
向执行用户授予权限
使用Google Cloud 控制台或 Google Cloud CLI 向执行用户授予以下权限,以便在触发 Cloud Build 的项目中执行部署:
- Service Usage Consumer (
roles/serviceusage.serviceUsageConsumer
) - Storage Object Viewer (
roles/storage.objectViewer
) - Storage Admin (
roles/storage.admin
) - Cloud Build Editor (
roles/cloudbuild.builds.editor
) - Project Reader (
roles/reader
) - BigQuery Job User (
roles/bigquery.jobUser
) BigQuery Data Editor (
roles/bigquery.dataEditor
)
控制台
在 Google Cloud 控制台中打开 IAM 页面:
选择您的项目,然后点击继续。
点击授予访问权限。
输入执行用户的电子邮件地址。
从下拉菜单中选择以下角色:
- Service Usage Consumer (
roles/serviceusage.serviceUsageConsumer
) - Storage Object Viewer (
roles/storage.objectViewer
) - Storage Admin (
roles/storage.admin
) - Cloud Build Editor (
roles/cloudbuild.builds.editor
) - Project Reader (
roles/reader
) - BigQuery Job User (
roles/bigquery.jobUser
) - BigQuery Data Editor (
roles/bigquery.dataEditor
)
- Service Usage Consumer (
点击保存。
gcloud
如需向用户授予角色,请运行 add-iam-policy-binding
命令:
gcloud projects add-iam-policy-binding SOURCE_PROJECT \
--member="user:USER_EMAIL" \
--role="roles/serviceusage.serviceUsageConsumer"
gcloud projects add-iam-policy-binding SOURCE_PROJECT \
--member="user:USER_EMAIL" \
--role="roles/storage.objectViewer"
gcloud projects add-iam-policy-binding SOURCE_PROJECT \
--member="user:USER_EMAIL" \
--role="roles/storage.admin"
gcloud projects add-iam-policy-binding SOURCE_PROJECT \
--member="user:USER_EMAIL" \
--role="roles/cloudbuild.builds.editor"
gcloud projects add-iam-policy-binding SOURCE_PROJECT \
--member="user:USER_EMAIL" \
--role="roles/reader"
gcloud projects add-iam-policy-binding SOURCE_PROJECT \
--member="user:USER_EMAIL" \
--role="roles/bigquery.jobUser"
gcloud projects add-iam-policy-binding SOURCE_PROJECT \
--member="user:USER_EMAIL" \
--role="roles/bigquery.dataEditor"
替换以下内容:
- 将
SOURCE_PROJECT
替换为源项目 ID。 - 将
USER_EMAIL
替换为执行用户的电子邮件地址。 例如,user:my-user@example.com。如需查看主账号或member
类型的完整列表,请参阅政策绑定参考文档。
创建和配置 Cloud Build 服务账号
Cloud Build 使用服务账号代表您执行构建。本部分将引导您为 Cortex Framework 部署创建专用服务账号,并向 Cloud Build 服务账号授予必要的权限。
创建新服务账号
创建专用服务账号以部署 Cortex Framework,从而增强安全性和控制力。创建新的服务账号后,您可以在部署过程中使用 _BUILD_ACCOUNT
替换参数指定此服务账号。
在开始之前,您需要启用 IAM API、设置身份验证,并了解 IAM 服务账号和角色。如需了解详情,请参阅创建服务账号。
使用 Google Cloud 控制台或 Google Cloud CLI 创建此新服务账号。
控制台
前往服务账号页面。
其余步骤会显示在 Google Cloud 控制台中。
选择一个 Google Cloud 项目。
输入服务账号和显示名称,并提供说明,以便在 Google Cloud 控制台中显示。 Google Cloud 控制台会根据此名称生成服务账号 ID。如有必要,请修改 ID。您以后无法更改 ID。 为服务账号使用以下默认值:
- 名称:“cortex-deployer”。
- 说明:“Cortex Deployer 服务账号”。
- 显示名称:“Cortex Deployer”。
向用户授予对此服务账号的访问权限。
- 添加可以通过服务账号运行部署的所有用户(包括您自己)的 ID。
- 分配 Service Account Token Creator 角色。如需详细了解此角色,请参阅服务账号角色。
点击完成以完成服务账号的创建过程。
如果您已有服务账号,请按照以下步骤操作:
- 转到服务账号。
- 选择服务账号。
- 点击权限标签页。
- 点击授予访问权限。
- 添加可以通过服务账号运行部署的所有用户(包括您自己)的 ID。
- 分配 Service Account Token Creator 角色。
gcloud
通过 IAM 政策创建服务账号,使用以下命令:
gcloud iam service-accounts create cortex-deployer \ --description="Cortex Deployer Service Account" \ --display-name="Cortex Deployer"
使用以下命令将 IAM 政策添加到您的 Google Cloud 项目:
gcloud projects add-iam-policy-binding SOURCE_PROJECT \ --member="serviceAccount:cortex-deployer@SOURCE_PROJECT.iam.gserviceaccount.com" \ --role="roles/cloudbuild.builds.editor"
添加可以通过服务账号运行部署的所有用户(包括您自己)的 ID,并使用以下命令为他们分配 Service Account Token Creator 角色:
gcloud iam service-accounts add-iam-policy-binding cortex-deployer\ --member="user:USER_EMAIL" \ --role="roles/iam.serviceAccountTokenCreator"
替换以下内容:
SOURCE_PROJECT
,并使用源项目部署 Cortex Framework Data Foundation。- 将
USER_EMAIL
替换为执行用户的电子邮件地址。
如需详细了解如何创建新的服务账号,请参阅创建服务账号。
授予权限
Cloud Build 服务账号需要在源项目(以及目标项目,如果您要部署到单独的项目)中拥有特定权限。使用 Google Cloud 控制台或 Google Cloud CLI 授予以下角色:
- Cloud Build 服务账号 (
roles/cloudbuild.builds.builder
) - Service Account User (
roles/iam.serviceAccountUser
) - BigQuery Data Editor (
roles/bigquery.dataEditor
) - BigQuery Job User (
roles/bigquery.jobUser
) - Logs Writer (
roles/logging.logWriter
) - Colab Enterprise 管理员(
roles/aiplatform.colabEnterpriseAdmin
- 如果部署 Cortex for Meridian) - Storage Object User(
roles/storage.objectUser
- 如果部署 Cortex for Meridian) Workflows Editor(
roles/workflows.editor
- 如果部署了 Cortex for Meridian)
控制台
在 Google Cloud 控制台中,前往 IAM 页面。
选择源项目。
点击
授予访问权限。将上一步中的默认 Cloud Build 服务账号添加为新主账号。
在选择角色下拉菜单中,搜索 Cloud Build 服务账号,然后点击 Cloud Build 服务账号。
重复上一步,添加其余角色:
- Service Account User
- BigQuery Data Editor
- BigQuery Job User
- Logs Writer
- Colab Enterprise 管理员(如果部署 Cortex for Meridian)
- Storage Object User(如果部署 Cortex for Meridian)
- Workflows Editor(如果部署 Cortex for Meridian)
点击保存。
验证服务账号及对应的角色是否在 IAM 页面中列出。 您已成功授予 IAM 角色。
gcloud
使用以下命令向 Cloud Build 服务账号授予角色:
gcloud projects add-iam-policy-binding SOURCE_PROJECT \
--member="serviceAccount:CLOUD_BUILD_SA" \
--role="roles/cloudbuild.builds.builder"
gcloud projects add-iam-policy-binding SOURCE_PROJECT \
--member="serviceAccount:CLOUD_BUILD_SA" \
--role="roles/iam.serviceAccountUser"
gcloud projects add-iam-policy-binding SOURCE_PROJECT \
--member="serviceAccount:CLOUD_BUILD_SA" \
--role="roles/bigquery.dataEditor"
gcloud projects add-iam-policy-binding SOURCE_PROJECT \
--member="serviceAccount:CLOUD_BUILD_SA" \
--role="roles/bigquery.jobUser"
gcloud projects add-iam-policy-binding SOURCE_PROJECT \
--member="serviceAccount:CLOUD_BUILD_SA" \
--role="roles/logging.logWriter"
gcloud projects add-iam-policy-binding SOURCE_PROJECT \
--member="serviceAccount:CLOUD_BUILD_SA" \
--role="roles/aiplatform.colabEnterpriseAdmin"
gcloud projects add-iam-policy-binding SOURCE_PROJECT \
--member="serviceAccount:CLOUD_BUILD_SA" \
--role="roles/storage.objectUser"
gcloud projects add-iam-policy-binding SOURCE_PROJECT \
--member="serviceAccount:CLOUD_BUILD_SA" \
--role="roles/workflows.editor"
替换以下内容:
- 将
SOURCE_PROJECT
替换为源项目 ID。 CLOUD_BUILD_SA
,格式为CLOUD_BUILD_SA@SOURCE_PROJECT.gserviceaccount.com
。
如需了解详情,请参阅使用 IAM 页面向 Cloud Build 服务账号授予角色和设置和管理存储分区的 IAM 政策。
为 Meridian 的 Cortex 创建一个额外的服务账号
部署 Cortex Framework 时,Meridian 需要单独的服务账号。如果您不是为 Meridian 部署,则可以跳过此步骤。 以下情况需要单独的服务账号:
- 运行工作流和 Cloud Build 以触发 Colab Enterprise 笔记本执行。
- 运行 Colab Enterprise 笔记本,并具有以下访问权限:
- Cloud Storage 上的笔记本和配置文件。
- 查询相关的 BigQuery 视图和表。
- 将结果写回 Cloud Storage。
使用以下命令为 Cortex for Meridian 创建服务账号:
gcloud iam service-accounts create cortex-meridian-colab-runner --project= PROJECT_ID \
--description="Cortex for Meridian Colab Runner Service Account" \
--display-name="Cortex Meridian Runner"
替换以下内容:
- 将
PROJECT_ID
替换为部署了 Cortex for Meridian 的项目的 ID。 cortex-meridian-colab-runner
:您可以选择使用其他服务账号 ID。请注意,cortex-meridian-colab-runner
是默认值,更改此值可能需要调整其他命令。
Meridian 的 Cortex 专用服务账号至少需要以下角色:
- BigQuery Data Viewer (
roles/bigquery.dataViewer
) - BigQuery Job User (
roles/bigquery.jobUser
) - BigQuery Read Session User (
roles/bigquery.readSessionUser
) - Cloud Build Editor (
roles/cloudbuild.builds.editor
) - Colab Enterprise Admin (
roles/aiplatform.colabEnterpriseAdmin
) - Logs Writer (
roles/logging.logWriter
) - Notebook Runtime Admin (
aiplatform.notebookRuntimeAdmin
) - Storage Admin (
roles/storage.admin
) - Storage Object User (
roles/storage.objectUser
) - Vertex AI Colab Service Agent (
roles/aiplatform.colabServiceAgent
)
使用以下命令向 Cortex for Meridian 的专用服务账号授予角色:
gcloud projects add-iam-policy-binding PROJECT_ID \
--member='serviceAccount:SERVICE_ACCOUNT_EMAIL' \
--role='roles/bigquery.dataViewer'
gcloud projects add-iam-policy-binding PROJECT_ID \
--member='serviceAccount:SERVICE_ACCOUNT_EMAIL' \
--role='roles/bigquery.jobUser'
gcloud projects add-iam-policy-binding PROJECT_ID \
--member='serviceAccount:SERVICE_ACCOUNT_EMAIL' \
--role='roles/bigquery.readSessionUser'
gcloud projects add-iam-policy-binding PROJECT_ID \
--member='serviceAccount:SERVICE_ACCOUNT_EMAIL' \
--role='roles/cloudbuild.builds.editor'
gcloud projects add-iam-policy-binding PROJECT_ID \
--member='serviceAccount:SERVICE_ACCOUNT_EMAIL' \
--role='roles/aiplatform.colabEnterpriseAdmin'
gcloud projects add-iam-policy-binding PROJECT_ID \
--member='serviceAccount:SERVICE_ACCOUNT_EMAIL' \
--role='roles/logging.logWriter'
gcloud projects add-iam-policy-binding PROJECT_ID \
--member='serviceAccount:SERVICE_ACCOUNT_EMAIL' \
--role='roles/aiplatform.notebookRuntimeAdmin'
gcloud projects add-iam-policy-binding PROJECT_ID \
--member='serviceAccount:SERVICE_ACCOUNT_EMAIL' \
--role='roles/storage.admin'
gcloud projects add-iam-policy-binding PROJECT_ID \
--member='serviceAccount:SERVICE_ACCOUNT_EMAIL' \
--role='roles/storage.objectUser'
gcloud projects add-iam-policy-binding PROJECT_ID \
--member='serviceAccount:SERVICE_ACCOUNT_EMAIL' \
--role='roles/aiplatform.colabServiceAgent'
替换以下内容:
- 将
PROJECT_ID
替换为部署了 Cortex for Meridian 的项目的 ID。 - 将
SERVICE_ACCOUNT_EMAIL
替换为 Cortex for Meridian 的服务账号。
可选步骤
如需更好地自定义部署,请考虑按照以下可选步骤操作:
- Data Mesh:如果您需要修改 Data Mesh 的默认值以实现说明以外的功能,请参阅 Data Mesh 概念和 Data Mesh 用户指南。
创建用于存储 DAG 相关文件的存储桶
需要一个存储桶来存储处理 DAG 脚本以及部署期间生成的其他临时文件。部署后,需要手动将这些脚本移至 Cloud Composer 或 Apache Airflow 实例中。
您可以使用 Google Cloud CLI 或 Google Cloud 控制台,通过以下步骤创建存储桶。
控制台
转到 Cloud Storage。
在与 BigQuery 数据集相同的区域中创建存储桶。
选择已创建的存储桶。
前往
Permissions
标签页。向执行 Build 命令的用户 ID 或您创建的服务账号授予
Storage Object Creator
权限。如需了解详情,请参阅为存储桶设置新条件:控制台。
gcloud
使用以下命令从 Cloud Shell 创建存储桶:
gcloud storage buckets create gs://DAG_BUCKET_NAME -l REGION/MULTI_REGION
替换以下内容:
- 将
DAG_BUCKET_NAME
替换为新存储桶的名称。 REGION/MULTI_REGION
与您的 BigQuery 数据集位于同一区域。
- 将
使用以下命令向服务账号分配
Storage Object Creator
权限:gcloud storage buckets add-iam-policy-binding gs://DAG_BUCKET_NAME --member=serviceAccount:CLOUD_BUILD_SA --role=roles/storage.objectCreator
替换以下内容:
CLOUD_BUILD_SA
,并使用 Cloud Build 默认服务账号。- 将
DAG_BUCKET_NAME
替换为新存储桶的名称。
创建用于存储日志的存储桶
您可以创建一个专用存储桶,供 Cloud Build 进程存储日志。如果您想将可能存储在日志中的数据限制在特定区域,此功能非常有用。您可以使用 Google Cloud CLI 或 Google Cloud 控制台创建用于存储日志的存储桶。
控制台
如需为日志创建特定存储桶,请按以下步骤操作:
转到 Cloud Storage。
在部署将运行的同一区域中创建存储桶。
选择已创建的存储桶。
前往
Permissions
标签页。向执行 Build 命令的用户 ID 或您创建的服务账号授予
Storage Object Admin
权限。如需了解详情,请参阅为存储桶设置新条件:控制台。
gcloud
如需为日志创建特定存储桶,请使用以下命令。
使用以下命令从 Cloud Shell 创建存储桶:
gcloud storage buckets create gs://LOGS_BUCKET_NAME -l REGION/MULTI_REGION
替换以下内容:
- 将
REGION/MULTI_REGION
替换为用于创建存储桶的所选区域。 - 将
LOGS_BUCKET_NAME
替换为新存储桶的名称。
- 将
使用以下命令向服务账号分配
Storage Object Admin
权限:gcloud storage buckets add-iam-policy-binding gs://LOGS_BUCKET_NAME --member=serviceAccount:CLOUD_BUILD_SA --role=roles/storage.objectAdmin
替换以下内容:
CLOUD_BUILD_SA
,并使用 Cloud Build 默认服务账号。- 将
LOGS_BUCKET_NAME
替换为新存储桶的名称。
后续步骤
完成此步骤后,请继续执行以下部署步骤: