Деплой компонентов Istio#

Компонент Istio, поставляемый в составе дистрибутива, включает граничные прокси для обработки:

  • входящего трафика (IngressGateway)

  • исходящего трафика (EgressGateway)

После развертывания в соответствующем namespace, для каждого из граничных прокси, будут созданы:

  • Deployment

  • Service

  • configMap с общей конфигурацией для обоих компонентов.

Развертывание компонента Istio возможно двумя способами:

  1. С помощью Platform V DevOps Tools

  2. Вручную с помощью Helm Chart

Конфигурация#

Компонент Istio имеет собственный набор переменных: helm/application/istio/values.yaml

В конфигурации необходимо указать два HTTP-порта:

  • egress_http_port — используется для внутреннего трафика внутри Mesh (запросы от приложения к EgressGateway)

  • ingress_https_port — используется для внешнего HTTPS-трафика, поступающего извне namespace.

Образец заполнения:

deployment:
  # Порты прослушиваемые граничным прокси, заносятся в deployment и в service
  ports:
    # HTTP порт для работы по внутренней сети меша, с прикладом
    egress_http_port: 11080
    # HTTPS порт для приема входящих запросов
    ingress_https_port: 11443

Подключение секретов в под граничного прокси#

Перед деплоем граничного прокси (ГП), необходимо сконфигурировать систему хранения секретов и описать перечень сертификатов (в переменных values.yaml), которые затем будут использоваться для шифрования трафика.

Общая информация о подключении секретов описана в соответствующем разделе.

В случае использования Hashicorp Vault имя каждого сертификата (ключа в KV секрете) нужно перечислить в списке, переменная secrets.secman.list_keys_certs. Если же используется манифест k8s, то монтируется все его содержимое, перечислять каждый ключ не нужно.

Образец заполнения блока с получением секретов из Hashicorp Vault, где явно прописаны названия ключей с сертификатами, которые необходимо скачать в под ГП:

secrets:
  secman:
    list_keys_certs:
      - "cert1.crt"
      - "cert2.crt"
      - "cert3.crt"

В системе хранения, указанный секрет содержит соответствующие поля:

data:
  cert1.crt: <Base64-содержимое сертификата>
  cert2.crt: <Base64-содержимое сертификата>
  cert3.crt: <Base64-содержимое сертификата>

Развертывание#

Перед деплоем необходимо заполнить переменные (helm/application/istio/values.yaml):

Обратите внимание на состав переменных !!!
Из-за того что в Helm Chart компоненты не имеют доступа к переменным других компонентов, некоторые данные приходится дублировать.

Например номера портов, используемых в конфигурировании маршрутов к внешним сервисам, в компоненте Istio их необходимо тоже прописать.

egress_route:
  # Порт ("внутренний") для маршрутов к Kafka-logger (журналирование fluent-bit)
  logger_internal_port:

Затем запустите процесс деплоя компонента Istio

При использовании Platform V DevOps Tools для Helm Chart отсутствует отдельный параметр для деплоя компонентов Istio, поэтому установка произойдет вместе с основным приложением

Если вы не используете Platform V DevOps Tools то запустите обычную установку компонента helm/application/istio командой helm install

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