61 lines
2.3 KiB
Markdown
61 lines
2.3 KiB
Markdown
# Склейка DinD и Jenkins SSH Agent.
|
||
|
||
- Берем [Jenkins SSH Agent](https://github.com/jenkinsci/docker-ssh-agent), а именно [Alpine Dockerfile](https://github.com/jenkinsci/docker-ssh-agent/blob/master/alpine/Dockerfile)
|
||
- Изменяем базовый образ на `docker:dind` (по-умолчанию он на базе alpine)
|
||
- Добавляем в `Dockerfile` под создание пользователя `jenkins` строки:
|
||
```Dockerfile
|
||
RUN addgroup docker || true && \
|
||
addgroup ${user} docker
|
||
```
|
||
- В `setup-sshd` вписываем строки:
|
||
```shell
|
||
# dockerd's patch
|
||
dockerd-entrypoint.sh &
|
||
```
|
||
- Собираем, тэгаем и пушим
|
||
|
||
# Как использовать:
|
||
|
||
## Запуск агента
|
||
|
||
Генерируем новую пару SSH ключей.
|
||
```shell
|
||
ssh-keygen -t rsa -b 4096 -f .ssh/jenkins-ssh-agent -C "jenkins-ssh-agent"
|
||
```
|
||
|
||
Желательно установить [SysBox](https://github.com/nestybox/sysbox/releases/tag/v0.6.6), без него придется делать контейнер с агентом привилегированным.
|
||
|
||
Берем `docker-compose.yml` файл:
|
||
```yaml
|
||
version: '3.7'
|
||
services:
|
||
jenkins-agent:
|
||
image: git.tswf.io/docker-base-images/jenkins-ssh-agent-jdk17-dind:1.0.7
|
||
restart: always
|
||
# Используем, если не хотим делать контейнер привилегированным
|
||
runtime: sysbox-runc
|
||
# Если не используем SysBox, а зря :c
|
||
#privileged: true
|
||
ports:
|
||
- "31674:22"
|
||
environment:
|
||
JENKINS_AGENT_SSH_PUBKEY: "<YOR_SSH_PUBLIC_KEY_HERE>"
|
||
```
|
||
|
||
и заменяем `<YOR_SSH_PUBLIC_KEY_HERE>` на сгенеренный публичный ключ
|
||
|
||
Запускаем агента:
|
||
|
||
```shell
|
||
docker compose up -d
|
||
```
|
||
|
||
## Настройки Jenkins
|
||
|
||
Смотри [описание агента](AGENT.README.md)
|
||
|
||
# Использование от ROOT
|
||
|
||
Образ пропатчен для возможности запуска агента от имени ROOT. Решает сложности с запуском одноразовых docker-агентов на нашей ноде.
|
||
|
||
Просто в credentials при указании логина пишем `root`. Публичный ключ прописывается и на `jenkins`, и на него. |