第 4 步:设置组件
本页介绍了部署 Cortex Framework Data Foundation(Cortex Framework 的核心)的第四步。在此步骤中,您需要设置部署所需的 Google Cloud 各项服务。
部署 Cortex Framework Data Foundation。启用 Google Cloud 服务
在本部分中,您需要在您的 Google Cloud 项目中启用以下 Google Cloud 服务:
- BigQuery 实例和数据集
- Cloud Build API
- Cloud Storage 存储分区
- 服务账号
- Cloud Resource Manager API
- 工作流执行作业(如果部署 Cortex for Meridian)
- AI Platform(如果部署 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 服务:
- Managed Airflow ,用于通过有向无环图 (DAG) 处理变更数据捕获 (CDC)、扁平化层次结构(仅限 SAP) 和数据复制(仅限非 SAP)。 如需设置实例,请参阅 Managed Airflow 文档。
- Looker,用于连接到报告模板。
- BigQuery Sharing(以前称为 Analytics Hub)关联的 数据集用于某些外部来源,例如 Weather DAG。您可以选择使用任何其他可用来源填充此结构,以实现高级场景。
- Dataflow: 一种集成工具,适用于许多营销数据集,例如 Google Ads。
- 对于 Cortex Framework with Meridian:
- 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 控制台会根据此名称生成 服务帐号 ID。 Google Cloud 如有必要,请修改 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@SOURCE_PROJECT.iam.gserviceaccount.com \ --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) - 服务账号用户 (
roles/iam.serviceAccountUser) - BigQuery Data Editor (
roles/bigquery.dataEditor) - BigQuery Job User (
roles/bigquery.jobUser) - Logs Writer (
roles/logging.logWriter) - Colab Enterprise Admin (
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 Admin(如果部署 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:cortex-deployer@SOURCE_PROJECT.iam.gserviceaccount.com" \
--role="roles/cloudbuild.builds.builder"
gcloud projects add-iam-policy-binding SOURCE_PROJECT \
--member="serviceAccount:cortex-deployer@SOURCE_PROJECT.iam.gserviceaccount.com" \
--role="roles/iam.serviceAccountUser"
gcloud projects add-iam-policy-binding SOURCE_PROJECT \
--member="serviceAccount:cortex-deployer@SOURCE_PROJECT.iam.gserviceaccount.com" \
--role="roles/bigquery.dataEditor"
gcloud projects add-iam-policy-binding SOURCE_PROJECT \
--member="serviceAccount:cortex-deployer@SOURCE_PROJECT.iam.gserviceaccount.com" \
--role="roles/bigquery.jobUser"
gcloud projects add-iam-policy-binding SOURCE_PROJECT \
--member="serviceAccount:cortex-deployer@SOURCE_PROJECT.iam.gserviceaccount.com" \
--role="roles/logging.logWriter"
gcloud projects add-iam-policy-binding SOURCE_PROJECT \
--member="serviceAccount:cortex-deployer@SOURCE_PROJECT.iam.gserviceaccount.com" \
--role="roles/aiplatform.colabEnterpriseAdmin"
gcloud projects add-iam-policy-binding SOURCE_PROJECT \
--member="serviceAccount:cortex-deployer@SOURCE_PROJECT.iam.gserviceaccount.com" \
--role="roles/storage.objectUser"
gcloud projects add-iam-policy-binding SOURCE_PROJECT \
--member="serviceAccount:cortex-deployer@SOURCE_PROJECT.iam.gserviceaccount.com" \
--role="roles/workflows.editor"
替换以下内容:
- 将
SOURCE_PROJECT替换为源项目 ID。 - 将
CLOUD_BUILD_SA替换为 Cloud Build 服务帐号,格式为CLOUD_BUILD_SA@SOURCE_PROJECT.gserviceaccount.com。
如需了解详情,请参阅使用 IAM 页面向 Cloud Build 服务帐号授予角色 和在存储分区上设置和管理 IAM 政策。
为 Cortex for Meridian 创建额外的服务帐号
部署 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=SOURCE_PROJECT \
--description="Cortex for Meridian Colab Runner Service Account" \
--display-name="Cortex Meridian Runner"
替换以下内容:
- 将
SOURCE_PROJECT替换为部署 Cortex for Meridian 的项目 ID。 cortex-meridian-colab-runner:您可以选择使用其他服务帐号 ID。请注意,cortex-meridian-colab-runner是默认值,更改它可能需要调整其他命令。
Cortex for Meridian 的专用服务帐号至少需要以下角色:
- 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 SOURCE_PROJECT \
--member="serviceAccount:cortex-meridian-colab-runner@SOURCE_PROJECT.iam.gserviceaccount.com" \
--role='roles/bigquery.dataViewer'
gcloud projects add-iam-policy-binding SOURCE_PROJECT \
--member="serviceAccount:cortex-meridian-colab-runner@SOURCE_PROJECT.iam.gserviceaccount.com" \
--role='roles/bigquery.jobUser'
gcloud projects add-iam-policy-binding SOURCE_PROJECT \
--member="serviceAccount:cortex-meridian-colab-runner@SOURCE_PROJECT.iam.gserviceaccount.com" \
--role='roles/bigquery.readSessionUser'
gcloud projects add-iam-policy-binding SOURCE_PROJECT \
--member="serviceAccount:cortex-meridian-colab-runner@SOURCE_PROJECT.iam.gserviceaccount.com" \
--role='roles/cloudbuild.builds.editor'
gcloud projects add-iam-policy-binding SOURCE_PROJECT \
--member="serviceAccount:cortex-meridian-colab-runner@SOURCE_PROJECT.iam.gserviceaccount.com" \
--role='roles/aiplatform.colabEnterpriseAdmin'
gcloud projects add-iam-policy-binding SOURCE_PROJECT \
--member="serviceAccount:cortex-meridian-colab-runner@SOURCE_PROJECT.iam.gserviceaccount.com" \
--role='roles/logging.logWriter'
gcloud projects add-iam-policy-binding SOURCE_PROJECT \
--member="serviceAccount:cortex-meridian-colab-runner@SOURCE_PROJECT.iam.gserviceaccount.com" \
--role='roles/aiplatform.notebookRuntimeAdmin'
gcloud projects add-iam-policy-binding SOURCE_PROJECT \
--member="serviceAccount:cortex-meridian-colab-runner@SOURCE_PROJECT.iam.gserviceaccount.com" \
--role='roles/storage.admin'
gcloud projects add-iam-policy-binding SOURCE_PROJECT \
--member="serviceAccount:cortex-meridian-colab-runner@SOURCE_PROJECT.iam.gserviceaccount.com" \
--role='roles/storage.objectUser'
gcloud projects add-iam-policy-binding SOURCE_PROJECT \
--member="serviceAccount:cortex-meridian-colab-runner@SOURCE_PROJECT.iam.gserviceaccount.com" \
--role='roles/aiplatform.colabServiceAgent'
替换以下内容:
- 将
SOURCE_PROJECT替换为部署 Cortex for Meridian 的项目 ID。 - 将
cortex-meridian-colab-runner替换为 Cortex for Meridian 的服务账号。
创建用于存储 DAG 相关文件的存储桶
需要一个存储桶来存储处理 DAG 脚本以及部署期间生成的其他临时文件。部署后,需要手动将这些脚本移到 Managed Airflow 或 Apache Airflow 实例中。
您可以使用 Google Cloud CLI 或 Google Cloud 控制台 ,按照以下步骤创建存储桶。
控制台
转到 Cloud Storage。
在 BigQuery 数据集所在的区域中创建一个存储桶。
选择创建的存储桶。
前往
Permissions标签页。向执行 Build 命令的用户 ID 或向您创建的服务账号授予
Storage Object Creator权限。如需了解详情,请参阅在存储桶上设置新条件:控制台。
gcloud
使用以下命令从 Cloud Shell 创建存储桶:
gcloud storage buckets create gs://COMPOSER_DAG_BUCKET -l REGION/MULTI_REGION替换以下内容:
- 将
COMPOSER_DAG_BUCKET替换为新存储桶的名称。 - 将
REGION/MULTI_REGION替换为 BigQuery 数据集所在的区域。
- 将
使用以下命令向服务帐号分配
Storage Object Creator权限:gcloud storage buckets add-iam-policy-binding gs://COMPOSER_DAG_BUCKET \ --member="serviceAccount:cortex-deployer@SOURCE_PROJECT.iam.gserviceaccount.com" \ --role=roles/storage.objectCreator替换以下内容:
- 将
cortex-deployer替换为 Cloud Build 服务帐号。 - 将
COMPOSER_DAG_BUCKET替换为新存储桶的名称。
- 将
创建用于存储日志的存储桶
您可以为 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:cortex-deployer@SOURCE_PROJECT.iam.gserviceaccount.com" \ --role=roles/storage.objectAdmin替换以下内容:
- 将
cortex-deployer替换为 Cloud Build 默认服务帐号。 - 将
LOGS_BUCKET_NAME替换为新存储桶的名称。
- 将
后续步骤
完成此步骤后,请继续执行以下部署步骤: