Руководство по установке#

В руководстве приведены инструкции по установке компонента Synapse Ansible Provider (SYAP).

Термины и определения#

Термин/аббревиатура

Определение

Платформа

Платформа оркестрации приложений со средствами автоматизации и управления на основе политик, например, Kubernetes

Kubernetes

Платформа оркестрации приложений со средствами автоматизации и управления на основе политик

Deployment / kind: Deployment

Набор инструкций для запуска приложения в Kubernetes

Под / kind: Pod

Набор контейнеров внутри узла кластера Kubernetes

Ansible

Инструмент автоматизации подготовки и конфигурирования инфраструктуры

CRD / kind: CustomResourcesDefinitions

Общее описание конфигурации, которое будет храниться в рамках кластера

Пользовательские конфигурации

Конфигурации (CRD), которые реализуются в namespace командами, в формате .yaml (подробное описание будет приведено в разделе «Подключение и конфигурирование» и «Использование программного компонента»)

SYAP

Программный компонент Synapse Ansible Provider (код SYAP)

SYOP

Программный компонент Synapse Operator (SYOP)

SSM

Platform V Synapse Service Mesh — Программный продукт на базе Istio SE, обеспечивающий возможность создания сервисной сети поверх платформенной в Kubernetes

URL

Uniform Resource Locator — стандартизированный способ записи адреса ресурса в сети Интернет

Host

Сервер, на котором будет выполняться задача, описанная в AnsibleRun

Ansible Host

Под, в котором происходит запуск Ansible

Ansible Playbook

Набор инструкций для настройки инфраструктуры

Ansible Collection

Набор сгруппированных инструкций для настройки инфраструктуры

Inventory

Набор сгруппированной информации о Host, на которых будет выполняться Ansible Playbook

CLI

Command line interface — интерфейс командной строки, где выполняются команды с использованием терминала

Сервисный прокси / SVPX / istio-proxy

Компонент Сервисный прокси продукта «Platform V Synapse Service Mesh»

Граничный прокси / IGEG / ingressgateway / egressgateway

Компонент Граничный прокси продукта «Platform V Synapse Service Mesh»

Системные требования#

Для выполнения установки программного компонента (SYAP) должны быть выполнены следующие условия:

  1. Развернут и настроен кластер Kubernetes версии 1.19 или выше в соответствии с требованиями, предъявляемыми к Платформе;

  2. В кластере создан проект («Namespace»), в котором установлена контрольная панель (POLM);

  3. Кластер Kubernetes использует etcd в качестве основного хранилища всех данных, установка, обновление и откат данной базы данных предоставляет сама платформа Kubernetes;

  4. Подключен и настроен компонент SMDL (в случае автоматизированной установки);

  5. В проекте создана учетная запись с правами на загрузку артефактов;

  6. В проекте имеются свободные ресурсы по limits и requests не менее, чем зарезервировано в конфигурационных артефактах;

  7. В проект добавлен секрет для загрузки Docker-образов из целевого Docker-репозитория;

  8. В кластере создан проект (namespace), где будут реализован компонент SYAP;

  9. В рамках реализованного проекта созданы необходимые роли (kind:Role/kind: ClusterRole) и привязки к ролям (kind: RoleBinding/kind: ClusterRoleBinding), в рамках ролевой модели компонента SYAP;

  10. В рамках кластера реализованы необходимые ресурсы kind: CustomResourceDefinitions;

  11. Для установки через консоль на рабочем месте должен быть установлен клиент Kubectl (CLI - command-line interface).

Для установки модуля компонента SYAP в среде контейнеризации Kubernetes – рекомендуется устанавливать приложения в рамках одного Pod. Приложения компонента не требуют дополнительной настройки окружения. Все настройки идут на уровне кластера в рамках среды контейнеризации.

Для возможности ручной установки, убедиться, что в рамках персонального компьютера установлен Helm версии не ниже 3.0.

Настройки безопасности окружения и перечень платформенных (дополнительных внешних) продуктов, используемых для установки, настройки и контроля в конечной информационной системе (далее — ИС), выбираются клиентом при разработке конечной ИС, исходя из характера обрабатываемой в ней информации и иных требований информационной безопасности (далее — ИБ), предъявляемых к ней. Рекомендуемые настройки безопасности окружения приведены в разделе «Подготовка окружения» данного документа.

