为什么 Cloud Deploy 不支持一个管道中的多种目标类型?

问题描述 投票:0回答:1

当我尝试为具有多个目标类型的 Google Cloud Deploy 管道创建版本时,出现以下错误:

ERROR: (gcloud.deploy.releases.create) FAILED_PRECONDITION:
[cloud-run] are Cloud Run target(s), [terraform-workspace] are Custom target(s):
failed precondition

我想这样做,因为使用单个管道管理 Cloud Run 服务(一个目标)所需的基础设施部署,然后部署服务本身(第二个目标)很简单。可以使用预部署挂钩来代替,但使其成为自己的目标有几个优点(对我来说更有意义)。

我很好奇为什么 Cloud Deploy 不支持这个; 是因为这是一种较差的方式来模拟这种愿望,还是因为某些技术限制可能会在某个时候被删除?

重现

clouddeploy.yaml:

apiVersion: deploy.cloud.google.com/v1
kind: DeliveryPipeline
metadata:
  name: service-with-infra
description: deploy infra required by the service, then the service itself
serialPipeline:
  stages:
  - targetId: terraform-workspace
  - targetId: cloud-run

---
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
  name: cloud-run
run: {location: projects/YOUR_PROJECT_NAME/locations/us-central1}

---
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
  name: terraform-workspace
customTarget: {customTargetType: terraform-workspace}

---
apiVersion: deploy.cloud.google.com/v1
kind: CustomTargetType
metadata:
  name: terraform-workspace
customActions: {renderAction: terraform-workspace-render, deployAction: terraform-workspace-deploy}

然后运行:

gcloud deploy apply --file clouddeploy.yaml --region us-central1 --project YOUR_PROJECT
gcloud deploy releases create release1 --delivery-pipeline service-with-infra --region us-central1 --project YOUR_PROJECT

最后一个命令会导致错误:

ERROR: (gcloud.deploy.releases.create) FAILED_PRECONDITION:
[cloud-run] are Cloud Run target(s), [terraform-workspace] are Custom target(s):
failed precondition

注意,如果我尝试使用包含两种不同自定义目标类型的管道进行发布,我也会遇到类似的错误。

google-cloud-platform google-cloud-deploy
1个回答
0
投票

由于 Cloud Deploy 中的架构设计,单个管道被设计为仅部署一种类型的目标。虽然一个管道中可以有多个目标,但它们必须都是同一类型(例如 GKE、所有 Cloud Run 等)。

目前,Cloud Deploy 不支持单个管道中的不同目标类型,因为每种类型都有独特的配置和要求,例如不同的部署流程、工具和 API。在一个管道中组合多种目标类型将使理解、维护和调试变得更加复杂,从而导致设置更加复杂。 Cloud Deploy 中推荐的方法是为每个目标环境创建单独的管道。如需进一步参考,您可以查看此文档

您还可以向 Google Cloud 提出功能请求以获取此功能,并且您可以解释一下您在当前方法中遇到的挑战,这会很有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.