Ingress — это платформа с открытым исходным кодом, разработанная Google, которая управляет внешним доступом к сервисам, работающим в Kubernetes. Он обеспечивает балансировку нагрузки, завершение SSL и возможности маршрутизации, что делает его важным компонентом для управления трафиком ваших приложений. В этой статье мы рассмотрим различные методы эффективного использования Ingress, а также приведем примеры кода, демонстрирующие их реализацию.
- Базовая конфигурация входящего трафика:
Первый метод включает в себя настройку базовой конфигурации Ingress для предоставления доступа к вашему приложению. Вот пример простого файла YAML Ingress:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
spec:
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-service
port:
number: 80
В этом примере правило Ingress указывает, что запросы к example.com
должны направляться в службу my-service
через порт 80.
- Маршрутизация на основе пути:
Ingress позволяет маршрутизировать запросы к разным службам по разным путям. Вот пример, демонстрирующий маршрутизацию на основе пути:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
spec:
rules:
- host: example.com
http:
paths:
- path: /app1
pathType: Prefix
backend:
service:
name: app1-service
port:
number: 80
- path: /app2
pathType: Prefix
backend:
service:
name: app2-service
port:
number: 80
В этом случае запросы к example.com/app1
будут перенаправляться на службу app1-service
, а запросы к example.com/app2
— на службу app2-service
сервис.
- Прекращение TLS:
Ingress также может обрабатывать завершение SSL, что позволяет защитить ваши приложения с помощью HTTPS. Вот пример настройки завершения TLS:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
spec:
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-service
port:
number: 80
tls:
- hosts:
- example.com
secretName: tls-secret
В этом примере раздел tls
определяет хост (example.com
) и указывает секрет, содержащий сертификат SSL и закрытый ключ.
- Входящие контроллеры:
Доступно несколько контроллеров Ingress, например NGINX Ingress Controller и Traefik, которые предоставляют дополнительные функции и возможности настройки. Вот пример использования NGINX Ingress Controller:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
annotations:
kubernetes.io/ingress.class: nginx
spec:
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-service
port:
number: 80
В этом примере в разделе annotations
указывается контроллер Ingress, который будет использоваться (NGINX) для обработки ресурса Ingress.
Ingress — мощный инструмент для управления внешним доступом к сервисам в кластере Kubernetes. В этой статье мы рассмотрели различные методы, включая базовую настройку, маршрутизацию на основе пути, завершение TLS и использование различных контроллеров Ingress. Используя эти методы с примерами кода, вы можете эффективно использовать Ingress для обработки трафика ваших приложений и улучшения развертывания Kubernetes.