Ответ
В минимальном рабочем манифесте Ingress необходимо указать следующие ключевые секции:
- apiVersion и kind: Определяют тип ресурса.
- metadata.name: Уникальное имя Ingress-ресурса в namespace.
- spec.rules: Основные правила маршрутизации. Каждое правило должно содержать:
host: Доменное имя (например,app.example.com). Для catch-all можно опустить.http.paths: Список путей. Для каждого пути указываю:path: Шаблон URL (например,/api).pathType: Тип сопоставления (Prefix,ExactилиImplementationSpecific).backend.service: Ссылка на целевой Service Kubernetes с указанием его имени и порта.
Пример базового Ingress для внутреннего API:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: api-ingress
namespace: production
spec:
rules:
- host: api.internal.mycompany.com
http:
paths:
- path: /v1
pathType: Prefix
backend:
service:
name: backend-service
port:
number: 8080
Что я часто добавляю дополнительно:
- Аннотации (
metadata.annotations): Для настройки контроллера Ingress (nginx, traefik). Например, для настройки rewrite rules, SSL redirect или rate limiting. - TLS-секция (
spec.tls): Для настройки HTTPS. В ней указываю имена секретов (TLS Secrets), содержащих сертификат и приватный ключ. - IngressClass: Указываю через
spec.ingressClassName, если в кластере используется несколько контроллеров Ingress.