Администратор или разработчик vRealize Automation Code Stream может использовать триггер Docker в vRealize Automation Code Stream. Триггер Docker запускает автономный конвейер непрерывного предоставления (CD) при создании или обновлении артефакта сборки. Триггер Docker запускает конвейер CD, который передает новый или обновленный артефакт в виде образа контейнера в репозиторий центра Docker. Конвейер CD может выполняться в рамках автоматизированной сборки.

Например, для непрерывного развертывания обновленного образа контейнера с помощью конвейера CD используйте триггер Docker. При проверке образа контейнера в реестре Docker веб-перехватчик в центре Docker отправляет уведомление об изменении образа в службу vRealize Automation Code Stream. Это уведомление инициирует запуск конвейера непрерывного предоставления с обновленным образом контейнера и отправку образа в репозиторий центра Docker.

Для использования триггера Docker необходимо выполнить несколько шагов в vRealize Automation Code Stream.

Табл. 1. Как использовать триггер Docker
Действия... Сведения о действии...

Создайте конечную точку реестра Docker.

Чтобы решение vRealize Automation Code Stream могло запускать конвейер, необходима конечная точка реестра Docker. Если конечная точка не существует, можно выбрать параметр, который создаст ее при добавлении веб-перехватчика для триггера Docker.

Конечная точка реестра Docker включает в себя URL-адрес репозитория центра Docker.

Добавьте в конвейер входные параметры, которые автоматически добавляют параметры Docker во время работы конвейера.

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

В конвейер CD следует добавить входные параметры, которые веб-перехватчик Docker передает в конвейер до его запуска.

Создайте веб-перехватчик Docker.

При создании веб-перехватчика Docker в vRealize Automation Code Stream создается соответствующий веб-перехватчик в центре Docker. Веб-перехватчик Docker в vRealize Automation Code Stream подключается к центру Docker по URL-адресу, который указывается в веб-перехватчике.

Веб-перехватчики обмениваются данными друг с другом и запускают конвейер при создании или обновлении артефакта в центре Docker.

При обновлении или удалении веб-перехватчика Docker в vRealize Automation Code Stream также обновляется или удаляется веб-перехватчик в центре Docker.

Добавьте и настройте в конвейере задачу Kubernetes.

При создании или обновлении артефакта в репозитории центра Docker запускается конвейер. Затем он развертывает артефакт через конвейер на узле Docker в кластере Kubernetes.

Добавьте в задачу локальное определение YAML.

Определение YAML, применяемое к задаче развертывания, включает в себя образ контейнера Docker и все секретные ключи, необходимые для извлечения образа из репозитория для развертывания.

При создании или обновлении артефакта в репозитории центра Docker веб-перехватчик в центре Docker отправляет уведомление веб-перехватчику в vRealize Automation Code Stream, который запускает конвейер. Выполняются следующие действия:

  1. Центр Docker отправляет запрос POST на URL-адрес, указанный в веб-перехватчике.
  2. vRealize Automation Code Stream запускает триггер Docker.
  3. Триггер Docker запускает конвейер CD.
  4. Конвейер Docker отправляет артефакт в репозиторий центра Docker.
  5. vRealize Automation Code Stream запускает собственный веб-перехватчик Docker, который запускает конвейер CD, развертывающий артефакт на узле Docker.

В этом примере создаются конечная точка Docker и веб-перехватчик Docker в vRealize Automation Code Stream, который развертывает приложение в кластере разработки Kubernetes. Эти шаги включают в себя пример кода для полезных данных, который Docker отправляет по URL-адресу в веб-перехватчике, используемый код API-интерфейса и код проверки подлинности с защищенным маркером.

Необходимые условия

