第 4 步:设置组件

本页介绍了部署 Cortex Framework Data Foundation(Cortex Framework 的核心)的第四步。在此步骤中,您需要设置部署所需的 Google Cloud 各项服务。

启用 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 服务:

  1. 复制并粘贴以下命令:

    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。

  2. 如果您收到成功 消息,请验证 Google Cloud 服务是否已启用。

可选 。您可以在您的 Google Cloud 项目中启用以下 Google Cloud 服务:

  • Cloud Composer,用于通过有向无环图 (DAG) 处理变更数据捕获 (CDC)、展平层次结构(仅限 SAP)和数据复制(仅限非 SAP)。如需设置实例,请参阅 Cloud Composer 文档
  • 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 笔记本执行。

创建和配置 Cloud Build 服务帐号

Cloud Build 使用服务帐号代表您执行构建。 本部分将指导您为 Cortex Framework 部署创建专用服务帐号,并向 Cloud Build 服务帐号授予必要的权限。

创建新服务帐号

创建专用服务帐号以部署 Cortex Framework,从而增强安全性和控制力。创建新服务帐号后 您可以在部署过程中使用此 服务账号 使用 _BUILD_ACCOUNT 替换参数。

使用 Google Cloud 控制台或 Google Cloud CLI 创建此新服务帐号。

控制台

  1. 前往服务账号 页面。

    服务账号

    其余步骤会显示在 Google Cloud 控制台中。

  2. 选择一个 Google Cloud 项目。

  3. 输入服务帐号和显示名称,并在 Google Cloud 控制台中输入说明。控制台会根据此名称生成 服务帐号 ID。 Google Cloud 如有必要,请修改 ID。您以后无法更改 ID。 请使用以下服务帐号默认值:

    • 名称:“cortex-deployer”。
    • 说明:“Cortex Deployer 服务账号”。
    • 显示名称:“Cortex Deployer”。
  4. 向用户授予对此服务帐号的访问权限。

    1. 添加所有可以通过服务帐号运行部署的用户(包括您自己)的 ID。
    2. 分配 Service Account Token Creator 角色。如需详细了解此角色 ,请参阅服务账号角色
  5. 点击完成 以完成服务帐号的创建过程。

如果您已有服务帐号,请按以下步骤操作:

  1. 转到服务账号
  2. 选择服务账号
  3. 点击具有访问权限的主账号 标签页。
  4. 点击授予访问权限
    1. 添加所有可以通过服务帐号运行部署的用户(包括您自己)的 ID。
    2. 分配 Service Account Token Creator 角色。

gcloud

  1. 通过 IAM 政策创建服务帐号,使用以下命令:

    gcloud iam service-accounts create cortex-deployer \
    --description="Cortex Deployer Service Account" \
    --display-name="Cortex Deployer"
    
  2. 使用以下命令将 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"
    
  3. 添加所有可以通过服务帐号运行部署的用户(包括您自己)的 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)

控制台

  1. 在 Google Cloud 控制台中,前往 IAM 页面。

    转到 IAM

  2. 选择您的源项目。

  3. 点击 授予访问权限

  4. 将上一步中的默认 Cloud Build 服务帐号添加为新正文。

  5. 选择角色 下拉菜单中,搜索 Cloud Build 服务账号, 然后点击 Cloud Build 服务账号

  6. 重复上一步,添加其余角色:

  7. 点击保存

  8. 验证服务帐号和相应的角色是否在 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 脚本以及部署期间生成的其他临时文件。部署后,需要将这些脚本手动移到 Cloud Composer 或 Apache Airflow 实例中。

您可以使用 Google Cloud CLI 或 Google Cloud 控制台 ,按照以下步骤创建存储桶。

控制台

  1. 转到 Cloud Storage。

    Cloud Storage

  2. 在与 BigQuery 数据集相同的区域中创建一个存储桶。

  3. 选择创建的存储桶。

  4. 前往 Permissions 标签页。

  5. 向执行 Build 命令的用户 ID 或向您创建的服务账号授予 Storage Object Creator 权限。如需了解详情,请参阅在存储桶上设置新条件:控制台

gcloud

  1. 使用以下命令从 Cloud Shell 创建存储桶:

    gcloud storage buckets create gs://COMPOSER_DAG_BUCKET -l REGION/MULTI_REGION
    

    替换以下内容:

    • COMPOSER_DAG_BUCKET 替换为新存储桶的名称。
    • REGION/MULTI_REGION 替换为与 BigQuery 数据集相同的区域。
  2. 使用以下命令向服务帐号分配 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 控制台为日志创建存储桶 。

控制台

如需为日志创建专用存储桶,请按以下步骤操作:

  1. 转到 Cloud Storage。

    Cloud Storage

  2. 在部署将运行的同一区域中创建一个存储桶。

  3. 选择创建的存储桶。

  4. 前往 Permissions 标签页。

  5. 向执行 Build 命令的用户 ID 或向您创建的服务账号授予 Storage Object Admin 权限。如需了解详情,请参阅在存储桶上设置新条件:控制台

gcloud

如需为日志创建专用存储桶,请使用以下命令。

  1. 使用以下命令从 Cloud Shell 创建存储桶:

    gcloud storage buckets create gs://LOGS_BUCKET_NAME -l REGION/MULTI_REGION
    

    替换以下内容:

    • REGION/MULTI_REGION 替换为创建存储桶时选择的区域。
    • LOGS_BUCKET_NAME 替换为新存储桶的名称。
  2. 使用以下命令向服务帐号分配 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 替换为新存储桶的名称。

后续步骤

完成此步骤后,请继续执行以下部署步骤:

  1. 建立工作负载
  2. 克隆代码库
  3. 确定集成机制
  4. 设置组件(本页)。
  5. 配置部署
  6. 执行部署