Вход и Pu sh docker изображение в (небезопасный) артефактор docker репо из конвейера jenkins, работающего на k8s - PullRequest
0 голосов
/ 05 августа 2020

Чего я хочу достичь: возможность передать sh docker изображение в (небезопасный) артефактор docker репо из конвейера Дженкинса, который работает на кубернетах (jnlp).

То, что я пытаюсь: Я использую плагин kubernetes для jenkins (работает на k8s), который запускает docker: контейнер dind как подчиненный агент. Когда я pu sh, он выходит из строя с ошибкой сертификата (x509), так как это небезопасное репозиторий артефактов. Следовательно, Чтобы pu sh для небезопасного артефакта, я хочу обновить --insecure-registries в демоне. json клиента docker.

Но, к сожалению, даже после обновления демона. json внутри docker: обратите внимание, что это не действует, поскольку используется клиент docker из нижележащего узла, на котором работает k8s. (minikube в моем случае) и docker: dind используется как демон

Таким образом, я не могу добавить свой artifactory repo --insecure-registries внутри клиента docker, если я не обновлю демон. json на кластере k8s docker клиент (на minikube)

Что я хочу сделать: Следовательно, я хочу изменить docker клиента с узла k8s (minikube) на другой docker раб, работающий внутри плагина kubernetes, где я могу настроить демон. json. Вы можете мне помочь? или предложите лучший способ исправить это.

1 Ответ

0 голосов
/ 07 августа 2020

Вместо использования docker -in- docker вы можете позволить jnlp-slave использовать демон docker вашего хоста, если вы подключите к нему /var/run/docker.sock. Затем вы можете отредактировать /etc/docker/daemon.json своего хоста, чтобы добавить небезопасный реестр.

Предполагая, что вы определяете свой шаблон jnlp-slave в конвейере, вы можете сделать:

pipeline {
    agent {
        kubernetes {
            yaml """
apiVersion: v1
kind: Pod
metadata:
  label:
    jenkins: slave
spec:
  containers:
  - name: jnlp
    image: registry/jnlp-slave:latest
    volumeMounts:
      - name: docker
        mountPath: /var/run/docker.sock
  volumes:
  - name: docker
    hostPath: { path: /var/run/docker.sock }
"""```
...