Как настроить SSH-ключи для Jenkins Blue Ocean с помощью Kubernetes и Helm - PullRequest
0 голосов
/ 13 ноября 2018

У меня установлена ​​система CI, использующая стабильную диаграмму Дженкинса Хелма с плагином BlueOcean.

В моей системе SCM (BitBucket Server) у меня есть пользователь сборки Jenkins, созданный с настроенными ключами SSH.

Что я хотел бы сделать, так это запустить установку Jenkins с ключом SSH, чтобы при настройке конвейера BlueOcean аутентификация выполнялась без проблем. На самом деле я должен зайти в репозиторий, который я хочу создать, и добавить доступ к SSH-ключу, сгенерированному BlueOcean. Это явно не идеально, так как добавляет дополнительный ручной шаг для каждого конвейера сборки, который нужно настроить.

В документации к диаграмме Jenkins Helm в values.yaml указано значение Agent.volumes, которое можно использовать, например, для монтирования секрета Kubernetes, содержащего ключи SSH. Однако это конфигурация agent , поэтому, вероятно, будет разрешена аутентификация SCM от агента сборки (например, из файла Jenkinsfile). Что я хочу сделать, так это загрузить ключи в Jenkins master .

Я вижу, что существует Master.CredentialsXmlSecret, который допускает секрет Kubernetes, содержащий XML-файл Credentials, но документации по этому вопросу немного (или он отсутствует).

Кто-нибудь настраивал Jenkins на Kubernetes / Helm с такой конфигурацией SSH?

* Редактирование: мне удалось создать правильный файл credentials.xml, войдя в Jenkins и вручную установив ключи SSH, затем скопировав полученный файл credentials.xml, запустив его в кодировке base64, добавив его как секрет Kubernetes и затем связывает его с Master.CredentialsXmlSecret в диаграмме Дженкинса Хелма values.yaml. После этого мой экземпляр Jenkins загружается с файлом credentials.xml на месте (/var/jenkins_home/credentials.xml). Кажется, что учетные данные не загружаются в пользовательский интерфейс Jenkins правильно, но я думаю, что я на правильном пути.

1 Ответ

0 голосов
/ 14 ноября 2018

Вероятно, вы можете настроить его с помощью вызова API для bitbucket для настройки ключа SSH. Примерно так с API 1.0

$ curl --user <USER>:<PASSWORD> -X POST \
  https://bitbucket.org/api/1.0/users/<USER>/ssh-keys \
  --data-urlencode "key=<PUBLIC_KEY>" \
  --data-urlencode "label=<LABEL>"

Документировано здесь или API 2.0:

 $ curl -X POST -H "Content-Type: application/json" \
   -d '{"key": "ssh-ed25519 ...."}' \
   https://api.bitbucket.org/2.0/users/<USER</ssh-keys

Документировано здесь

Не уверен, какой тип разрешений вы ищете, но вам может понадобиться пара ключей SSH репо для трубопроводов Jenkins Blue Ocean.

В любом случае вам придется создать свой собственный образ докера с помощью сценария entrypoint , который берет сгенерированный ключ ssh и отправляет его туда, куда вы хотите его опубликовать.

...