Jenkins через KUBENETES и Docker
В случае Jenkins над контейнером, управляемым Kubernetes POD , немного сложнее, так как: kubectl exec PODID --namespace=jenkins -it -- /bin/bash
вы разрешите доступ напрямую к контейнеру, на котором запущен Jenkins, но у вас не будет доступа с правами root , sudo
, vi
, и многие команды недоступны, поэтому требуется обходной путь.
Используйте kubectl describe pod [...]
, чтобы найти узел, на котором запущен ваш Pod, и идентификатор контейнера (docker://...)
SSH
в узле - , запустить
docker exec -ti -u root -- /bin/bash
дляполучить доступ к контейнеру с привилегиями Root apt-get update
sudo apt-get install vim
Второе отличие заключается в том, что файл конфигурации Jenkins размещенв другом пути, соответствующем точке монтирования постоянного тома, например /var/jenkins_home
, это местоположение может измениться в будущем, проверьте, работает ли оно df
.
Затем отключите защиту - измените true на false в файле /var/jenkins_home/jenkins/config.xml
.
<useSecurity>false</useSecurity>
Теперь достаточно перезапустить Jenkins, действие, которое приведет к смерти контейнера и модуля,он будет создан снова через несколько секунд с обновленной конфигурацией (и все возможности, такие как vi, обновление стерто) благодаря постоянному объему.
Все решение было протестировано на Google Kubernetes Engine. ОБНОВЛЕНИЕ Обратите внимание, что вы также можете запустить ps -aux
пароль в виде обычного текста отображается даже без root-доступа.
jenkins@jenkins-87c47bbb8-g87nw:/$ps -aux
[...]
jenkins [..] -jar /usr/share/jenkins/jenkins.war --argumentsRealm.passwd.jenkins=password --argumentsRealm.roles.jenkins=admin
[...]