数据流工作者引导映像的映像约束

Image constraints with dataflow workers' boot image

我尝试使用“Pub/Sub topic to BigQuery”模板设置数据流流作业。我的组织制定了图像限制政策。根据图像约束文档 (https://cloud.google.com/compute/docs/images/restricting-image-access#limitations),GCP 服务使用的任何图像都不应受到这些约束的影响。然而,数据流工作者未能启动,理由是图像限制。在这种情况下设置图像约束的正确方法是什么?

这是错误的样子 -

   {
 insertId: "qnh47fd17tx"  
 labels: {
  dataflow.googleapis.com/job_id: "job_id"   
  dataflow.googleapis.com/job_name: "job_name"   
  dataflow.googleapis.com/region: "us-central1"   
 }
 logName: "projects/app/logs/dataflow.googleapis.com%2Fjob-message"  
 receiveTimestamp: ""  
 resource: {
  labels: {
   job_id: ""    
   job_name: ""    
   project_id: ""    
   region: "us-central1"    
   step_id: ""    
  }
  type: "dataflow_step"   
 }
 severity: "ERROR"  
 textPayload: "Workflow failed. Causes: Step "setup_resource_disks_harness50" failed., Step setup_resource_disks_harness50: Set up of resource disks_harness failed, Unable to create data disk(s)., Unknown error in operation 'operation-1600084247324-5af44a52c2574-7f195f5c-376e0b61': [CONDITION_NOT_MET] 'Constraint constraints/compute.trustedImageProjects violated for project getmega-app. Use of images from project dataflow-service-producer-prod is prohibited.'."  
 timestamp: ""  
}

由于您的项目使用了图像约束,因此您还配置了受信任的图像策略。因此,仅允许来自该项目的资源在您的组织中启动 VM。

但是,Google Cloud Dataflow 和 Datalab 等服务使用来自其他 Google 项目的图像在您的 VPC 中创建 VM,这意味着您在启动 Dataflow 模板化作业时可能会遇到错误.这可以通过将一些项目添加到您信任的项目图像中轻松克服。如下:

使用 gcloud,

1 - 获取项目的现有政策

gcloud beta resource-manager org-policies describe \
    compute.trustedImageProjects --effective \
    --project [PROJECT_ID] > policy.yaml

2 - 在文本编辑器中打开 policy.yaml 文件。您应该看到如下文件:

constraint: constraints/compute.trustedImageProjects
listPolicy:
  allowedValues:
    - projects/debian-cloud
    - projects/cos-cloud
  deniedValues:
    - projects/unwanted-images

3 - 通过添加以下项目修改compute.trustedImageProjects约束:

projects/cos-cloud
projects/dataflow-service-producer-prod
projects/serverless-vpc-access-images
projects/windows-cloud 

请注意,我已将 Google 服务可能使用的所有项目添加到 retrive/launch 服务中。在您的具体情况下,只需添加 projects/dataflow-service-producer-prod 就足够了。

4 - 将 policy.yaml 文件应用于您的项目。

gcloud beta resource-manager org-policies set-policy \
--project [PROJECT_ID] policy.yaml

执行这些操作后,您将能够启动您的模板化数据流作业。最后,您可以使用控制台添加第 3 步中指定的项目,如 documentation.

中所述

注意:在共享可能包含个人信息(例如项目 ID 或作业 ID)的日志时要小心。这些信息不应在 public.

中公开