Вопрос или проблема
Я уже установил Istio Ingress Gateway в своем кластере AKS, используя Helm (используемые чарты istio/base, istio/istiod, istio/gateway с https://istio-release.storage.googleapis.com/charts).
Теперь я хочу также установить Istio Egress Gateway, но я не знаю, есть ли другой Helm чарт или мне нужно снова установить istio/gateway и настроить его как Egress.
Может кто-то помочь мне с этим, потому что в документации Istio нет четкой инструкции по установке с использованием Helm?
Что мне следует установить и настроить, чтобы направить весь кластерный трафик через этот Egress Gateway и ограничить доступ к определенным хостам для каждой рабочей нагрузки. например:
apiVersion: networking.istio.io/v1
kind: ServiceEntry
metadata:
name: external-svc-https
namespace: testing
spec:
hosts:
- api.dropboxapi.com
- www.googleapis.com
- api.facebook.com
location: MESH_EXTERNAL
exportTo: "."
ports:
- number: 443
name: https
protocol: TLS
resolution: NONE
Я уже нашел способ разрешить доступ только к определенным хостам по пространству имен, используя ServiceEntry и изменив следующую конфигурацию для установки istiod.
meshConfig:
outboundTrafficPolicy:
mode: REGISTRY_ONLY
Ответ или решение
Установка Istio Egress Gateway с использованием Helm
Введение
В этой статье мы подробно рассмотрим процесс установки Istio Egress Gateway в кластере AKS с использованием Helm, а также конфигурацию, необходимую для маршрутизации трафика через шлюз. Установив Istio Ingress Gateway, следующий логичный шаг — это настройка Egress Gateway для управления исходящим трафиком.
Подготовка к установке
-
Требования:
- Убедитесь, что у вас установлен Helm (версия 3.0 и выше).
- Проверьте, что у вас есть доступ к AKS-кластерам и вы можете выполнять команды kubectl.
-
Добавление репозитория Helm:
Для начала добавьте репозиторий для Istio, если вы еще этого не сделали:helm repo add istio https://istio-release.storage.googleapis.com/charts helm repo update
Установка Istio Egress Gateway
Istio Egress Gateway устанавливается через Helm-пакет, который является частью набора Helm-чартов Istio. В отличие от Ingress Gateway, вам не нужно повторно устанавливать istio/gateway
. Вместо этого необходимо установить istio/egressgateway
, что позволяет обрабатывать исходящий трафик.
-
Установка Egress Gateway:
Используйте следующую команду, чтобы установить Egress Gateway:
helm install istio-egress istio/egressgateway --namespace istio-system
Этот шаблон создаст службу, необходимую для обработки исходящего трафика. По умолчанию Egress Gateway будет настроен на использование стандартных параметров.
Настройка маршрутизации трафика через Egress Gateway
После установки необходимо настроить маршрутизацию трафика через Egress Gateway и ограничения доступа к конкретным хостам. Для этого создадим соответствующую конфигурацию ServiceEntry
и изменим настройки в meshConfig
.
-
Создание ServiceEntry:
Для ограничения доступа к внешним сервисам создайте YAML-файл с вашим определением
ServiceEntry
:apiVersion: networking.istio.io/v1 kind: ServiceEntry metadata: name: external-svc-https namespace: testing spec: hosts: - api.dropboxapi.com - www.googleapis.com - api.facebook.com location: MESH_EXTERNAL exportTo: "." ports: - number: 443 name: https protocol: TLS resolution: NONE
Примените созданный файл с помощью команды:
kubectl apply -f service-entry.yaml
-
Настройки MeshConfig:
Важно изменить параметры
outboundTrafficPolicy
для Istiod, чтобы разрешить трафик только через Egress Gateway. Чтобы задать режимREGISTRY_ONLY
, выполните команду изменения конфигурации:meshConfig: outboundTrafficPolicy: mode: REGISTRY_ONLY
Для применения обновлений используйте следующую команду:
kubectl apply -f mesh-config.yaml
Заключение
Установка и конфигурация Istio Egress Gateway в вашем AKS-кластере с использованием Helm может значительно улучшить управление исходящим трафиком и безопасность вашего приложения. Вы можете гибко настраивать доступ для различных рабочих нагрузок, что позволяет контролировать и управлять сетевым трафиком более эффективно.
Не забудьте регулярно проверять документацию Istio для получения актуальной информации о версиях и новых возможностях. Если у вас будут возникать вопросы или потребуется помощь, сообщество Istio всегда готово поддержать вас в вашем пути.