Установка#

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

Ручная установка сервиса#

Для ручной установки сервиса выполните следующие действия:

  1. Разместить содержимое дистрибутива в репозитории SMDL.Core, предназначенном для ядра SMDL и произвести commit и push.

  2. Создать структуру каталогов и файлов, в репозитории конфигураций SMDL.Configs.

    smdl_configs.git
      ├── vars
      └── resources
          └── custom
              ├── configs
              |   ├── Dev
              |   |   ├── ReposXml.xml
              |   |   └── ClustersXml.xml
              |   └── CIXml.xml
              └── .jenkins
    
  3. Скопировать содержимое каталога installationResources/vars и разместить его в каталоге vars в репозитории предназначенном для конфигурации SMDL.Configs.

  4. Скопировать configDev.Template.yml из каталога installationResources/templates и разместить его в каталоге resources/custom/.jenkins в репозитории конфигураций SMDL.Configs.

  5. Переименовать configDev.Template.yml в configDev.yml.

  6. Внести следующие корректировки в файле configDev.yml (если поле необязательно и не будет заполнено, то его следует удалить или заполнить пустой строкой ''):

    Адрес параметра в конфигурационном файле

    Значение, которое необходимо подставить

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

    general.Division

    Среда работы (Dev/Psi/Prom)

    +

    general.Segment

    Сегмент использования (Dzo/Sigma/Delta)

    +

    general.sonarQubeUrl

    Ссылка для работы с SonarQube. Пример: https://sonar.ru/sonar

    -

    general.jiraUrl

    Ссылка для работы с Jira. Пример: https://jira.ru

    +

    general.creds.ciCred

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

    +

    general.creds.apiTokenCred

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

    +

    general.creds.mavenCredSettingXml

    ID CredentialsId (тип: Secret file) в котором лежит персонализированный settings.xml для Maven. Пример: setting-maven-ci

    -

    general.creds.AnsibleVaultCredentialsId

    ID CredentialsId для шифрации и дешифрации (тип: Secret file). Пример: dev_common_ansible_vault_secret

    +

    general.jobs.*.checkout.*.credentialsId

    ID CredentialsId для обращения к репозиториям по SSH (тип: SSH username with private key). Пример: ssh-cred

    +

    general.tools.python.name

    Имя Jenkins Tool для работы с Python

    +

    general.tools.python.type

    Тип Jenkins Tool для работы с Python

    +

    general.tools.python.path

    Путь до bin файла в Jenkins Tool для работы с Python

    +

    general.tools.executor.name

    Имя Jenkins Tool для работы с системой оркестрации приложений

    +

    general.tools.executor.type

    Тип Jenkins Tool для работы с системой оркестрации приложений

    +

    general.tools.executor.path

    Путь до bin файла в Jenkins Tool для работы с системой оркестрации приложений

    +

    general.tools.precheckExecutor.name

    Имя Jenkins Tool для работы с системой оркестрации приложений в части PreCheck

    -

    general.tools.precheckExecutor.type

    Тип Jenkins Tool для работы с системой оркестрации приложений в части PreCheck

    -

    general.tools.precheckExecutor.path

    Путь до bin файла в Jenkins Tool для работы с системой оркестрации приложений в части PreCheck

    -

    general.tools.sonarQube.name

    Имя Jenkins Tool для сканирования SonarQube

    -

    general.tools.sonarQube.type

    Тип Jenkins Tool для сканирования SonarQube

    -

    general.tools.sonarQube.path

    Путь Jenkins Tool для сканирования SonarQube

    -

    general.tools.helm.name

    Имя Jenkins Tool для работы с Helm

    -

    general.tools.helm.type

    Тип Jenkins Tool для работы с Helm

    -

    general.tools.helm.path

    Путь до bin файла в Jenkins Tool для работы с Helm

    -

    general.tools.istioctl.name

    Имя Jenkins Tool для работы с IstioCTL

    -

    general.tools.istioctl.type

    Тип Jenkins Tool для работы с IstioCTL

    -

    general.tools.istioctl.path

    Путь до bin файла в Jenkins Tool для работы с IstioCTL

    -

    general.tools.jdk.name

    Имя Jenkins Tool для работы с JDK

    +

    general.tools.jdk.type

    Тип Jenkins Tool для работы с JDK

    +

    general.tools.jdk.path

    Путь до bin файла в Jenkins Tool для работы с JDK

    -

    general.tools.jdkSonar.name

    Имя Jenkins Tool для работы с JDK, используемого при сканировании SonarQube

    -

    general.tools.jdkSonar.type

    Тип Jenkins Tool для работы с JDK, используемого при сканировании SonarQube

    -

    general.tools.jdkSonar.path

    Путь до bin файла в Jenkins Tool для работы с JDK

    +

    general.tools.gradle.name

    Имя Jenkins Tool для работы с Gradle

    +

    general.tools.gradle.type

    Тип Jenkins Tool для работы с Gradle

    +

    general.tools.gradle.path

    Путь до bin файла в Jenkins Tool для работы с Gradle

    +

    general.tools.maven.name

    Имя Jenkins Tool для работы с Maven

    -

    general.tools.maven.type

    Тип Jenkins Tool для работы с Maven

    -

    general.tools.maven.path

    Путь до bin файла в Jenkins Tool для работы с Maven

    -

    general.tools.nodejs.name

    Имя Jenkins Tool для работы с NodeJs

    -

    general.tools.nodejs.type

    Тип Jenkins Tool для работы с NodeJs

    -

    general.tools.nodejs.path

    Путь до bin файла в Jenkins Tool для работы с NodeJs

    -

    general.tools.yq.name

    Имя Jenkins Tool для работы с YQ

    -

    general.tools.yq.type

    Тип Jenkins Tool для работы с YQ

    -

    general.tools.yq.path

    Путь до bin файла в Jenkins Tool для работы с YQ

    -

    general.taskTrackerSettings.fieldCi

    Идентификатор поля для КЭ в Jira

    +

  7. Сформировать «CIXml», «ClustersXml» и «ReposXml» в соответствии с документацией и разместить в ранее созданных файлах (шаг 2).

  8. Произвести commit и push проделанных изменений в репозитории конфигураций SMDL.Configs.

  9. Подключить библиотеки в Jenkins:

    1. Перейти в ваше пространство Jenkins и нажать „Configure“.

      jenkins_folder_settings

      Рисунок. Выбор пункта меню «Configure»

    2. Найти раздел „Pipeline Libraries“ в открывшемся окне и нажать „Добавить“.

      jenkins_library_add

      Рисунок. Добавление новой библиотеки

    3. Добавить информацию о первой библиотеке с ядром SMDL, заполнить поле „Name“ (указывается devopsLib), поле „Default version“ (ветка из которой будут выгружаться исходники), „Project Repository“ (SSH ссылка на репозиторий ядра SMDL.Core), „Credentials“ (SSH Credential созданный ранее).

      jenkins_library_devopslib

      Рисунок. Добавление данных для библиотеки

    4. Добавить информацию о второй библиотеке с конфигурацией SMDL. Поле „Name“ (указывается nestedDevopsLib), „Project Repository“ (SSH-ссылка на репозиторий конфигураций SMDL.Configs), остальные поля заполняются по аналогии с предыдущим пунктом.

  10. Создать Jenkins Job SynapseBuilder, SynapseInstaller, OrchestratorToken, PullSecret.

    Процесс создания Jenkins Job:

    1. Перейти в ваше пространство Jenkins и нажать „New Item“.

      jenkins_job_new

      Рисунок. Выбор пункта меню «New Item»

    2. Указать имя Jenkins Job в открывшемся окне в поле „Введите имя Item’а“, выбрать тип Pipeline и нажать „OK“.

      jenkins_job_info

      Рисунок. Заполнение необходимой информации

    3. Заполнить в поле „Pipeline“ скрипт по шаблону и после заполнения нажать „Сохранить“.

      library "nestedDevopsLib" _
      devopsLibInit()
      
      runPipeline("ИмяВашегоPipeline",[agentLabel: 'ИмяАгентаJenkins', updateParams: true, verbose: false, configFile: "ПутьДоФайлаКонфигурации"])
      

      Пример заполнения:

      library "nestedDevopsLib" _
      devopsLibInit()
      
      runPipeline("SynapseBuilder",[agentLabel: 'rhel7 || kubernetes_16Gb || kubernetes_8Gb || kubernetes || Linux_Default', updateParams: true, verbose: false, configFile: ".jenkins/configDev.yml"])
      

    При наличии ограничений на стороне Jenkins, в части задания Pipeline Script, SMDL позволяет работать с Pipeline из репозитория. Для этого необходимо:

    1. Сохранить скрипт, описанный выше, в файл с именем ИмяВашегоPipeline.groovy (пример: SynapseInstaller.groovy).

    2. Разместить полученный файл со скриптом в репозитории конфигураций SMDL.Configs по пути scripts/СредаВыполнения (пример: scripts/Psi/SynapseInstaller.groovy) и произвести commit и push.

    3. Выбрать режим Pipeline Script from SCM в настройках Jenkins Job в поле „Pipeline“.

      jenkins_job_pipeline_from_scm

      Рисунок. Выбор режима

    4. Добавить информацию о репозитории и путь до Pipeline. Выбрать SCM (тип репозитория), „Repository URL“ (SSH ссылка на репозиторий конфигураций SMDL.Configs), „Credentials“ (SSH Credential созданный ранее), „Branches to build“ (ветка из которой будет выгружаться Pipeline), „Script Path“ (путь до Pipeline в репозитории).

      jenkins_job_pipeline_repo_settings

      Рисунок. Настройка Jenkins Job

    5. Нажать „Сохранить“ после заполнения.

    Для ряда Jenkins Job, чтобы обеспечить полную функциональность, необходимо подключать дополнительные библиотеки при задании Pipeline. В таблице ниже представлены Jenkins Jobs и дополнительные библиотеки, необходимые для работы.

    Библиотеки

    Jenkins Jobs

    @Library(„ru.sbrf.devsecops@master“)

    PublishQG, DPM, NexusPublisher, SynapseBuilder

    @Library(„DPMPipelineUtils@1.4“) _

    DPM, ScannerSastOss, SynapseBuilder, SynapseInstaller

  11. Запустить созданные на предыдущем шаге Jenkins Job, путем нажатия кнопки „Собрать сейчас“. В рамках первой сборки будет произведено автообновление Jenkins Job, и параметров запуска в результате чего сборка будет завершена неуспешно. После этого можно начинать пользоваться Jenkins Job.

Автоматизированная установка сервиса#

Для автоматизированной установки сервиса необходимо:

  1. Создать два каталога на персональном компьютере (для ядра SMDL.Core и конфигураций SMDL.Configs) из которых в дальнейшем будет произведен push в соответствующие репозитории.

  2. Разместить содержимое дистрибутива в репозитории SMDL.Core, предназначенном для ядра SMDL.

  3. Открыть терминал по данному каталогу.

  4. Перейти в каталог cli, используя команду cd installationResources/cli/

  5. Запустить CLI для установки SMDL. Существует два режима:

    • В интерактивном режиме. В данном режиме все параметры, необходимые для развертывания будут запрашиваться поочередно с подсказками по заполнению и проверками корректности (проверка корректности реализована не для всех параметров). Командна запуска в интерактивном режиме: ./smdl_install

    • В режиме чтения файла с настройками. В данном режиме можно предварительно подготовить JSON-файл с настройками для разворота SMDL. Также данный файл будет генерироваться по результатам установки SMDL с использованием CLI в интерактивном режиме. Данный файл можно в дальнейшем использовать для обновления SMDL. Командна запуска в режиме чтения файла с настройками: ./smdl_install -f settings.json Пример файла с настройками:

      {
        "type_install": "dev",
        "format_install": "update",
        "need_create_job": "y",
        "path_to_repo_configs": "/Users/user_login/IdeaProjects/importSMDLConfigs",
        "segment": "Dzo",
        "smdl_core_git_ssh_target": "ssh://git@example.ru:7998/sydevops/importsmdl.git",
        "smdl_configs_git_ssh_target": "ssh://git@example.ru:7998/sydevops/importsmdlconfigs.git",
        "branch_target": "master",
        "slave_builder_job": "builderAgent",
        "slave_other_jobs": "agent",
        "tool_python_name": "ansible-core2.10.3",
        "tool_python_type": "org.jenkinsci.plugins.ansible.AnsibleInstallation",
        "tool_python_path": "python3.6",
        "jenkins_url": "https://jenkins.ru/jenkins-ci/job/synapse/job/DevopsLib/",
        "ci_number": "00000017",
        "nexus_url": "https://nexus.ru/nexus-cd",
        "nexus_group_id": "nexus_PROD.CI00000017_synapse",
        "nexus_artifact_id": "SYNAPSE",
        "nexus_dev_repo": "nexus_PROD",
        "nexus_release_repo": "nexus_PROD",
        "docker_registry_url": "registry.ru",
        "docker_registry_ci": "ci00000182_sydevops",
        "docker_registry_project": "ci00000182_sydevops",
        "dev_docker_registry_url": "registry.ru/repo",
        "docker_dev_repo": "devrepo",
        "release_docker_registry_url": "registry.ru/repo",
        "docker_release_repo": "releaserepo",
        "docker_release_repo_prefix": "repoprefix",
        "ci_credentials_id": "tuz_ci_sybuild",
        "ssh_credentials_id": "ssh-tuz_ci_sybuild",
        "ci_token_credentials_id": "tuz_ci_sybuild_jenkins_token",
        "ansible_vault_credentials_id": "dev_common_ansible_vault_secret",
        "orchestrator_cluster_url": "https://api.k8s-cluster.ru:6443",
        "orchestrator_project_array": "k8s-project1,k8s-project2",
        "projects_config_git_url_sources": "ssh://git@example.ru:7998/synapse/synapse-config-dev-gen.git",
        "synapse_git_url_sources": "ssh://git@example.ru:7998/synapse/synapse-federal.git",
        "tool_executor_name": "oc3.11.0",
        "tool_executor_type": "oc",
        "tool_executor_path": "oc",
        "tool_jdk_name": "openjdk-11.0.2_linux",
        "tool_jdk_type": "jdk",
        "tool_jdk_path": "",
        "tool_gradle_name": "gradle-4.10.2",
        "tool_gradle_type": "gradle",
        "tool_gradle_path": "",
        "tool_yq_name": "yq-4.20.2",
        "tool_yq_type": "com.cloudbees.jenkins.plugins.customtools.CustomTool",
        "tool_yq_path": "yq_linux_amd64",
        "jira_url": "https://jira.ru",
        "jira_field_ci": "customfield_18300"
      }
      

    По результатам автоматизированной установки SMDL будет настроен и готов к работе.

Также после установки можно дополнительно настроить интеграцию с платформенными зависимостями:

  1. HashiCorp Vault. Описание настройки интеграции отражено в «Руководство по системному администрированию» компонента DevOps инструменты Service Mesh (SMDL), раздел «Описание по интеграции c HashiCorp Vault».

  2. SynAI. Описание настройки интеграции отражено в «Руководство по системному администрированию» компонента DevOps инструменты Service Mesh (SMDL), раздел «Описание по интеграции c SynAI».