Подготовка#

Создание ТУЗ и необходимые права для них#

Для разворачивания и функционирования программного компонента потребуется ТУЗ:

Доменный ТУЗ: да Необходимые права:

  • Доступ в среду оркестрации

  • Доступ в BitBucket для клонирования скриптов разворачивания

  • Доступ к Nexus для загрузки разворачиваемого дистрибутива

  • Доступ в Docker registry для загрузки образов сервисов

Создание проектной области Jenkins#

Для создания deploy и service pipeline в Jenkins необходимо создать отдельное пространство или переиспользовать существующее.

Настройка BitBucket#

  1. Создать в 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 не выполнит миграцию.

  1. Для ТУЗ DevOps предоставить права на push в ветку master в каждый созданный репозиторий.

  2. В каждый созданный репозиторий сделать первоначальный commit, например, файла .gitignore в корень репозитория со следующим содержимым

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr

Создание Service Account / Выпуск токенов для подключения к среде оркестрации#

Для подключения к среде оркестрации необходимо:

  1. Создать сервисную учетную запись в среде оркестрации (ServiceAccount)

apiVersion: v1
kind: ServiceAccount
metadata:
  name: {название_аккаунта}
automountServiceAccountToken: false
  1. Создать RoleBinding в выбранном namespace c типом ServiceAccount, Subject Name название_аккаунта и Role admin (или другой необходимой с достаточными правами)

  2. Создать секрет с типом 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
  1. Получить токен из созданного секрета User Management → ServiceAccounts → {название service аккаунта} → {token} → Reveal values → token

Добавление учетных данных в Jenkins Credentials plugin#

  1. С помощью утилиты ssh-keygen сгенерировать ssh ключи с длиной 4096 бит для подключения к BitBucket.

** Генерация SSH ключей **
ssh-keygen -t rsa -b 4096
  1. Содержимое файла с открытой частью ключа id_rsa.pub разместить в BitBucket.

  2. Создать запись в Jenkins Credentials с типом SSH Username with private key, в которую разместить закрытую часть ключа из файла id_rsa.

  3. Создать запись в Jenkins Credentials с типом Username with password, в которую разместить логин и пароль ТУЗ DevOps.

  4. Создать запись в Jenkins Credentials с типом Secret text, в которую разместить пароль для файла _passwords.conf

  5. Создать запись в Jenkins Credentials с типом Secret text, в которую разместить токен для подключения к среде оркестрации (см. п. 3.1.5. Выпуск токенов для подключения к среде окрестрации).