manifest.yml 中每个 space 的具体配置
Specific configuration per space in manifest.yml
有没有办法为特定的 space 设置 manifest.yml 属性,例如如果我想在部署到生产 space 时有 5 个服务实例,但所有其他 spaces 只有 1 个实例?
我想到了几个选项:
您可以使用 cf
cli 参数覆盖 manifest.yml
设置。因此,您可以将 1 的实例计数放入 manifest.yml
文件(实际上,您不需要这样做,因为 1 是默认值,但您可以在文件中放入任何值)并且当您 cf push
用您设置为 cli 参数的值覆盖 manifest.yml
中的值。例如:cf push -i <override>
.
应用 manifest.yml 中没有可用的条件逻辑,但没有什么可以阻止您在清单中使用模板语言。例如,您可以通过 Ruby 的 erb
(或任何其他模板引擎)运行 模板化 manifest.yml
进行一些动态调整,然后使用输出进行部署你的应用程序。
根本不要使用 manifest.yml
。相反,只需使用 shell 脚本和 cf
cli 命令和参数的组合。开始需要做更多的工作,但是您可以获得 shell 脚本的所有动态行为。实际上,它不一定是 shell 脚本。您可以使用 Python 或 Ruby 或在此处插入您最喜欢的脚本语言。
这里可能不是您所希望的答案,但希望对您有所帮助。
根据部署工具,您可以对实例进行参数化。例如:在 IBM Urban Code Deploy (UCD) 中,您可以将实例数声明为组件环境 属性,并且可以为每个 space 指定不同的值。 DEV、QA 可以有 1 个,PROD 可以有 5 个。
有多种使用方法属性。
- 在 manifest.yml
中添加以下条目
instances: ${instance_count}
instance_count 参数的值可以在 Urban Code Deploy 中根据 Space 配置。我相信您也可以使用 Concourse 或其他部署工具来做到这一点。
- 使用cf push命令中的参数。
Urban Code Deploy 和其他工具运行 cf push 命令推送应用程序。在推送命令中,您可以提供 -i 参数并使用 instance_count 变量,该变量将根据您推送到的 space 替换值。
您可以使用第一种方法来参数化多个字段,例如内存、日志级别等,这些字段对于不同的 space 可以具有不同的值。
有没有办法为特定的 space 设置 manifest.yml 属性,例如如果我想在部署到生产 space 时有 5 个服务实例,但所有其他 spaces 只有 1 个实例?
我想到了几个选项:
您可以使用
cf
cli 参数覆盖manifest.yml
设置。因此,您可以将 1 的实例计数放入manifest.yml
文件(实际上,您不需要这样做,因为 1 是默认值,但您可以在文件中放入任何值)并且当您cf push
用您设置为 cli 参数的值覆盖manifest.yml
中的值。例如:cf push -i <override>
.应用 manifest.yml 中没有可用的条件逻辑,但没有什么可以阻止您在清单中使用模板语言。例如,您可以通过 Ruby 的
erb
(或任何其他模板引擎)运行 模板化manifest.yml
进行一些动态调整,然后使用输出进行部署你的应用程序。根本不要使用
manifest.yml
。相反,只需使用 shell 脚本和cf
cli 命令和参数的组合。开始需要做更多的工作,但是您可以获得 shell 脚本的所有动态行为。实际上,它不一定是 shell 脚本。您可以使用 Python 或 Ruby 或在此处插入您最喜欢的脚本语言。
这里可能不是您所希望的答案,但希望对您有所帮助。
根据部署工具,您可以对实例进行参数化。例如:在 IBM Urban Code Deploy (UCD) 中,您可以将实例数声明为组件环境 属性,并且可以为每个 space 指定不同的值。 DEV、QA 可以有 1 个,PROD 可以有 5 个。
有多种使用方法属性。
- 在 manifest.yml 中添加以下条目
instances: ${instance_count}
instance_count 参数的值可以在 Urban Code Deploy 中根据 Space 配置。我相信您也可以使用 Concourse 或其他部署工具来做到这一点。
- 使用cf push命令中的参数。
Urban Code Deploy 和其他工具运行 cf push 命令推送应用程序。在推送命令中,您可以提供 -i 参数并使用 instance_count 变量,该变量将根据您推送到的 space 替换值。
您可以使用第一种方法来参数化多个字段,例如内存、日志级别等,这些字段对于不同的 space 可以具有不同的值。