Как jenkins упаковывает и развертывает образы на ранчо

Docker

В этой статье я познакомлю вас с новой областью, как использовать jenkins для публикации изображений на ранчере.

1. Установите плагин

Войдите в jenkins и найдите rancher в диспетчере плагинов, чтобы установить плагин rancher.

2. Добавить сборку владельца ранчо

На самом деле, мы также можем напрямую передать зеркальный сервис с помощью следующей команды.

mvn clean package docker:build -DpushImage

Но рассматриваемая сеть медленная, мы используем плагин напрямую, а прямой доступ к ранчеру внутри будет гораздо быстрее.

3. Настройте информацию о владельце ранчо

API Endpoint можно найти в rancher здесь

Ключ API ранчера:

имя пользователя — это ключ доступа, полученный на первом шаге

пароль — секретный ключ, полученный на первом шаге

id и Description не важны и могут быть заполнены по желанию

Идентификатор среды ранчера: идентификатор среды, который можно получить в управлении средой интерфейса управления ранчо.

Имя службы: формат — это имя инфраструктуры/имя службы, следующая цифра — это имя инфраструктуры.

Нажмите, чтобы ввести название каждой службы

Docker Image: имя контейнера, вы можете использовать переменные jenkins для динамической сборки

На этом этапе, после создания jenkins, вы можете вызвать API ранчера для выпуска и обновления контейнера.

4. Убедитесь, что развертывание прошло успешно

Просмотр журнала консоли jenkins

Войдите в систему ранчера, чтобы просмотреть журнал службы, и обновление успешно завершено.

5. Список вопросов для замечаний

Вопрос один:

Maven не может установить подключаемый модуль докеров, выдается сообщение: плагин не найден для префикса «докер», когда докер: булид

решение:

Причина в том, что maven не распознает docker-maven-plugin и должен быть добавлен в тег pluginGroups файла settings.xml.

<pluginGroup>com.spotify</pluginGroup>

Таким образом, реимпорт в порядке

<pluginGroups>            <pluginGroup>com.spotify</pluginGroup>        </pluginGroups>

Место, где мой pom.xml представляет плагин докера, выглядит следующим образом:

<groupId>com.spotify</groupId><artifactId>docker-maven-plugin</artifactId><version>1.0.0</version>

Вопрос второй:

o {}->unix://localhost:80: No such file or directory
Apr 06, 2020 11:07:51 AM org.apache.http.impl.execchain.RetryExec execute

решение:

1. Откройте удаленный доступ к API Docker (ссылка: https://blog.csdn.net/csde12/article/details/70240721)

 sudo vi /etc/systemd/system/docker.serviceExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

2. Перезапустите демон

 sudo systemctl daemon-reload   
 sudo systemctl restart docker

3. Добавьте DOCKER_HOST=tcp://localhost:2375 в глобальную переменную Jenkins.


Вопрос третий

org.apache.http.conn.UnsupportedSchemeException), пойманный при обработке запроса к {}->tcp://192.168.218.24:2375: протокол tcp не поддерживается…

решение:

<dockerHost>${docker.repository.host}</dockerHost>

Меняем протокол tcp на http