Метод 1: императивный подход с kubectl
Один из способов обработки ресурсов Ingress — использование инструмента командной строки kubectl. Вы можете создать Ingress-ресурс в обязательном порядке, выполнив следующую команду:
kubectl create ingress my-ingress --rule=hostname/path=service:port
Эта команда создает Ingress-ресурс с именем «my-ingress» с правилом, которое сопоставляет имя хоста/путь со службой и портом. При необходимости вы можете добавить дополнительные правила.
Метод 2: декларативный подход с YAML
Другой метод — декларативно обрабатывать ресурсы Ingress с помощью манифестов YAML. Вот пример входного YAML-файла:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
spec:
rules:
- host: mydomain.com
http:
paths:
- path: /app
pathType: Prefix
backend:
service:
name: my-service
port:
number: 80
Вы можете применить этот YAML-файл с помощью следующей команды:
kubectl apply -f ingress.yaml
При этом создается входящий ресурс с именем “my-ingress” с правилом, которое сопоставляет хост “mydomain.com” и путь “/app” со службой с именем “my-service” на порту 80.
Метод 3. Входные контроллеры
Контроллеры Ingress отвечают за реализацию функций Ingress в Kubernetes. Доступно несколько популярных контроллеров Ingress, например Nginx Ingress Controller, Traefik и HAProxy.
Чтобы использовать контроллер Ingress, вам необходимо развернуть его в своем кластере и настроить для обработки ресурсов Ingress. Каждый контроллер имеет свои собственные параметры конфигурации и процесс настройки, поэтому обязательно обратитесь к документации, предоставленной разработчиками контроллера.
Метод 4: аннотации и расширенные настройки
В дополнение к базовым функциям Ingress вы можете использовать аннотации и расширенные конфигурации для настройки поведения ваших ресурсов Ingress. Эти параметры позволяют добавлять завершение SSL/TLS, перезаписывать URL-адреса, включать привязку сеансов и многое другое.
Вот пример ресурса Ingress с аннотациями:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: mydomain.com
http:
paths:
- path: /app
pathType: Prefix
backend:
service:
name: my-service
port:
number: 80
Аннотация nginx.ingress.kubernetes.io/rewrite-target: /в этом примере выполняет перезапись URL-адреса.
Метод 5. Входные API
Начиная с Kubernetes версии 1.19, вы можете использовать ресурсы Ingress API в качестве альтернативы ресурсу Ingress. Ingress API предоставляет дополнительные функции, такие как поддержка маршрутизации TCP и UDP, улучшенная проверка и лучшая интеграция с другими сетевыми функциями.
Чтобы использовать Ingress API, вам необходимо включить версию API networking.k8s.io/v1по умолчанию в вашем кластере. Затем вы сможете создавать ресурсы Ingress, используя группу API networking.k8s.io/v1вместо extensions/v1beta1.
В заключение, к обработке ресурсов Ingress в Kubernetes можно подходить по-разному. Независимо от того, предпочитаете ли вы императивный или декларативный подход, используете контроллеры Ingress, аннотации и расширенные конфигурации или используете Ingress API, существует множество вариантов, отвечающих вашим потребностям. Так что вперед, экспериментируйте с этими методами и станьте мастером обработки ресурсов Ingress в Kubernetes!