﻿# Установка Istio

> [HTML Version](install-istio.html)

Istio — является альтернативой Linkerd и представляет собой выделенный уровень инфраструктуры, называемый Service Mesh. Он помогает обрабатывать связь между сервисами, повторные запросы, тайм-ауты и автоматически шифровать соединения.

Установка компонента дополнений Istio обеспечивает балансировку gRPC-трафика при масштабировании сервисов ELMA365. Также он предоставляет телеметрию — коэффициент успешности, задержки и т. д.

Service Mesh является необходимым компонентом для включения поддержки масштабирования сервисов на стороне приложения ELMA365. Без установленного Service Mesh балансировка трафика при масштабировании микросервисов ELMA365 будет работать некорректно.

Установка состоит из пяти этапов:

1. [Изменение параметров ядра на рабочих узлах (опционально)](#change-parameters).

2. [Загрузка Helm-чарта и конфигурационного файла](#download-helm-chart-and-config-file).

3. [Заполнение конфигурационного файла](#fill-config-file).

4. [Установка чарта Istio с помощью Helm в Kubernetes-кластер.](#install-istio-chart)

5. [Включение Istio на namespace с приложением ELMA365](#switch-on-istio).

## Шаг 1. Изменение параметров ядра на рабочих узлах (опционально)

Перед установкой удостоверьтесь, что параметры операционной системы установлены корректно. Если параметры для увеличения лимитов **inotify** не заданы, добавьте их в конфигурационный файл \[OBJECT\]:

````
sudo nano /etc/sysctl.conf  
fs.inotify.max\_user\_instances = 1024  
fs.inotify.max\_user\_watches = 1048576

````
Обновите значение параметров следующей командой:

````
sysctl -p

## ````
Шаг 2. Загрузка Helm-чарта и конфигурационного файла

Для установки через интернет получите конфигурационный файл \[OBJECT\], выполнив команду:

````
helm repo add elma365 https://charts.elma365.tech  
helm repo update  
helm show values elma365/istio > values-istio.yaml

````
Получение конфигурационного файла для установки в закрытом контуре без доступа в интернет

1. На компьютере с доступом в интернет скачайте образы ELMA365 и загрузите их в локальный реестр образов:

````
helm repo add elma365 https://charts.elma365.tech  
helm repo update  
helm pull elma365/istio

````
Подробнее об этом читайте в статье [«Загрузка образов ELMA365»](downloadin-images-elma365.md).

2. Полученный архив чарта \[OBJECT\] скопируйте на сервер, где будет производиться установка.

3. Распакуйте этот чарт и скопируйте конфигурационный файл по умолчанию \[OBJECT\] в \[OBJECT\]:

````
tar -xf istio-X.Y.Z.tgz
````

## ````
Шаг 3. Заполнение конфигурационного файла

Заполните конфигурационный файл \[OBJECT\] для установки сервиса Istio.

Для параметра \[OBJECT\] укажите \[OBJECT\], в который устанавливается Istio. 

Чтобы обеспечить высокую доступность Istio: 

- включите автомасштабирование сервиса, задайте минимальное и максимальное количество реплик в параметрах \[OBJECT\] и \[OBJECT\];

- без автомасштабирования задайте количество реплик сервиса в параметре \[OBJECT\].

````
\# Настройки Istio  
global:  
  # namespace для Istio (перед установкой его необходимо создать kubectl create ns istio-system)  
  istioNamespace: istio-system  
...  
istiod:  
  pilot:  
    # автомасштабирование сервиса  
    autoscaleEnabled: true  
    # минимальное и максимальное количество реплик  
    autoscaleMin: 1  
    autoscaleMax: 5  
    # количество реплик сервиса без автомасштабирования  
    replicaCount: 1  
...

````
Заполнение параметров подключения к приватному registry для установки в закрытом контуре без доступа в интернет

  
Для подключения к приватному **registry** нужно:

1. Скачать образы ELMA365 и загрузить их в локальный реестр образов. Подробнее об этом читайте в статье [«Загрузка образов ELMA365»](downloadin-images-elma365.md).

2. Задать адрес и путь для параметра \[OBJECT\].

3. Указать наименование секрета с правами доступа к приватному **registry** в параметре** **\[OBJECT\]. Секрет должен быть создан вручную и зашифрован в Base64.

````
\# Настройки Istio  
global:  
...  
  # параметры подключения к приватному registry  
  # адрес и путь для приватного registry  
  hub: registry.example.com/istio  
  tag: 1.19.0  
  # секрет с правами доступа к приватному registry должен быть создан вручную, зашифрованный в Base64  
  imagePullSecrets:  
    - myRegistryKeySecretName  
...

````
где формат **repository**:

- адрес — \[OBJECT\];

- путь — \[OBJECT\].

## Шаг 4. Установка чарта Istio с помощью Helm в Kubernetes-кластер

Выполните установку чарта Istio в \[OBJECT\]. \[OBJECT\] будет создан во время установки, если не был создан ранее.

Для установки через интернет:

````
helm upgrade --install istio elma365/istio -f values-istio.yaml -n istio-system --create-namespace

````
Для офлайн-установки без доступа в интернет перейдите в каталог с загруженным чартом и выполните команду:

````
helm upgrade --install istio ./istio -f values-istio.yaml -n istio-system --create-namespace

## ````
Шаг 5. Включение Istio на namespace с приложением ELMA365

В описанном примере приложение ELMA365 установлено в \[OBJECT\].

````
Начало внимание

````
Одновременная работа нескольких Service Mesh не допускается.

````
Конец внимание

````
**Важно**: перед включением Istio проверьте и отключите другие Service Mesh в namespace, где установлено приложение ELMA365. 

Для отключения Linkerd удалите аннотацию на \[OBJECT\] с приложением ELMA365:

````
kubectl annotate namespace elma365 linkerd.io/inject-

````
Добавьте лейбл на \[OBJECT\] с приложением ELMA365 для автоматической инъекции контейнеров Istio-proxy в сервисы ELMA365 командой:

````
kubectl label namespace elma365 istio-injection=enabled --overwrite

````
Перезапустите все сервисы приложения ELMA365 командой:

````
kubectl rollout restart deploy \[-n namespace\] \&\& kubectl rollout restart ds \[-n namespace\]

## ````
Удалить чарт Istio с помощью Helm в Kubernetes-кластере

````
Начало внимание

````
Перед удалением компонента дополнений Istio отключите автомасштабирование на стороне приложения ELMA365.

````
Конец внимание

````
Чтобы удалить чарт Istio в \[OBJECT\], выполните команду:

````
helm uninstall istio -n istio-system
````