Команда плагинов Jenkins Kubernetes по умолчанию и аргументы для bash, даже если мы установили для них пустое значение - PullRequest
0 голосов
/ 05 декабря 2018

Мы используем конфигурацию terraform и Jenkins в качестве файла yaml для развертывания Jenkins.При определении шаблонов Kubernetes Pod, независимо от того, устанавливаем ли мы command и args в пустую строку или не предоставляем ее вообще, после развертывания 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: ""

, но, тем не менее, когда мы идем к Дженкинсу, по умолчанию они равны /bin/sh -c и cat, что вызывает проблемы, потому что контейнер сборки должен запускаться indenfinetly и не завершаться немедленно, а команда по умолчанию переопределяет команду, определенную в Dockerfile изображения докера.

ПРИМЕЧАНИЕ : мы установили следующую команду в Dockerfile наших образов докера сборки:

CMD ["sleep", "infinity"]

Так что теперь каждый раз, когда мы перераспределяем Jenkins, мы должны вручнуюудалите command и args в пользовательском интерфейсе Jenkins.Это ошибка или мы что-то здесь упускаем?Мы могли бы установить команду на sleep и аргументы на infinity точно так же, как мы установили их в Dockerfile с, но я бы предпочел сохранить их в их собственном образе в Dockerfile и не загрязнять конфигурацию Jenkins.

Кто-нибудь сталкивается с подобной проблемой?Пожалуйста, поделитесь.

Версия плагина Kubernetes: 1.12.4

Версия Jenkins: 2.150

...