Установка шлюза с помощью внедрения шлюза
В этой процедуре объясняется, как установить шлюз с помощью внедрения шлюза.
Следующая процедура применима как к развертываниям ingress, так и egress шлюзов.
Предварительные требования
- Установлен оператор Alauda Service Mesh v2.
- Развернута управляющая плоскость Istio.
- Подтвердите совместимость с ядром Linux.
- Подтвердите требования к Namespace.
Процедура
-
Создайте namespace для шлюза:
NOTEУстанавливайте шлюз и управляющую плоскость Istio в разных пространствах имён.
Вы можете установить шлюз в выделенном namespace для шлюза. Такой подход позволяет использовать шлюз совместно многими приложениями, работающими в разных namespace. В качестве альтернативы, вы можете установить шлюз в namespace приложения. В этом случае шлюз будет выступать как выделенный шлюз для приложения в этом namespace.
-
Создайте YAML-файл с именем
secret-reader.yaml, который определяет service account, роль и привязку роли для развертывания шлюза. Эти настройки позволяют шлюзу читать секреты, что необходимо для получения TLS-учётных данных. -
Примените YAML-файл, выполнив следующую команду:
-
Создайте YAML-файл с именем
gateway-deployment.yaml, который определяет объект KubernetesDeploymentдля шлюза.- Указывает, что управляющая плоскость Istio использует шаблон внедрения шлюза вместо шаблона sidecar по умолчанию.
- Убедитесь, что для развертывания шлюза установлен уникальный label.
Уникальный label необходим, чтобы ресурсы Istio
Gatewayмогли выбирать рабочие нагрузки шлюза. - Включает внедрение шлюза, устанавливая label
sidecar.istio.io/injectв значениеtrue. Если имя ресурса Istio не является default, необходимо использовать labelistio.io/rev: <istio_revision>, где revision — активная ревизия ресурса Istio. - Устанавливает поле image в значение
auto, чтобы образ автоматически обновлялся при каждом запуске pod. - Устанавливает
serviceAccountNameв имя ранее созданногоServiceAccount. - (Опционально) Устанавливает node selectors для планирования pod шлюза на Infra Nodes.
- (Опционально) Устанавливает tolerations, чтобы разрешить планирование pod шлюза на Infra Nodes.
-
Примените YAML-файл, выполнив следующую команду:
-
Проверьте успешность развертывания
Deploymentшлюза, выполнив следующую команду:Вы должны увидеть вывод, похожий на следующий:
Пример вывода
-
Создайте YAML-файл с именем
gateway-service.yaml, который содержит объект KubernetesServiceдля шлюза.- При установке
spec.typeвClusterIPобъектServiceшлюза доступен только внутри кластера. Если шлюз должен обрабатывать входящий трафик извне кластера, установитеspec.typeвLoadBalancer. - Установите
selectorв уникальный label или набор label, указанных в шаблоне pod развертывания шлюза, созданного ранее.
- При установке
-
Примените YAML-файл, выполнив следующую команду:
-
Проверьте, что сервис шлюза нацелен на endpoint pod шлюза, выполнив следующую команду:
Вы должны увидеть вывод, похожий на следующий пример:
Пример вывода
-
Опционально: Создайте YAML-файл с именем
gateway-hpa.yaml, который определяет горизонтальный автоскейлер pod для шлюза. В следующем примере минимальное количество реплик установлено в2, максимальное — в5, а масштабирование вверх происходит при превышении средней загрузки CPU 80% от лимита ресурсов CPU. Этот лимит указан в шаблоне pod развертывания шлюза.- Установите
spec.scaleTargetRef.nameв имя ранее созданного развертывания шлюза.
- Установите
-
Опционально: Примените YAML-файл, выполнив следующую команду:
-
Опционально: Создайте YAML-файл с именем
gateway-pdb.yaml, который определяет Pod Disruption Budget для шлюза. В следующем примере допускается эвакуация pod шлюза только в том случае, если после эвакуации в кластере останется как минимум1здоровый pod шлюза.- Установите
spec.selector.matchLabelsв уникальный label или набор label, указанных в шаблоне pod развертывания шлюза, созданного ранее.
- Установите
-
Опционально: Примените YAML-файл, выполнив следующую команду: