PullSecret#

Jenkins Job установки secret(s) для пула образов в проект системы оркестрации приложений. Позволяет вводить данные технической учетной записи из интерфейса либо использовать данные из Jenkins Credential или HashiCorp Vault. ID Credentials/имя secret(s) в HashiCorp Vault, который используется для создания secret(s), указан в переменной dockerRegistryCred, определенная в репозитории конфигураций SMDL.

Варианты использования:

  • Обновление secret(s) в одном из проектов, точечное:

    • Выбрать ClusterName, указав какой orchestratorProject хотите обновить, pullSecretName заполнять не обязательно, если его не было в ClustersXml.xml, и в параметрах он не заполнен, то подставится его предопределенное значение из файла конфигурации.

  • Обновление пакетное:

    • ВАЖНО: Регулирование содержимого фильтров параметра attributesOrchestratorProject возможно через параметр пользовательской конфигурации, параметром attributesOrchestratorProjectToAdd, в котором словарь вида: [ 'фрагментИмениПроектаВClustersXml@имяАтрибутаВClustersXml', 'control-panel@isControlPanel', 'synapse-system@isSystemProject' ].

    • Обновление всех проектов у которых заполнен атрибут secretName:

      • Выбрать ClusterName.

      • Перевести параметр attributesOrchestratorProject в значение *.

      • Активировать флаг needUpdateByClustersXml.

    • Обновление всех проектов у которых заполнен атрибут secretName по требуемым критериям:

      • Выбрать ClusterName.

      • Перевести параметр attributesOrchestratorProject в соответсвующее значение, например isControlPanel.

      • Активировать флаг needUpdateByClustersXml.

Jenkins Job использует tool:

  • executor для работы с системой оркестрации приложений;

  • processor для работы с системой оркестрации приложений;

  • yq для чтения YAML конфигураций.

Для настройки Jenkins Tool необходимо ознакомиться с разделом «Взаимодействие с Jenkins Tools» документа «Руководство по системному администрированию».


Функции Jenkins Job:

Название функции

Описание функции

Инструкция по настройке/включению

Включение функциональности по проверке корректности указания авторизационных данных доступа к Registry

В случае если не удастся авторизоваться в Registry, обновление в ClustersXml.xml и создание secret(s) будет прервано

В пользовательском конфигурационном файле в репозитории конфигураций SMDL.Configs определить параметр needCheckAuthorizationToRegistry равным true, а также указать фрагмент rest ссылки в параметре serviceRestBrowse в подблоке params блока dockerRestApi

Параметры запуска Jenkins Job:

Параметр

Обязательность

Возможность изменить предопределенные значения

Описание

ClusterName

+

+

Кластер для установки

projectApiURL

+

-

Ссылка на кластер системы оркестрации приложений. Пример: https://api.cluster_name.ru:6443. Заполняется на основе ClusterName

orchestratorProject

-

+

Имя проекта системы оркестрации приложений. Пример: ci00000001-cluster-synapse-dev

pullSecretName

-

+

Имя secret(s), который будет создан в проекте

dockerServer

+

+

Ссылка на репозиторй с образами Registry

needUseCredential

-

+

Флаг, отвечающий за использование Credential Id для добавления secret(s)
Если выставлено true, то данные будут браться из credential, иначе из полей ниже

dockerUsername

-

+

Логин технической учетной записи, который будет использоваться для pull образов в проекте Не обязателен к заполнению, если needUseCredential=true

dockerPassword

-

+

Пароль технической учетной записи, который будет использоваться для pull образов в проекте Не обязателен к заполнению, если needUseCredential=true

needUpdateByClustersXml

-

+

Флаг, отвечающий за автообновление secret(s) на всех проектах из ClustersXml

attributesOrchestratorProject

-

-

Список атрибутов, при наличии которых выполнять обновление. Работает в связке с флагом needUpdateByClustersXml

ClustersXml

+

-

Структура хранения информация о принадлежности проектов к кластерам

orchestratorProjectAttributes

-

+

Атрибуты проекта системы оркестрации приложения

Источники параметров:

projectConfig - конфигурация проекта. Параметры, которые считываются из репозитория конфигурации SMDL.

jenkinsParams - параметры, которые передаются в pipeline, путем заполнения их на экране запуска Jenkins Job, после нажатия кнопки «Собрать с параметрами». Их описание можете посмотреть выше.

libraryParams - параметры, которые заданы командой разработки SMDL.

Параметры Pipeline:

Параметр

Принцип валидации

Значение по умолчанию

Источник

Описание

needCheckAuthorizationToRegistry

setPropsIfNotExist

true

jenkinsParams

Флаг, отвечающий за проверку возможности авторизации в Registry

ClusterName

requiredNotEmpty

jenkinsParams

Кластер для установки

projectApiURL

requiredNotEmpty

jenkinsParams