Системное программное обеспечение#

Ниже представлены категории системного программного обеспечения (далее — ПО), которые обязательны или опциональны для установки, настройки, контроля и функционирования компонента. В каждой категории перечислены все поддерживаемые продукты сторонних правообладателей. Отдельно обозначены варианты, которые рекомендует АО «СберТех» (маркировка «Рекомендовано» в столбце «Продукт, функциональная совместимость с которым подтверждена»). Клиенту необходимо выбрать один из продуктов в каждой категории, исходя из условий использования конечной ИС.

Категория ПО

Обязательность установки (да/нет)*

Наименование ПО

Версия

Продукт, функциональная совместимость с которым подтверждена**

Описание

Операционная система

Да

Debian

12

Рекомендовано

ОС контейнеров для запуска модулей компонента

Среда контейнеризации

Да

Kubernetes

1.19 и выше

Рекомендовано. Правообладателем АО «СберТех» также рекомендована среда контейнеризации – Platform V DropApp, см. раздел «Платформенные зависимости»

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

Нет

Red Hat OpenShift

4.6 и выше

Опционально

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

Средство контейнеризации

Да

Docker CE

19.03.14 и выше

Рекомендовано

Инструмент для автоматизации работы с контейнерами

Сервис централизованного хранения репозиториев артефактов (хранилище артефактов)

Да

Nexus-Public

3.42.0

Рекомендовано

Интегрированная платформа для проксирования, хранения и управления зависимостями Java (Maven), образами, а также распространения ПО

Нет

Nexus Repository Manager PRO

3.43.0

Опционально

Нет

Nexus Repository Manager OSS

3.43.0

Опционально

Сервис централизованного хранения репозиториев исходного кода

Да

GitLab CE

15.7 и выше

Рекомендовано

Нет

Bitbucket

7.6.7

Опционально

Сервис интеграции и оркестрации микросервисов в облаке

Нет

Istio

1.6 и выше

Опционально. Правообладателем АО «СберТех» также рекомендован сервис интеграции и оркестрации микросервисов в облаке, основанный на Istio – Platform V Synapse Service Mesh, см. раздел «Платформенные зависимости»

Менеджер пакетов

Нет

Helm

3.8 и выше

Опционально

Инструмент для автоматической установки и настройки программного компонента на кластер

Иное

Да

Golang

1.22.5 и выше

Рекомендовано

Окружение для работы модулей компонента

Иное

Нет

kubectl CLI

1.20.5 и выше

Опционально

Интерфейс командной строки для взаимодействия с кластером

Примечание:

*

  • Да — категория ПО обязательна для функционирования сервиса (это означает, что сервис не может выполнять свои основные функции без установки данной категории ПО)

  • Нет — категория ПО необязательна для функционирования сервиса (это означает, что сервис может выполнять свои основные функции без установки данной категории ПО)

**

  • Рекомендовано — рекомендованный правообладателем АО «СберТех» продукт

  • Опционально — альтернативный по отношению к рекомендованному правообладателем АО «СберТех» продукт

Платформенные зависимости#

Для настройки, контроля и функционирования компонента реализована интеграция с программными продуктами, правообладателем которых является АО «СберТех»:

Для настройки, контроля и функционирования компонента реализована интеграция с программными продуктами, правообладателем которых является АО «СберТех»:

Наименование продукта

Код

Версия продукта

Код и наименование компонента

Обязательность установки (да/нет)***

Описание

Аналог других производителей****

Platform V SberLinux OS Server

SLO

8.8

INST Операционная система

Нет

ОС контейнеров для запуска модулей компонента

ОС Альт 8 СП

Platform V DropApp

K8S

1.3 и выше

K8SC K8S Core

Нет

Дистрибутив Kubernetes со встроенными механизмами мультитенантности и бессерверным исполнением

Kubernetes, Red Hat OpenShift Container Platform

Platform V Synapse Service Mesh

SSM

4.1 и выше

POLM Управление политиками

Нет

Панель управления с открытым исходным кодом, служащая для взаимодействия, мониторинга и обеспечения безопасности контейнеров в среде контейнеризации Kubernetes

Istio control plane 1.12

IGEG Граничный прокси

Нет

Сервис для обеспечения управляемого вызова интеграционных сервисов прикладной части

Istio proxy 1.12

SVPX Сервисный прокси

Нет

Сервисный прокси используется для маршрутизации и обеспечения безопасности трафика между приложениями

SMDL DevOps инструменты Service Mesh

Нет

Компонент для развития Jenkins заданий используемых для установки компонент Service Mesh, а так же их «эксплуатации» администраторами. Представляет из себя DevOps библиотеку для Jenkins на архитектуре MPL (Modular Pipeline Library). Она имеет четкую модульную структуру, многоуровневую вложенность, систему конфигурации конвейера, улучшенную обработку ошибок и многие другие полезные функции. Все это позволяет командам разработки и администраторам гибко настраивать DevOpsLib под свои нужды. В рамках DevOpsLib предоставляются помимо инструментов сборк/установки, инструменты упрощающее администрирование: создание/восстановление бэкапа, сбор логов, валидация дистрибутивов, вывод проекта из под нагрузки и другие.

Platform V Synapse App Mesh

#AM

1.0.0 и выше

SYOP Synapse Operator

Нет

Компонент для установки компонентов в составе #AM

***

  • Да — компонент или продукт необходим для функционирования сервиса (это означает, что сервис не может выполнять свои основные функции без установки данного компонента)

  • Нет — необязательный для функционирования сервиса компонент или продукт (это означает, что сервис может выполнять свои основные функции без установки данного компонента)

**** Рекомендуется установка программного продукта, правообладателем которого является АО «СберТех», при этом не исключена возможность (допускается правообладателем) использования аналога других производителей. Аналоги, в отношении которых продукт успешно прошел испытания и подтвердил свою работоспособность, указаны в разделе «Системное программное обеспечение».

Аппаратные требования#

Для установки компонента требуется следующая конфигурация аппаратного обеспечения:

Название модуля

ПО среды функционирования

Количество

Список контейнеров

CPU Request

Memory Request

CPU Limit

Memory Limit

Горизонтальное масштабирование

provider-ansible

Kubernetes/Platform V DropApp (опционально OpenShift NS)

1 под

package-runtime

300m

300Mi

500m

500Mi

Нет

service-proxy

300m

300Mi

500m

500Mi

Нет

Состав дистрибутива#

В рамках компонента SYAP предоставляется два архива.

Наименование артефакта в рамках поставки syap-bin-*.

Элемент дистрибутива

Описание

./docker/provider-controller/DockerFile

dockerFile для сборки образа приложения Ansible provider

./package/bh/provider

binary для запуска Ansible Playbook, для настройки инфраструктуры

./wheels/*

зависимости для работы приложения Ansible provider

./rpm/*

зависимости для работы приложения Ansible provider

Наименование артефакта в рамках поставки syap-cfg-*.

Элемент дистрибутива

Описание

./conf/helm/application/syap

Базовые конфигурации по установке компонента SYAP

./conf/helm/application/syap-base

Конфигурации kind: CRD для работы компонента SYAP

./conf/helm/application/providerconfig-secret

Instance kind: ProviderConfig для работы SYAP с kind: Secret

Выбор способа установки#

  • Автоматизированная (целевая) установка компонента с использованием Jenkins Job из дистрибутива компонента SMDL, SynapseInstaller (более подробно о настройке и запуске можно ознакомиться в документации компонента SMDL, «Руководство оператора»);

  • Ручная (опционально) установка компонента с использованием менеджера пакетов HELM.

Подготовка окружения#

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

Пререквизиты:

  • Базовый образ для сборки Docker image загружен в Docker Registry.

Если базовый образ был предоставлен в виде архива, то загрузить его в ваш реестр образов можно следующими командами:

  1. Загрузка образа из архива в локальный реестр образов:

    docker load -i <архив_с_образом>
    
  2. Если требуется изменить tag загруженного из архива образа:

    docker tag <старый_tag> <новый_tag>
    
  3. Загрузка образа в реестр образов:

    docker push <tag>
    

В рамках предоставляемого дистрибутива реализованы все необходимые ресурсы для успешного функционирования компонента SYAP, кроме административных ресурсов кластера описанных в данном разделе.

  1. Ресурсы в рамках ролевой модели (kind: Role/kind: ClusterRole/kind: RoleBinding/kind: ClusterRoleBinding/kind: ServiceAccount)

  2. Ресурсы в рамках используемых конфигураций (kind: CustomResourceDefinitions)

Установку ресурсов выполнить через CLI Kubectl

Шаг

Действия

Описание

Выполнить вход в Kubernetes

Загрузите kubeconfig от вашего ServiceAccount. Заведите переменную KUBECONFIG=~/.kube/config где располагается выгруженная конфигурация

Перейти в Namespace (проект), где будет установлен компонент SYAP

В консоли выполните команду:
kubectl config set-context --current --namespace=<имя namespace>

Добавить необходимый перечень ресурсов

В консоли выполнить, команды которые описаны в данном разделе ниже

Перед запуском заполните параметры, где будет установлен компонент SYAP, следующей командой:

SYAP_NAMESPACE=<имя namespace>

Установка CRD

Конфигурации присутствуют в рамках дистрибутива с конфигурациями развертывания (syap-cfg - ./conf/helm/application/syap-base).

Установка ClusterRole

Команда:

kubectl apply -n $SYAP_NAMESPACE -f - <<EOF

kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: provider-ansible
rules:
  - verbs:
      - get
      - list
      - watch
      - update
      - patch
    apiGroups:
      - ansible.crossplane.io
    resources:
      - ansibleruns
      - providerconfigs
      - providerconfigusages
  - verbs:
      - update
    apiGroups:
      - ansible.crossplane.io
    resources:
      - ansibleruns/finalizers
      - ansibleruns/status
      - providerconfigs/finalizers
      - providerconfigs/status
  - verbs:
      - create
      - delete
    apiGroups:
      - ansible.crossplane.io
    resources:
      - providerconfigusages
  - verbs:
      - watch
      - list
      - get
      - update
      - patch
      - create
    apiGroups:
      - ''
    resources:
      - secrets
  - verbs:
      - list
      - get
      - update
      - create
      - delete
    apiGroups:
      - ''
    resources:
      - services
  - verbs:
      - create
      - patch
    apiGroups:
      - ''
    resources:
      - events
  - verbs:
      - list
      - get
      - update
      - create
      - delete
    apiGroups:
      - networking.istio.io
    resources:
      - virtualservices
      - destinationrules
      - serviceentries
      - gateways

Установка ClusterRoleBinding

Команда:

kubectl apply -n $SYAP_NAMESPACE -f - <<EOF

kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: provider-ansible
subjects:
  - kind: ServiceAccount
    name: {{ .Values.serviceaccountname }}
    namespace: {{ .Release.Namespace }}
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: {{ .Values.clusterrolename}}

EOF

Ручная подготовка окружения#

Шаг

Действия

Описание

Создать директорию для установки

На компьютере, с которого будет производиться установка, создайте каталог, например, syap

Разархивировать файлы

Распакуйте в созданный каталог архив с бинарными артефактами компонента SYAP

Авторизуйтесь в Docker Registry

Выполните команду, находясь в корне распакованного архива: docker login $registry

$registry — это host Docker реестра. Необходимо будет ввести логин с паролем для авторизации

Соберите Docker образ для установи приложения

Выполните команду, находясь в корне распакованного архива: docker build . -f docker/provider-controller/Dockerfile --build-arg BASE_IMAGE=$base_image_url -t $registry_tag:$version

$registry_tag — полный путь где будет реализован образ, $version — версия образа, $base_image_url - ссылка на базовый образ. Пример заполненной команды: docker build . -f docker/syop/Dockerfile --build-arg BASE_IMAGE=registry.ru/image_project/base_image:1.2.1 -t registry/dev/syap:0.0.1

Загрузите полученный Docker образ в Registry

Выполните команду, находясь в корне распакованного архива: docker push $registry_tag:$version

Сохраните полученный sha256 образа

При выполнении шага «Загрузите полученный Docker образ в Registry» в терминале будет информация о sha256 загруженного образа, пример вывода терминала $version: digest: sha256:97ded057*** size: 2215. Необходимо скопировать sha256 (пример «sha256:97ded057***»)

Сохраните указанное значение в переменную $sha256

Автоматизированная подготовка окружения#

Для сборки образа рекомендуем использовать инструмент автоматической сборки образа, компонента SMDL, ClientUnpacker (более подробно о настройке и запуске можно ознакомиться в документации компонента SMDL, «Руководство оператора»), результатом исполнения будет собранный образ приложений.

Для компонента SYAP необходимо провести дополнительные шаги для корректного формирования конфигураций по установке.

При первом запуске Jenkins Job ClientUnpacker необходимо проверить файл JSON teamProducts.json (указанный файл формируется при установке SMDL, полный путь к файлу ${имя репозитория}/resources/custom/additionalFiles/teamProducts.json):

{
  "name": "Synapse Ansible Provider",
  "code": "SYAP",
  "parts": [
    {
      "docker": [
        {
          "baseImageLink": "base_image",
          "version": "$VERSION",
          "deploymentUnit": "provider-controller"
        }
      ],
      "artifactId": "syap-bin"
    },
    {
      "artifactId": "syap-cfg",
      "imageLinkMapping": [
        {
          "regex": "\\{\\{ \\.Values\\.registry \\}\\}\\{\\{ \\.Values\\.registry_path \\}\\}provider-controller@sha256:(?<hash>\\w+)"
        }
      ]
    }
  ],
  "to": {
    "ci": "ci"
  }
}

Запустить инструмент автоматической сборки продукта SSM, компонента SMDL, ClientUnpacker (более подробно о настройке и запуске можно ознакомиться в документации компонента SMDL, «Руководство оператора»), результатом исполнения будет собранные артефакты для установки приложения (на email сотрудника, кто запустил Jenkins Job, придет таблица со ссылками на артефакты);

Провести проверку корректной подстановки образов в конфигурации. Для этого необходимо загрузить артефакты, которые относятся к компоненту SYAP по ссылкам из таблицы.

### в рамках приложения Ansible provider располагаются общие конфигурации по установке
### путь к конфигурационному файлу «./conf/helm/application/syap/templates/deployment.yaml» (артефакт «syap-cfg-*»)
### провески поиск по ключу «image» 

      - image: your.registry/*/provider-controller@sha256:******                                          # пример корректной подстановки образа для компонента ansible provider

