gpt4 book ai didi

kubernetes - Openshift/OKD模板,如果/其他情况

转载 作者:行者123 更新时间:2023-12-02 11:57:53 25 4
gpt4 key购买 nike

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

ports:
- name: 1883-tcp
port: 1883
containerPort: 1883
protocol: TCP
hostPort: ${MQTT-PORT}

是否可以根据参数设置if / else子句。例如:
ports:
- name: 1883-tcp
port: 1883
containerPort: 1883
protocol: TCP
{{ if ${MQTT-PORT} != 0 }}
hostPort: ${MQTT-PORT}
{{ /if }}

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

最佳答案

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

但是,要获得所需的结果,您可以做以下两件事之一。

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

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

更新

将Helm与OpenShift一起使用可能是最好的选择。您可以使用Helm的条件模板对 Artifact 进行模板化,并将Helm应用程序部署到OpenShift。这是repository,其中具有针对OpenShift量身定制的Helm图表。
此外,您需要指向正确的 namespace ,以便Tiller可以将Helm与OpenShift一起使用。您可以找到有关here的更多详细信息。

关于kubernetes - Openshift/OKD模板,如果/其他情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53618291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com