manifest.yml 中每个 space 的具体配置

Specific configuration per space in manifest.yml

有没有办法为特定的 space 设置 manifest.yml 属性,例如如果我想在部署到生产 space 时有 5 个服务实例,但所有其他 spaces 只有 1 个实例?

我想到了几个选项:

  1. 您可以使用 cf cli 参数覆盖 manifest.yml 设置。因此,您可以将 1 的实例计数放入 manifest.yml 文件(实际上,您不需要这样做,因为 1 是默认值,但您可以在文件中放入任何值)并且当您 cf push 用您设置为 cli 参数的值覆盖 manifest.yml 中的值。例如:cf push -i <override>.

  2. 应用 manifest.yml 中没有可用的条件逻辑,但没有什么可以阻止您在清单中使用模板语言。例如,您可以通过 Ruby 的 erb(或任何其他模板引擎)运行 模板化 manifest.yml 进行一些动态调整,然后使用输出进行部署你的应用程序。

  3. 根本不要使用 manifest.yml。相反,只需使用 shell 脚本和 cf cli 命令和参数的组合。开始需要做更多的工作,但是您可以获得 shell 脚本的所有动态行为。实际上,它不一定是 shell 脚本。您可以使用 Python 或 Ruby 或在此处插入您最喜欢的脚本语言。

这里可能不是您所希望的答案,但希望对您有所帮助。

根据部署工具,您可以对实例进行参数化。例如:在 IBM Urban Code Deploy (UCD) 中,您可以将实例数声明为组件环境 属性,并且可以为每个 space 指定不同的值。 DEV、QA 可以有 1 个,PROD 可以有 5 个。

有多种使用方法属性。

  1. 在 manifest.yml
  2. 中添加以下条目

instances: ${instance_count}

instance_count 参数的值可以在 Urban Code Deploy 中根据 Space 配置。我相信您也可以使用 Concourse 或其他部署工具来做到这一点。

  1. 使用cf push命令中的参数。

Urban Code Deploy 和其他工具运行 cf push 命令推送应用程序。在推送命令中,您可以提供 -i 参数并使用 instance_count 变量,该变量将根据您推送到的 space 替换值。

您可以使用第一种方法来参数化多个字段,例如内存、日志级别等,这些字段对于不同的 space 可以具有不同的值。