数据流工作者引导映像的映像约束
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.
中公开
我尝试使用“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.
中公开