#kubernetes #devops #nginx-ingress
#kubernetes #devops #nginx-вход
Вопрос:
Я настраиваю входную службу, следуя некоторой документации k8s, но я не могу понять следующие аннотации:
kubernetes.ip/ingress.class:
nginx.ingress.kubernetes.io/rewrite-target:
Знаете ли вы, что делают эти аннотации?
Заранее спасибо.
Ответ №1:
kubernetes.io/ingress.class
аннотации официально устарели:
До
IngressClass
того, как ресурс был добавлен в Kubernetes 1.18, аналогичная концепция входного класса часто указывалась сkubernetes.io/ingress.class
аннотацией на входе. Хотя эта аннотация никогда не была официально определена, она широко поддерживалась контроллерами входа и теперь должна считаться официально устаревшей.
Вместо этого вы должны использовать ingressClassName
:
Более новое
ingressClassName
поле для входов заменяет эту аннотацию, но не является прямым эквивалентом. В то время как аннотация обычно использовалась для ссылки на имя контроллера входа, который должен реализовать вход, поле представляет собой ссылку наIngressClass
ресурс, который содержит дополнительную конфигурацию входа, включая имя контроллера входа.
- Аннотация перезаписи выполняется следующим образом:
В некоторых сценариях открытый URL-адрес в серверной службе отличается от указанного пути в правиле входа. Без перезаписи любой запрос вернет 404. Установите аннотацию
nginx.ingress.kubernetes.io/rewrite-target
на путь, ожидаемый службой.Если корневой каталог приложения отображается по другому пути и его необходимо перенаправить, задайте аннотацию
nginx.ingress.kubernetes.io/app-root
для перенаправления запросов/
.
Для более подробного примера я настоятельно рекомендую вам ознакомиться с этим источником. Это точно показывает, как работает перезапись.
Ответ №2:
Начиная с версии Kubernetes 1.18 , kubernetes.io/ingress.class
аннотации устарели. Вы должны создать IngressClass
подобный:
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
name: alb-ingress-class
spec:
controller: ingress.k8s.aws/alb
А затем ссылайтесь на него в своей Ingress
декларации:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
namespace: ...
name: my-fabulous-ingress
annotations:
...
labels:
...
spec:
ingressClassName: "alb-ingress-class"
rules:
...
Важно: обязательно создайте IngressClass
перед Ingress
(потому что на него ссылается Ingress
)
Примечание: если в том же манифесте достаточно поместить IngressClass
блок над Ingress
одним.
Подробная информация:
https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/
https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.2/guide/ingress/ingress_class/