groovy 如何在podTemplate中合并yaml?

9rnv2umw  于 2023-01-25  发布在  其他
关注(0)|答案(1)|浏览(131)

我在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中运行这个作业时,没有任何React,pod被创建,没有错误,但是yaml没有被添加到pod中。
我们希望根据toleration_condition值在podTemplate中添加容差(yaml_config)。
我是这方面的新手,如果可能的话,我不知道。是吗?最好的方法是什么?
谢谢。

kg7wmglp

kg7wmglp1#

  • 提示:我看到你使用Kubernetes插件。你看过继承部分吗?使用声明性管道语法,结合inheritFrom,可能会提供一种更简洁的方式来实现所需的结果。这里我们还将yamlMergeStrategy保留为默认值(override())。*

我发现提供给yaml:的“delta yaml”(yaml_config)的缩进会影响最终结果(尾随和开始换行符也会有影响),所以我建议使用yaml_config进行测试,如下所示:

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

相关问题