При возникновении сложностей с подстановкой образа, допускается произвести ручное добавление корректных образов приложения, которые формируются после запуска Jenkins Job ClientUnpacker.

Установка#

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

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

  1. Загрузить артефакт компонента SYAP с конфигурациями для установки (syap-cfg-*);

  2. При необходимости провести корректировку конфигураций, располагаемых в каталоге ./conf/helm/application/syap/templates/* (например провести подстановку image приложения);

  3. Перейти в рамках терминала в каталог ./conf/helm/;

  4. Провести авторизацию через терминал в кластер, где планируется установка компонента SYAP (пример для Openshift oc login --token=$ТОКЕН --server=$АДРЕС_КЛАСТЕРА);

  5. Пройти в Namespace (проект), где планируется установка компонента SYAP (пример для Openshift oc project provider-ansible);

  6. Провести заполнение файла ./conf/helm/application/syap/values.yaml (описание параметров указана в указанном документе, раздел «Автоматическая установка сервиса»);

  7. Провести установку Helm Chart syap-base - helm install syap-base;

  8. Провести установку компонента SYAP - helm install syap --values values.yaml.

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

SYOP#

Для установки SYAP необходимо ознакомиться с соответствующей инструкцией в документации SYOP (документ «Руководство по системному администрированию», раздел «Руководство по установке компонента SYAP»)

SMDL#

Достаточно использовать конфигурации развертывания из дистрибутива приложения syap-cfg-*.

Заполнить стендозависимые параметры для установки компонента SYAP, пример:

### Необходимо реализовать файл values.yaml
### Расположение файла в рамках git ветки job SynapseInstaller (более подробно о настройке и запуске можно ознакомиться в документации компонента SMDL, «Руководство оператора»)
### Для компонента SYAP - synapse-config-dev-gen/${{имя кластера для установки/имя проекта для установки}} или {имя проекта для установки}}/package/conf/helm/application/syap/values.yaml

values.yaml

clusterrolename: provider-ansible # наименование kind:ClusterRole
clusterrolebinding: provider-ansible # наименование kind:ClusterRoleBinding
serviceaccountname: provider-ansible-service-account # наименование kind:ServiceAccount
registryHost: host # ссылка на Host registry
registry_path: pathToImage # путь до образа
seccompProfile: false # флаг установки параметра seccompProfile в секции securityContext у «kind: Deployment» (указанный параметр поддерживается в Kubernetes версии 1.25 и выше)
pullsecretname: default # наименование **kind: Secret** для pull образов
projectedKubeAPI: false  # флаг монтирования токена для работы с KubeAPI, если стоит значение false, то токен будет примонитирован автоматически, если true то токен будет примонтирован в рамках Deployment
affinity: true # флаг установки podAntiAffinity с конкретизацией метки (label) при установке на Node
enabledPriorityClassName: false # флаг установки параметра PriorityClassName в рамках «kind: Deployment»
priorityClassName: system-cluster-critical # значение параметра PriorityClassName в рамках «kind: Deployment» 
package: # блок настроек для контейнейров
   controller:
      replicas: 1 # количество реплик
      probes:
         liveness: # параметры livenessProbe контейнера SYAP
            initialDelaySeconds: 5
            timeoutSeconds: 5
            periodSeconds: 10
            successThreshold: 1
            failureThreshold: 3
         readiness: # параметры readinessProbe контейнера SYAP
            initialDelaySeconds: 5
            timeoutSeconds: 1
            periodSeconds: 30
            successThreshold: 1
            failureThreshold: 3
      resources:
         limits:
            cpu: 300m # ресурсы limits/cpu приложения SYAP
            memory: 300Mi # ресурсы limits/memory приложения SYAP
         requests:
            cpu: 200m # ресурсы requests/cpu приложения SYAP
            memory: 200Mi # ресурсы requests/memory приложения SYAP
      strategy:
         rollingParams:
            maxSurge: 25%                               # установка параметра maxSurge в рамках «kind: Deployment»
            maxUnavailable: 25%                          # установка параметра maxUnavailable в рамках «kind: Deployment»
   svpx:
      resources:
        limits:
          cpu: 300m                                    # ресурсы limits/cpu приложения SVPX в Pod компонента SYAP
          memory: 300Mi                                # ресурсы limits/memory приложения SVPX в Pod компонента SYAP
        requests:
          cpu: 300m                                    # ресурсы requests/cpu приложения SVPX в Pod компонента SYAP
          memory: 300Mi                                # ресурсы requests/memory приложения SVPX в Pod компонента SYAP
   egress:
      replicas: 1 # количество реплик IGEG (egressgateway)
      certs: # монтируемые сертификаты
         - name: syap-egress # имя монтируемого volume
           secretName: syap-egress # наименование секрета
           mountPath: sberworks-ca.crt # наименование поля в секрете и наименование файла, в которое сохранить содержимое
      probes:
         readiness: # параметры readinessProbe контейнера IGEG (egressgateway)
          failureThreshold: 30
          initialDelaySeconds: 5
          periodSeconds: 5
          successThreshold: 1
          timeoutSeconds: 1
      resources:
         limits:
            cpu: 300m                                    # ресурсы limits/cpu приложения IGEG (egressgateway)
            memory: 500Mi                                # ресурсы limits/memory приложения IGEG (egressgateway)
         requests:
            cpu: 300m                                    # ресурсы requests/cpu приложения IGEG (egressgateway)
            memory: 500Mi                                # ресурсы requests/memory приложения IGEG (egressgateway)
ansible_dir_limit: 500Mi # размер для директории /ansibleDir
ansibledir_dir_limit: 500Mi # размер для директории /.ansible
syap_config:
   debug: false # флаг включения режима логирования уровня 'debug' при старте приложения
   syncTime: 1h # интервал полной обработки всех crd SYAP
   ansibleProcessTimeout: 20m # время отводимое под Ansible процесс. При его истечении срабатывает sigterm
   istioCreateTimeout: 40 # количество секунд ожидания получения доступа к внешнему серверу после создания Istio конфигураций
   leaderElection: false # параметр leaderElection syap controller
   maxReconcileRate: 1 # параметр максимального количества потоков обработки конфигураций syap
   artifactsHistoryLimit: 10 # параметр количества хранимых артефактов после работы ansible
   metricsAddress: ':8080' # параметр порта для метрик
   apiVersionIstio: 'networking.istio.io/v1beta1' # apiVersion конфигураций Istio
   pollInterval: 1m # время между опросами индивидуального ресурса SYAP
igeg:
   enable: true # включение интеграции syap с Istio/POLM
   kubeEgressRouting: TLS  # реализация конфигураций Istio (TLS перехват трафика в рамках tls, TCP перехват трафика по tcp)
   kubeAPIIP: '*.*.*.*'    # IP-адрес сервиса KubeAPI (kubernetes.default.svc.cluster.local)    
   kubePort: 443           # Port сервиса KubeAPI (kubernetes.default.svc.cluster.local), параметр указывается при установке в Kubernetes кластер (k8s: true)
   kubeAPIResolution: STATIC      # resolution в рамках реализации конфигурации «kind: ServiceEntry» по host Kube API server
   istioControlPlane: sb-controlplane   # наименование namespace контрольной панели, к которой подключен namespace компонента SYAP
   serviceIstiod: istiod-basic    # наименование сервиса контрольной панели, компонента «istiod»
   image:   # ссылка на актуальный образ приложения IGEG
   add_credential_mount: false
k8s: true # Флаг, указывающий устанавливается ли SYAP в систему оркестрации k8s
hash: sha256:bd3244ea531185a7f64a1be6bdc5a917998c2d7eceecf313f9d946368b110865 # sha256 образа приложения SYAP

Запустить Jenkins Job, компонент SMDL, SynapseInstaller (более подробно о настройке и запуске можно ознакомиться в документации компонента SMDL, «Руководство оператора»)

Обновление#

Перед обновлением компоненты SYAP не требуется делать бэкап etcd. Конфигурации kind: AnsibleRun/kind: ProviderConfig останутся в кластере.

Для обновления SYAP в проекте требуется:

  1. Загрузить артефакт компонента SYAP с конфигурациями для установки (syap-cfg-*);

  2. При необходимости провести корректировку конфигураций, располагаемых в каталоге ./conf/helm/application/syap/templates/* (например провести подстановку image приложения);

  3. Перейти в рамках терминала в каталог ./conf/helm/application;

  4. Провести авторизацию через терминал в кластер, где планируется установка компонента SYAP (пример для Openshift oc login --token=$ТОКЕН --server=$АДРЕС_КЛАСТЕРА);

  5. Пройти в Namespace (проект), где планируется установка компонента SYAP (пример для Openshift oc project provider-ansible);

  6. Провести заполнение файла ./conf/helm/application/syap/values.yaml (описание параметров указана в указанном документе, раздел «Автоматическая установка сервиса»);

  7. Провести обновление syap-base посредством команды обновление Helm Chart helm upgrade syap-base --values values.yaml.

  8. Провести обновление SYAP посредством команды обновления Helm Chart helm upgrade syap --values values.yaml.

Удаление#

Подключиться к проекту#

  • Через CLI Kubectl

Шаг

Действия

Описание

Вход в Kubernetes

Загрузите kubeconfig от вашего ServiceAccount. Заведите переменную KUBECONFIG=~/.kube/config где располагается выгруженная конфигурация

Переход в нужный Namespace (проект)

Введите команду:
kubectl config set-context --current --namespace=<имя вашего проекта>

Остановить компонент#

  • Через CLI Kubectl

Шаг

Действия

Описание

Остановка приложения

В консоли выполнить команду:
kubectl scale --replicas=0 deployment/<имя деплоймента>

Удалить артефакты действующей версии#

  • Через CLI Kubectl

Шаг

Действия

Описание

Удалить Deployment

В консоли выполнить команду:
kubectl delete deployment/<имя деплоймента>

Удалить все зависимые ресурсы из раздела «Подготовка окружения»

В консоли выполнить команду для каждого ресурса:
kubectl delete <тип ресурса>/<имя ресурса>

Проверка работоспособности#

SYAP#

Шаг

Действия

Описание

Получение имени пода

В консоли выполнить команду kubectl get pod

Выбрать наименование Pod с наименованием «provider-ansible-****», указанное наименование пригодится на следующем шаге (<имя Pod>)

Проверить работоспособность

В консоли выполнить команду:
kubectl port-forward pod/<имя Pod> 9091:9091
Запустить еще одно окно консоли, в нем выполнить команду:
curl localhost:9091/readyz
Команда должна вывести строку «OK».
Завершить переадресацию портов нажатием Ctrl+C

Также проверить отсутствие ошибок в рамках логов приложения (документ «Руководство по системному администрированию», раздел «Выгрузка системных логов»).

Проверка работоспособности всех интеграций производится на стороне приложений, с которыми приложения SYAP взаимодействуют, подробнее описание можно найти в документации таких приложений (IGEG, SVPX, DropAPP, POLM).

При установке SYAP посредством компонентов SMDL, SYOP фактом, подтверждающим работоспособность данных компонентов, будет являться успешная установка всех необходимых пользователю приложений в рамках SYAP.

Откат#

Перед откатом компоненты SYAP на предыдущую версию не требуется делать бэкап etcd. Конфигурации kind: AnsibleRun/kind: ProviderConfig останутся в кластере.

Остановить компонент#

  • Через CLI Kubectl

Шаг

Действия

Описание

Остановка приложения

В консоли выполнить команду:
kubectl scale --replicas=0 deployment/<имя деплоймента>

Удалить артефакты действующей версии#

  • Через CLI Kubectl

Шаг

Действия

Описание

Сохранение Deployment

В консоли выполнить команду:
kubectl get -o yaml deployment/<имя деплоймента> > <путь к файлу>.yaml

Удаление Deployment

В консоли выполнить команду:
kubectl delete deployment <имя деплоймента>

Загрузить сохраненные артефакты#

  • Через CLI Kubectl

Шаг

Действия

Описание

Загрузить конфигурации в рамках компонента

В консоли выполнить команду:
kubectl apply -f ${FILE_NAME}.yml

Переменная $FILE_NAME в рамках добавления необходимых конфигураций компонента (kind: Deployment)

Запустить восстановленную версию компонента#

  • Через CLI Kubectl

Шаг

Действия

Описание

Запустить восстановленную версию компонента

В консоли выполнить команду:
kubectl scale --replicas=${N} deployment/<имя деплоймента>

$N — необходимое количество kind: Pod, рекомендованное значение 1

Часто встречающиеся проблемы и пути их устранения#

Проблема

Причина

Решение

Ошибка при подключении к проекту

Пользователю не предоставлен доступ в проект.
Нет физического доступа к кластеру

Запросить доступ к проекту у администратора кластера

Ошибка при загрузке артефактов

У пользователя, под которым производится загрузка, отсутствуют необходимые права

Запросить доступ к проекту у администратора кластера

Ошибка при Pull docker-образа из репозитория

Отсутствуют права на Pull образа из репозитория.
Недоступен репозиторий.
Неверная ссылка на image в Deployment

Запросить права у администратора Registry.
Проверить ссылку, при необходимости скорректировать Deployment

Чек-лист валидации установки#

Проверка

Действия

Результат

Все артефакты загружены в проект

По списку артефактов найти их в Namespace (проект) Kubernetes

Все поды запущены

Найти Deployment, перейти на вкладку Pods, проверить, что статус всех подов — Running

Отсутствие ошибок в логах контейнеров

Для пода SYAP проверить на вкладке Logs, что в логах контейнеров пода отсутствуют ошибки