首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Openshift/OKD模板if/else条件

Openshift/OKD模板if/else条件
EN

Stack Overflow用户
提问于 2018-12-04 17:16:29
回答 1查看 2.7K关注 0票数 4

目前,我有一个OKD/openshift模板,它在特定容器上公开端口1883:

代码语言:javascript
复制
ports:
 - name: 1883-tcp
   port: 1883
   containerPort: 1883
   protocol: TCP
   hostPort: ${MQTT-PORT}

是否可能有一个if/else子句取决于参数。例如:

代码语言:javascript
复制
ports:
 - name: 1883-tcp
   port: 1883
   containerPort: 1883
   protocol: TCP
   {{ if ${MQTT-PORT} != 0 }}
   hostPort: ${MQTT-PORT}
   {{ /if }}

通过这样做,我可以在所有的环境(例如:开发/测试/生产)中拥有相同的模板,但是根据创建提供的参数,可以使用一些端口进行调试或测试,而不必每次使用oc命令转发它们。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-04 23:29:51

您不能在模板级别执行这种条件处理。

但是,为了达到你想要的结果,你可以做两件事中的一件。

选项1传递在模板级别处理条件所需的所有参数,如MQTT-PORT,并在构建服务时映射正确的端口号。这可能是正确的方法,因为模板被设计成尽可能少的逻辑,您在一个低得多的层次上进行所有决策。

选项2如果您可以放松“相同模板”约束,我们可以有2种相同模板的样式,一个具有特定端口,另一个具有参数化端口。此选项的唯一问题是每次更改应用程序/服务规范时更改2个模板,这违反了干原理

更新

在这里,在OpenShift中使用Helm可能是最好的选择。您可以使用Helm的条件将您的工件临时化,并将Helm应用程序部署到OpenShift。这是一个存储库,它有一个为OpenShift量身定制的Helm图表。此外,您还需要为Tiller指向正确的命名空间,以便在OpenShift中使用Helm。您可以找到关于它的更多细节,这里

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53618291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档