即使我们将它们设置为空值,Jenkins Kubernetes插件也会默认将命令和args设为bash

时间:2018-12-05 05:32:10

标签: jenkins kubernetes kubernetes-helm kubernetes-pod

我们正在使用terraform和Jenkins配置作为yaml文件来部署Jenkins。在定义Kubernetes Pod模板时,无论是将commandargs设置为空字符串还是完全不提供它,在部署Jenkins或刷新新配置后,两个值都默认为:

command: /bin/sh -c 
args: cat

这是我的yaml文件的示例,该文件具有容器及其容器的配置:

      - kubernetes:
      name: "kubernetes"
      serverUrl: "https://kubernetes.default"
      skipTlsVerify: true
      namespace: "default"
      credentialsId: "kubernetes_credentials"
      jenkinsUrl: "http://jenkins:8080"
      jenkinsTunnel: "jenkins-agent:50000"
      connectTimeout: 0
      readTimeout: 0
      containerCapStr: 50
      maxRequestsPerHostStr: 64
      retentionTimeout: 5
      templates:
      - name: "default"
        namespace: "default"
        label: "jenkins-slave"
        nodeUsageMode: "NORMAL"
        containers:
        - name: "jnlp"
          image: "dtr.mydomain.com/build-tools/jenkins-build-agent:latest"
          alwaysPullImage: true
          workingDir: "/home/jenkins"
          ttyEnabled: true
          resourceRequestCpu: "200m"
          resourceLimitCpu: "4"
          resourceRequestMemory: "1Gi"
          resourceLimitMemory: "16Gi"
        - name: "dind-daemon"
          image: "dtr.mydomain.com/build-tools/jenkins-build-agent-dind:1.0.0"
          workingDir: "/opt"
          resourceRequestCpu: "20m"
          resourceRequestMemory: "512Mi"
          privileged: true
        - name: "mongodb"
          image: "mongo"
          workingDir: "/opt/mongo"
          resourceRequestCpu: "20m"
          resourceRequestMemory: "512Mi"
          privileged: true
          command: ""
          args: ""

如您在最后一个容器中看到的,我们将command和args设置为空字符串

      command: ""
      args: ""

但是仍然,当我们去詹金斯时,它们默认设置为/bin/sh -ccat,这会引起问题,因为构建容器应该无限运行而不是立即退出,并且默认命令会覆盖在中定义的命令Dockerfile的docker镜像。

注意:我们已经在构建docker映像的Dockerfile中设置了以下命令:

CMD ["sleep", "infinity"]

因此,现在每次我们重新部署Jenkins时,都必须在Jenkins用户界面中手动删除commandargs。这是一个错误还是我们在这里缺少什么?我们可以将命令设置为sleep,将args设置为infinity,就像我们在Dockerfile中设置它们的方式一样,但是我宁愿将它们保留在Dockerfile中自己的映像中,而不污染Jenkins配置

有人遇到类似的问题吗?请分享。

  

Kubernetes插件版本:1.12.4

     

Jenkins版本:2.150

0 个答案:

没有答案