Команда плагинов Jenkins Kubernetes по умолчанию и аргументы для bash, даже если мы установили для них пустое значение

Мы используем конфигурацию 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

Дженкинс версия: 2.150

0 ответов

Другие вопросы по тегам