В кластере Kubernetes входной контроллер отвечает за маршрутизацию внешнего трафика к соответствующим службам внутри кластера. Он действует как точка входа для входящих запросов и управляет маршрутизацией на основе определенных правил. Одной из важных концепций Ingress Controllers является универсальная конечная точка по умолчанию, которая служит резервным вариантом для запросов, которые не соответствуют каким-либо конкретным правилам. В этой статье мы рассмотрим различные сценарии использования универсальной конечной точки по умолчанию и предоставим примеры кода для иллюстрации каждого метода.
Метод 1: «Catch-All» для несовпадающих хостов
Когда Ingress-ресурс указывает в своих правилах конкретный хост, конечная точка «Catch-All» по умолчанию используется, когда запрос поступает с хостом, который не соответствует ни одному из определенные правила. Вот пример ресурса Ingress с использованием контроллера Ingress Nginx:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
spec:
rules:
- host: example.com
http:
paths:
- path: /foo
pathType: Prefix
backend:
service:
name: foo-service
port:
number: 80
Если запрос поступает с хоста, отличного от example.com, будет активирована конечная точка сбора всех данных по умолчанию.
Метод 2: комплексный подход для несовпадающих путей
Помимо хостов, входной контроллер также может определять правила на основе путей. Конечная точка сбора всех данных по умолчанию используется, когда запрос соответствует хосту, но не соответствует какому-либо конкретному пути, определенному во входном ресурсе. Вот пример:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
spec:
rules:
- host: example.com
http:
paths:
- path: /foo
pathType: Prefix
backend:
service:
name: foo-service
port:
number: 80
Если запрос поступает с хостом example.com, но путем, отличным от /foo, будет использоваться конечная точка сбора всех данных по умолчанию.
Метод 3. Объединить все для неопределенных служб
Конечная точка сбора всех по умолчанию срабатывает, когда запрос соответствует определенному хосту и пути, но не имеет соответствующей службы, указанной во входном ресурсе. Вот пример:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
spec:
rules:
- host: example.com
http:
paths:
- path: /foo
pathType: Prefix
backend:
service:
name: foo-service
port:
number: 80
- path: /bar
pathType: Prefix
backend:
service:
name: bar-service
port:
number: 80
Если запрос поступает с хостом example.comи путем /baz, который не определен во входном ресурсе, конечная точка сбора всех данных по умолчанию будет обрабатывать запрос.
Конечная точка сбора всех данных по умолчанию в Ingress Controller служит резервным механизмом для запросов, которые не соответствуют каким-либо конкретным правилам. Он используется, когда запросы имеют несовпадающие хосты, несовпадающие пути или когда определенная служба отсутствует. Понимая его использование, вы сможете эффективно управлять и маршрутизировать входящий трафик внутри вашего кластера Kubernetes.