Процедура

  1. Создайте конечную точку реестра Docker.
    1. а. Щелкните Конечные точки.
    2. б. Щелкните Создать конечную точку.
    3. в. Введите соответствующее имя.
    4. г. Выберите тип сервера: Центр Docker.
    5. д. Введите URL-адрес репозитория центра Docker.
    6. е. Введите имя и пароль, используемые для доступа к репозиторию.
    Конечная точка Docker
  2. В конвейере CD настройте входные свойства для автоматической вставки параметров Docker во время работы конвейера.
    Автоматическая вставка параметров Docker в конвейер.
  3. Создайте веб-перехватчик Docker.
    1. а. Нажмите Триггеры > Docker.
    2. б. Щелкните Новый веб-перехватчик для Docker.
    3. в. Выберите проект.
    4. г. Введите соответствующее имя.
    5. д. Выберите конечную точку реестра Docker.
      Если конечная точка еще не существует, щелкните Создать конечную точку и создайте ее.
    6. е. Выберите конвейер со вставленными параметрами Docker для запуска веб-перехватчика. См. раздел Шаг 2.
      Если конфигурация конвейера включает в себя настраиваемые входные параметры, в списке «Входные параметры» отображаются параметры и значения. Можно ввести значения для входных параметров, которые будут переданы в конвейер с событием триггера. Кроме того, можно оставить значения пустыми или использовать значения по умолчанию, если они заданы.

      Дополнительные сведения о параметрах на вкладке входных данных см. в разделе Планирование собственной сборки по модели непрерывной интеграции и предоставления в vRealize Automation Code Stream перед добавлением задач вручную.

    7. ё. Введите маркер API-интерфейса.
      Маркер API-интерфейса CSP выполняет проверку подлинности для внешних соединений API-интерфейса с vRealize Automation Code Stream. Чтобы получить маркер API-интерфейса, выполните следующие действия.
      1. Выберите Создать маркер.
      2. Введите адрес электронной почты, связанный с именем пользователя и паролем, а затем нажмите Создать.
        Созданный маркер действителен в течение шести месяцев. Он также называется маркером обновления.
        • Чтобы сохранить маркер в виде переменной для использования в будущем, щелкните Создать переменную, введите имя переменной и нажмите кнопку Сохранить.
        • Чтобы сохранить маркер как текстовое значение для использования в будущем, нажмите кнопку Копировать и вставьте маркер в текстовый файл для сохранения в локальной системе.
        Можно создать переменную и одновременно сохранить маркер в текстовом файле для дальнейшего использования.
      3. Нажмите кнопку Закрыть.
    8. ж. Введите образ сборки.
    9. з. Введите тег.
      Веб-перехватчик для триггера Docker
    10. и. Нажмите Сохранить.
      Открывается карточка веб-перехватчика с включенным веб-перехватчиком Docker. Если требуется выполнить пробную отправку в репозиторий центра Docker без запуска веб-перехватчика Docker и выполнения конвейера, щелкните Отключить.
  4. В конвейере CD настройте задачу развертывания Kubernetes.
    1. а. В свойствах задачи Kubernetes выберите кластер разработки Kubernetes.
    2. б. Выберите действие Создать.
    3. в. Выберите Локальное определение для источника полезных данных.
    4. г. Затем выберите локальный файл 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, созданного в vRealize Automation Code Stream, используется механизм проверки подлинности с фильтрацией по разрешенному списку со случайным строковым маркером для веб-перехватчика. Он фильтрует события на основе защищенного маркера, который можно присоединить к hook_url.
      vRealize Automation Code Stream может проверять любые запросы с сервера центра Docker, используя настроенный защищенный маркер. Например: hook_url = IP:Port/pipelines/api/docker-hub-webhooks?secureToken = ""
  5. Создайте артефакт Docker в репозитории центра Docker. Или обновите существующий артефакт.
  6. Убедитесь, что триггер сработал, и просмотрите действие, инициируемое веб-перехватчиком Docker, щелкнув Триггеры > Docker > Действие.
    Просмотр действия веб-перехватчика Docker.
  7. Щелкните Выполняемые элементы и проследите за выполнением конвейера.
    Отслеживание выполнения конвейера после запуска.
  8. Щелкните выполняющийся этап и просмотрите задачи в ходе работы конвейера.
    Просмотр задач в конвейере в ходе его работы.

Результаты

Поздравляем! Настроен триггер Docker для непрерывного запуска конвейера непрерывного предоставления. Теперь конвейер может отправлять новые и обновленные артефакты Docker в репозиторий центра Docker.

Дальнейшие действия

Убедитесь, что новый или обновленный артефакт развернут на узле Docker в кластере разработки Kubernetes.