如何在podTemplate中合并yaml?

问题描述 投票:0回答:2

我在groovy中有以下代码:

void call(Closure closure) {
    pod_template_maven_image = ...
    pod_template_maven_m2 = ...
    pod_template_nodejs_image = ...
    pod_template_sonar_image = ...
    toleration_condition = true

    def yaml_config = ""
    if(toleration_condition){
        yaml_config = """
        spec:
          tolerations:
          - key: "my_toleration"
            operator: "Equal"
            value: "value1"
            effect: "NoSchedule"
        """
    }

    podTemplate(containers: ..., 
    volumes: ..., 
    etc..., 
    yaml: yaml_config, 
    yamlMergeStrategy: merge()) {
        node(POD_LABEL) {
            closure()
        }
    }
}

目前,当我在 jenking 中运行作业时没有任何反应,pod 已创建且没有错误。但是 pod 中没有添加 yaml。

我们想根据 toleration_condition 值在 podTemplate 中添加容忍(yaml_config)。

我是这个领域的新手,如果可能的话现在不这样做。 它是?最好的方法是什么?

谢谢。

kubernetes groovy jenkins-pipeline pipeline jenkins-declarative-pipeline
2个回答
0
投票

提示:我看到您使用 Kubernetes 插件。你看过继承那一段吗?使用声明性管道语法和

inheritFrom
可能会提供一种更简洁的方法来实现所需的结果。这里我们也将
yamlMergeStrategy
保留为默认值 (
override()
)。

我已经看到,提供给

yaml_config
的“delta yaml”(
yaml:
) 的缩进会影响最终结果(尾随和开始换行符也可能产生影响)。所以我建议使用
yaml_config
进行测试,例如:

    yaml_config = """
spec:
  tolerations:
  - key: "my_toleration"
    operator: "Equal"
    value: "value1"
    effect: "NoSchedule" """

0
投票

通过放置完整的清单结构解决了问题,最终自动合并。

花了不到一年的时间才发现。

© www.soinside.com 2019 - 2024. All rights reserved.