В Kubernetes Ingress — это мощный ресурс, позволяющий предоставлять доступ к вашим сервисам внешнему миру. Одной из ключевых функций Ingress является маршрутизация на основе пути, которая позволяет маршрутизировать входящие запросы на основе пути URL. В этой статье мы рассмотрим различные методы создания ресурсов Ingress на основе путей, сопровождаемые примерами кода. К концу вы получите четкое представление о том, как использовать эту функциональность в ваших развертываниях Kubernetes.
Метод 1. Использование аннотаций с контроллером входа Nginx
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- 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
Метод 2. Использование правил пути с контроллером входа Traefik
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
annotations:
traefik.ingress.kubernetes.io/router.entrypoints: web
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
Метод 3. Использование пользовательских аннотаций с Istio Gateway
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: my-gateway
spec:
selector:
istio: ingressgateway
servers:
- hosts:
- example.com
port:
number: 80
tls:
httpsRedirect: true
rules:
- http:
route:
- destination:
host: app1-service
port:
number: 80
match:
uri:
prefix: /app1
- destination:
host: app2-service
port:
number: 80
match:
uri:
prefix: /app2
В этой статье мы рассмотрели три различных метода создания ресурсов Ingress на основе путей в Kubernetes. В первом методе использовались аннотации с контроллером входа Nginx, во втором методе использовались правила пути с контроллером входа Traefik, а в третьем методе использовались пользовательские аннотации с шлюзом Istio. Каждый метод обеспечивает гибкость и контроль над маршрутизацией запросов к различным службам на основе URL-путей. Используя эти методы, вы можете эффективно управлять потоком трафика в своих развертываниях Kubernetes.