Администратор или разработчик Code Stream может использовать триггер Docker в Code Stream. Триггер Docker запускает автономный конвейер непрерывного предоставления (CD) при создании или обновлении артефакта сборки. Триггер Docker запускает конвейер CD, который передает новый или обновленный артефакт в виде образа контейнера в репозиторий центра Docker. Конвейер CD может выполняться в рамках автоматизированной сборки.
Например, для непрерывного развертывания обновленного образа контейнера с помощью конвейера CD используйте триггер Docker. При проверке образа контейнера в реестре Docker веб-перехватчик в центре Docker отправляет уведомление об изменении образа в службу Code Stream. Это уведомление инициирует запуск конвейера непрерывного предоставления с обновленным образом контейнера и отправку образа в репозиторий центра Docker.
Для использования триггера Docker необходимо выполнить несколько шагов в Code Stream.
Табл. 1.
Как использовать триггер Docker
Действия... |
Сведения о действии... |
Создайте конечную точку реестра Docker. |
Чтобы решение Code Stream могло запускать конвейер, необходима конечная точка реестра Docker. Если конечная точка не существует, можно выбрать параметр, который создаст ее при добавлении веб-перехватчика для триггера Docker. Конечная точка реестра Docker включает в себя URL-адрес репозитория центра Docker. |
Добавьте в конвейер входные параметры, которые автоматически добавляют параметры Docker во время работы конвейера. |
Возможна вставка параметров Docker в конвейер. Параметры могут включать в себя имя владельца события Docker, образ, имя репозитория, пространство имен репозитория и тег. В конвейер CD следует добавить входные параметры, которые веб-перехватчик Docker передает в конвейер до его запуска. |
Создайте веб-перехватчик Docker. |
При создании веб-перехватчика Docker в Code Stream создается соответствующий веб-перехватчик в центре Docker. Веб-перехватчик Docker в Code Stream подключается к центру Docker по URL-адресу, который указывается в веб-перехватчике. Веб-перехватчики обмениваются данными друг с другом и запускают конвейер при создании или обновлении артефакта в центре Docker. При обновлении или удалении веб-перехватчика Docker в Code Stream также обновляется или удаляется веб-перехватчик в центре Docker. |
Добавьте и настройте в конвейере задачу Kubernetes. |
При создании или обновлении артефакта в репозитории центра Docker запускается конвейер. Затем он развертывает артефакт через конвейер на узле Docker в кластере Kubernetes. |
Добавьте в задачу локальное определение YAML. |
Определение YAML, применяемое к задаче развертывания, содержит образ контейнера Docker. Если необходимо загрузить образ из частного репозитория, файл YAML должен содержать раздел с секретом конфигурации Docker. См. подраздел о непрерывном предоставлении в разделе Планирование собственной сборки по модели непрерывной интеграции и непрерывной доставки в Code Stream перед использованием смарт-шаблона конвейера. |
При создании или обновлении артефакта в репозитории центра Docker веб-перехватчик в центре Docker отправляет уведомление веб-перехватчику в Code Stream, который запускает конвейер. Выполняются следующие действия:
- Центр Docker отправляет запрос POST на URL-адрес, указанный в веб-перехватчике.
- Code Stream запускает триггер Docker.
- Триггер Docker запускает конвейер CD.
- Конвейер Docker отправляет артефакт в репозиторий центра Docker.
- Code Stream запускает собственный веб-перехватчик Docker, который запускает конвейер CD, развертывающий артефакт на узле Docker.
В этом примере создаются конечная точка Docker и веб-перехватчик Docker в Code Stream, который развертывает приложение в кластере разработки Kubernetes. Эти шаги включают в себя пример кода для полезных данных, который Docker отправляет по URL-адресу в веб-перехватчике, используемый код API-интерфейса и код проверки подлинности с защищенным маркером.
Необходимые условия
- Убедитесь, что в экземпляре Code Stream существует конвейер непрерывного предоставления (CD). Кроме того, убедитесь в наличии одной или нескольких задач Kubernetes, которые развертывают приложение. См. раздел Планирование сборки, интеграции и предоставления кода встроенными средствами в Code Stream.
- Убедитесь, что у вас есть доступ к существующему кластеру Kubernetes, в котором конвейер CD может развернуть приложение для разработки.
- Проверьте, являетесь ли вы участником проекта в Code Stream. Если нет, попросите администратора Code Stream добавить вас в проект в качестве участника. См. раздел Добавление проекта в Code Stream.
Процедура
- Создайте конечную точку реестра Docker.
- а. Щелкните Конечные точки.
- б. Щелкните Создать конечную точку.
- в. Начните вводить имя существующего проекта.
- г. Выберите тип Реестр Docker.
- д. Введите соответствующее имя.
- е. Выберите тип сервера Центр Docker.
- ё. Введите URL-адрес репозитория центра Docker.
- ж. Введите имя и пароль для доступа к репозиторию.
- В конвейере CD настройте входные свойства для автоматической вставки параметров Docker во время работы конвейера.
- Создайте веб-перехватчик Docker.
- а. Нажмите .
- б. Щелкните Новый веб-перехватчик для Docker.
- в. Выберите проект.
- г. Введите соответствующее имя.
- д. Выберите конечную точку реестра Docker.
Если конечная точка еще не существует, щелкните
Создать конечную точку и создайте ее.
- е. Выберите конвейер со вставленными параметрами Docker для запуска веб-перехватчика. См. раздел Шаг 2.
- ё. Введите маркер API-интерфейса.
Маркер API-интерфейса CSP выполняет проверку подлинности для внешних соединений API-интерфейса с
Code Stream. Чтобы получить маркер API-интерфейса, выполните следующие действия.
- Выберите Создать маркер.
- Введите адрес электронной почты, связанный с именем пользователя и паролем, а затем нажмите Создать.
Созданный маркер действителен в течение шести месяцев. Он также называется маркером обновления.
- Чтобы сохранить маркер в виде переменной для использования в будущем, щелкните Создать переменную, введите имя переменной и нажмите кнопку Сохранить.
- Чтобы сохранить маркер как текстовое значение для использования в будущем, нажмите кнопку Копировать и вставьте маркер в текстовый файл для сохранения в локальной системе.
Можно создать переменную и одновременно сохранить маркер в текстовом файле для дальнейшего использования.
- Нажмите кнопку Закрыть.
- ж. Введите образ сборки.
- з. Введите тег.
- и. Нажмите Сохранить.
Открывается карточка веб-перехватчика с включенным веб-перехватчиком Docker. Если требуется выполнить пробную отправку в репозиторий центра Docker без запуска веб-перехватчика Docker и выполнения конвейера, щелкните
Отключить.
- В конвейере CD настройте задачу развертывания Kubernetes.
- а. В свойствах задачи Kubernetes выберите кластер разработки Kubernetes.
- б. Выберите действие Создать.
- в. Выберите Локальное определение для источника полезных данных.
- г. Затем выберите локальный файл YAML.
Например, центр Docker может отправить это локальное определение YAML в виде полезных данных на URL-адрес в веб-перехватчике:
{
"callback_url": "https://registry.hub.docker.com/u/svendowideit/testhook/hook/2141b5bi5i5b02bec211i4eeih0242eg11000a/",
"push_data": {
"images": [
"27d47432a69bca5f2700e4dff7de0388ed65f9d3fb1ec645e2bc24c223dc1cc3",
"51a9c7c1f8bb2fa19bcd09789a34e63f35abb80044bc10196e304f6634cc582c",
"..."
],
"pushed_at": 1.417566161e+09,
"pusher": "trustedbuilder",
"tag": "latest"
},
"repository": {
"comment_count": 0,
"date_created": 1.417494799e+09,
"description": "",
"dockerfile": "#\n# BUILD\u0009\u0009docker build -t svendowideit/apt-cacher .\n# RUN\u0009\u0009docker run -d -p 3142:3142 -name apt-cacher-run apt-cacher\n#\n# and then you can run containers with:\n# \u0009\u0009docker run -t -i -rm -e http_proxy http://192.168.1.2:3142/ debian bash\n#\nFROM\u0009\u0009ubuntu\n\n\nVOLUME\u0009\u0009[\/var/cache/apt-cacher-ng\]\nRUN\u0009\u0009apt-get update ; apt-get install -yq apt-cacher-ng\n\nEXPOSE \u0009\u00093142\nCMD\u0009\u0009chmod 777 /var/cache/apt-cacher-ng ; /etc/init.d/apt-cacher-ng start ; tail -f /var/log/apt-cacher-ng/*\n",
"full_description": "Docker Hub based automated build from a GitHub repo",
"is_official": false,
"is_private": true,
"is_trusted": true,
"name": "testhook",
"namespace": "svendowideit",
"owner": "svendowideit",
"repo_name": "svendowideit/testhook",
"repo_url": "https://registry.hub.docker.com/u/svendowideit/testhook/",
"star_count": 0,
"status": "Active"
}
}
В API-интерфейсе, который создает веб-перехватчик в центре Docker, используется следующая форма:
https://cloud.docker.com/v2/repositories/%3CUSERNAME%3E/%3CREPOSITORY%3E/webhook_pipeline/
Тело кода JSON выглядит следующим образом:
{
"name": "demo_webhook",
"webhooks": [
{
"name": "demo_webhook",
"hook_url": "http://www.google.com"
}
]
}
Чтобы получать события с сервера центра Docker, в схеме проверки подлинности для веб-перехватчика Docker, созданного в
Code Stream, используется механизм проверки подлинности с фильтрацией по разрешенному списку со случайным строковым маркером для веб-перехватчика. Он фильтрует события на основе защищенного маркера, который можно присоединить к
hook_url
.
Code Stream может проверять любые запросы с сервера центра Docker, используя настроенный защищенный маркер. Например,
hook_url = IP:Port/pipelines/api/docker-hub-webhooks?secureToken = ""
.
- Создайте артефакт Docker в репозитории центра Docker. Или обновите существующий артефакт.
- Убедитесь, что триггер сработал, и просмотрите действие, инициируемое веб-перехватчиком Docker, щелкнув .
- Щелкнув Выполняемые элементы, можно наблюдать за работой конвейера.
- Щелкните выполняющийся этап и просмотрите задачи в ходе работы конвейера.
Результаты
Поздравляем! Настроен триггер Docker для непрерывного запуска конвейера непрерывного предоставления. Теперь конвейер может отправлять новые и обновленные артефакты Docker в репозиторий центра Docker.
Дальнейшие действия
Убедитесь, что новый или обновленный артефакт развернут на узле Docker в кластере разработки Kubernetes.