不同部署中的 GCP 部署管理器相同的资源名称

GCP deployment manager same resource name in different deployment

为了弄清楚部署管理器在不同部署中具有相同资源名称时的行为方式,我执行了以下步骤:

  1. 我使用名为 vm1 的单个 VM 创建了一个名为 dep-1 的部署。
  2. 然后我使用名为 vm1 的相同 VM 创建了一个名为 dep-2 的部署。

我在想 dep-2 会失败说一个资源已经存在同名但它成功了没有任何 warning/error。

稍后,当我删除 dep-2 时,它删除了名为 vm-1 的 vm 资源。

现在我想知道如何处理这种行为。假设我想为 dev、qa 和 prod 部署我的环境。在 GCP 部署管理器中执行此操作的最佳做​​法是什么?

我假设您对两个部署使用了相同的 yaml 文件(相同的实例名称和相同的区域)。

  • 第一次部署创建了实例,正如预期的那样没有问题。
  • 第二个部署没有创建另一个实例,只是将同一个实例分配给这个部署。这就是您在删除部署 dep-2 时看到实例被删除的原因。

要查看错误,您可以转到 Stackdriver Logging page for you project. and filter the log for instances creation

此 link 记录部署管理器更新策略。上述行为是预期的。

https://cloud.google.com/deployment-manager/docs/deployments/updating-deployments#prepare_your_update

https://cloud.google.com/deployment-manager/docs/deployments/updating-deployments#optional_determine_the_policies_to_use_for_the_update

(可选)确定用于更新的策略

  • 添加资源的默认策略是CREATE_OR_ACQUIRE。
  • 删除资源的默认策略是DELETE。
  • 更新资源的默认策略是 UPDATE。