Подготовка#
Создание ТУЗ и необходимые права для них#
Для разворачивания и функционирования программного компонента потребуется ТУЗ:
Доменный ТУЗ: да Необходимые права:
Доступ в среду оркестрации
Доступ в BitBucket для клонирования скриптов разворачивания
Доступ к Nexus для загрузки разворачиваемого дистрибутива
Доступ в Docker registry для загрузки образов сервисов
Создание проектной области Jenkins#
Для создания deploy и service pipeline в Jenkins необходимо создать отдельное пространство или переиспользовать существующее.
Настройка BitBucket#
Создать в BitBucket 3 репозитория:
{код компонента}aelt_common{стенд} - предназначения для хранения глобальных значений стендозависимых параметров.
{код компонента}aelt_mail{стенд} - предназначен для автоматической миграции набора стендозависимых параметров из устанавливаемого дистрибутива компонента.
{код компонента}aelt_pipeline{стенд} - предназначен для локального хранения скриптов разворачивания deploy pipeline. где код компонента - любой префикс компонента, стенд - любой суффикс, например, буквенный код стенда. У всех репозиториев коды компонентов и стенды должны быть одинаковы.
Например:
ci02606786_aelt_common_dev
ci02606786_aelt_mail_dev
ci02606786_aelt_pipeline_dev
Примечание: После миграции скриптов автоматизированного deploy по пути {код компонента}aelt_pipeline{стенд}/src/ru/sbrf/devops/pipeline/PipelineUtils.groovy появляется следующая логика
if (configEnv.scriptsCustom && (script.env.ENVIR ==~ /dev.*/ || script.env.ENVIR ==~ /mmv.*/)) {
что говорит о том, что {стенд} должен содержать суффиксы dev или mmv, например {стенд} = dev_lt иначе job не выполнит миграцию.
Для ТУЗ DevOps предоставить права на push в ветку master в каждый созданный репозиторий.
В каждый созданный репозиторий сделать первоначальный commit, например, файла .gitignore в корень репозитория со следующим содержимым
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
Создание Service Account / Выпуск токенов для подключения к среде оркестрации#
Для подключения к среде оркестрации необходимо:
Создать сервисную учетную запись в среде оркестрации (ServiceAccount)
apiVersion: v1
kind: ServiceAccount
metadata:
name: {название_аккаунта}
automountServiceAccountToken: false
Создать RoleBinding в выбранном namespace c типом ServiceAccount, Subject Name название_аккаунта и Role admin (или другой необходимой с достаточными правами)
Создать секрет с типом kubernetes.io/service-account-token
kind: Secret
apiVersion: v1
metadata:
name: test-token
annotations:
kubernetes.io/service-account.name: {название_аккаунта}
kubernetes.io/service-account.uid: {uid_аккаунта}
type: kubernetes.io/service-account-token
Получить токен из созданного секрета User Management → ServiceAccounts → {название service аккаунта} → {token} → Reveal values → token
Добавление учетных данных в Jenkins Credentials plugin#
С помощью утилиты ssh-keygen сгенерировать ssh ключи с длиной 4096 бит для подключения к BitBucket.
** Генерация SSH ключей **
ssh-keygen -t rsa -b 4096
Содержимое файла с открытой частью ключа id_rsa.pub разместить в BitBucket.
Создать запись в Jenkins Credentials с типом SSH Username with private key, в которую разместить закрытую часть ключа из файла id_rsa.
Создать запись в Jenkins Credentials с типом Username with password, в которую разместить логин и пароль ТУЗ DevOps.
Создать запись в Jenkins Credentials с типом Secret text, в которую разместить пароль для файла _passwords.conf
Создать запись в Jenkins Credentials с типом Secret text, в которую разместить токен для подключения к среде оркестрации (см. п. 3.1.5. Выпуск токенов для подключения к среде окрестрации).