В этой процедуре описывается, как установить шлюз с использованием gateway injection.
Следующая процедура применима как для развертывания ingress, так и egress шлюзов.
Создайте namespace для шлюза:
Устанавливайте шлюз и контрольную плоскость Istio в разных пространствах имён.
Вы можете установить шлюз в отдельном namespace для шлюза. Такой подход позволяет использовать шлюз совместно многими приложениями, работающими в разных namespace. В качестве альтернативы, вы можете установить шлюз в namespace приложения. В этом случае шлюз будет выступать в роли выделенного шлюза для приложения в этом namespace.
Создайте YAML-файл с именем secret-reader.yaml
, который определяет service account, роль и role binding для развертывания шлюза. Эти настройки позволяют шлюзу читать секреты, что необходимо для получения TLS-учётных данных.
Примените YAML-файл, выполнив следующую команду:
Создайте YAML-файл с именем gateway-deployment.yaml
, который определяет объект Kubernetes Deployment
для шлюза.
Gateway
могли выбирать рабочие нагрузки шлюза.sidecar.istio.io/inject
в значение true
.
Если имя ресурса Istio не является default, необходимо использовать label istio.io/rev: <istio_revision>
, где revision — активная ревизия ресурса Istio.auto
, чтобы образ автоматически обновлялся при каждом запуске pod.serviceAccountName
в имя ранее созданного ServiceAccount
.Примените YAML-файл, выполнив следующую команду:
Проверьте успешность развертывания Deployment
шлюза, выполнив следующую команду:
Вы должны увидеть вывод, похожий на следующий:
Пример вывода
Создайте YAML-файл с именем gateway-service.yaml
, который содержит объект Kubernetes Service
для шлюза.
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-файл, выполнив следующую команду: