Команда плагинов 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