Continuous integration 使用ValueFrom在模板中配置副本编号
我有一个Continuous integration 使用ValueFrom在模板中配置副本编号,continuous-integration,kubernetes,openshift,Continuous Integration,Kubernetes,Openshift,我有一个template.yml文件,在部署到任何OpenShift项目时使用。每个项目都有特定的项目道具要使用,这是我们CICD管道的一部分,因此每个项目都有一个独特的项目。道具可用 我希望能够根据要部署到的项目控制副本的数量和CPU/内存限制。例如,分支测试OpenShift项目与性能测试OpenShift项目的CPU请求和限制与短暂的OpenShift项目不同 我的template.yml文件如下所示: // <snip> spec: rep
template.yml
文件,在部署到任何OpenShift项目时使用。每个项目都有特定的项目道具要使用,这是我们CICD管道的一部分,因此每个项目都有一个独特的项目。道具可用
我希望能够根据要部署到的项目控制副本的数量和CPU/内存限制。例如,分支测试OpenShift项目与性能测试OpenShift项目的CPU请求和限制与短暂的OpenShift项目不同
我的template.yml
文件如下所示:
// <snip>
spec:
replicas: "${OS_REPLICAS}"
// <snip>
resources:
limits:
cpu: "${OS_CPU_LIMIT}"
memory: "${OS_MEMORY_LIMIT}"
requests:
cpu: "${OS_CPU_REQUEST}"
memory: "${OS_MEMORY_REQUEST}"
// <snip>
parameters:
- name: OS_REPLICAS
displayName: OS Number of Replicas
valueFrom:
configMapKeyRef:
name: project-props
key: os.replicas
// rest of params are similar
当我尝试部署时,会出现以下错误:
数量必须匹配正则表达式“^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$”
如果我更改template.yml
以定义一个参数,它可以正常工作
parameters:
- name: OS_REPLICAS
displayName: OS Number of Replicas
value: 2
似乎valueFrom
vsvalue
具有不同的行为。使用valueFrom
是否无法做到这一点?是否有其他方法可以使用configMap
动态更改spec
和resources
另一种方法是部署并使用oc scale dc--replications=
,但它不是很优雅。您有:
spec:
replicas: "${OS_REPLICAS}"
你应该:
spec:
replicas: "${{OS_REPLICAS}}"
模板参数为:
parameters:
- name: OS_REPLICAS
displayName: OS Number of Replicas
value: 2
见:
用于使用“${{}”
它所做的是将参数的内容解释为JSON/YAML,而不是字符串值。这允许您提供一个整数,副本
需要该整数
因此,您不需要valueFrom
,因为它只能用于环境变量,而不能用于像副本这样的任意字段
至于尝试为项目中部署的POD设置内存和CPU的默认值,您应该考虑针对项目定义LimitRange
资源,并设置默认值
我找到了答案,它不会从文件中读取值,但至少它们可以是动态的
OpenShift有一个oc process
命令,您可以在使用模板时运行该命令
因此,这是通过以下方式实现的:
oc进程-f.yaml-v=
这将用-v
插入的参数值覆盖参数值
一个实际的例子是
oc进程-f./src/main/openshift/service.template.yaml-v OS_replications=2
你可以阅读更多关于它的内容
似乎OS原始团队不希望支持使用文件插入参数。您可以在此处阅读更多信息:
不幸的是,我不想只是硬编码副本值,而是想从文件、configMap或其他等效文件中读取副本值,因此在部署过程中,根据项目的不同,可以使用不同的数字。我知道您无法做到这一点。您也可以尝试(在Openshift 3.11下测试):oc create-f template-file.yaml&&new app--template=$template\u name--env REPLICAS\u COUNT=$REPLICAS
parameters:
- name: OS_REPLICAS
displayName: OS Number of Replicas
value: 2