Ссылка на кластер системы оркестрации приложений. Пример: https://api.cluster_name.ru:6443. Заполняется на основе ClusterName

dockerServer

requiredNotEmpty

jenkinsParams

Ссылка на репозиторй с образами Registry

kubeconfigFile

requiredNotEmpty

libraryParams

Имя файла с конфигурацией Kubernetes

dynamicTokenPrefix

requiredNotEmpty

projectConfig

Префикс динамического токена

needUseCredential

setPropsIfNotExist

true

jenkinsParams

Флаг, отвечающий за использование Credential Id для добавления secret(s)
Если выставлено true, то данные будут браться из credential, иначе из полей ниже

needInputOrchestratorLogin

setPropsIfNotExist

false

projectConfig

Флаг, отвечающий за авторизацию по логину/паролю (вводится во время работы pipeline динамически, маскируется)

needAddNewItemsToClustersXml

setPropsIfNotExist

true

projectConfig

Флаг, отвечающий за добавление проекта кластера в случае его отсутсвия в ClustersXml репозитория

needUpdateByClustersXml

setPropsIfNotExist

false

jenkinsParams

Флаг, отвечающий за автообновление secret(s) на всех проектах из ClustersXml

pullSecretName

setPropsIfNotExist

pull-secret-name

libraryParams

Имя secret(s), который будет создан в проекте

devOpsTeamTicket

setPropsIfNotExist

SYDEVOPS-1

libraryParams

Задача DevOps команды, под которой проходит обновление в репозитории

orchestratorProject

optionalParam

jenkinsParams

Имя проекта системы оркестрации приложений. Пример: ci00000001-cluster-synapse-dev

attributesOrchestratorProject

optionalParam

jenkinsParams

Список атрибутов, при наличии которых выполнять обновление. Работает в связке с флагом needUpdateByClustersXml

attributesOrchestratorProjectToAdd

optionalParam

projectConfig

Список маркеров определения атрибута по имени проекта

Division

optionalParam

projectConfig

Сегмент (Dev, Psi, Prom)

apiTokenCred

optionalParam

projectConfig

ID CredentialsId для обращения к ресурсам с использованием логина и токена Jenkins (тип: username with password). Пример: ci-token-cred

ciCreds

optionalParam

projectConfig

Список логинов технических учетных записей

configFile

optionalParam

projectConfig

Имя файла доменной пользовательской конфигурации с настройками Jenkins Job

dockerRegistryCred

optionalParam

projectConfig

ID Credentials Jenkins для работы с registry

emailList

optionalParam

projectConfig

Список адресатов для получений результатов работы Jenkins Job

jobsNeedUpdate

optionalParam

projectConfig

Список путей до Jenkins Job, находящиеся в поддиректориях папки Synapse, необходимых для обновления

needPythonTool

optionalParam

projectConfig

Флаг, отвечающий за использование в Jenkins Job Tool Python

needSendBuildLogStarter

optionalParam

projectConfig

Флаг, отвечающий за отправку лога инициатору сборки

needVault

optionalParam

projectConfig

Флаг, отвечающий за активацию взаимодействия с HashiCorp Vault

orchestratorProjectAttributes

optionalParam

*,isControlPanel,isSystemProject

projectConfig

Атрибуты проекта системы оркестрации приложения

publicSourceHost

optionalParam

projectConfig

Хост репозитория Python модулей с авторизацией по токену

publicSourceTurnOn

optionalParam

projectConfig

Флаг, отвечающий за скачивание библиотек из репозитория Python с авторизацией по токену

pypiHost

optionalParam

projectConfig

Хост публичного репозитория Python модулей

pypiIndex

optionalParam

projectConfig

Базовый URL-адрес публичного репозитория Python модулей

skipCheckout

optionalParam

projectConfig

Флаг, отвечающий за пропуск валидации блока с информацией по репозиторию

dockerUsername

optionalParam

jenkinsParams

Логин технической учетной записи, который будет использоваться для pull образов в проекте Не обязателен к заполнению, если needUseCredential=true

dockerPassword

optionalParam

jenkinsParams

Пароль технической учетной записи, который будет использоваться для pull образов в проекте Не обязателен к заполнению, если needUseCredential=true

Минимально необходимые права для работы pipeline в системе оркестрации приложений:

rules:
   - verbs:
        - get
        - list
        - create
        - delete
     apiGroups:
        - ''
     resources:
        - secrets
   - verbs:
        - get
        - patch
        - update
     apiGroups:
        - ''
     resources:
        - serviceaccounts

Используемые шаги:

Все указанные ниже исполняемые скрипты в формате .groovy расположены в подразделе «Шаги» раздела «Дополнительная документация» документа «Руководство прикладного разработчика».

Название stage

Описание

Загрузка инструментов для выполнения pipeline

CommonStep.groovy

Валидация параметров

Validation.groovy

Создание secret

PullSecretCreate.groovy

Всегда выполняются в конце

FinalStep.groovy