第 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 Service Account”。
- 显示名称:“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)
- 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: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 政策。
为 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=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是默认值,更改此值可能需要调整其他命令。
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)
使用以下命令向 Meridian 的 Cortex 专用服务账号授予角色:
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 脚本和部署期间生成的其他临时文件。部署后,需要手动将这些脚本移至 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://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替换为新存储桶的名称。
 
可选步骤
为了更好地自定义部署,请考虑执行以下可选步骤:
- Data Mesh:如果您需要修改 Data Mesh 的默认值以实现说明以外的功能,请参阅 Data Mesh 概念和 Data Mesh 用户指南。
后续步骤
完成此步骤后,请继续执行以下部署步骤: