аннотации служб входа в kubernetes

#kubernetes #devops #nginx-ingress

#kubernetes #devops #nginx-вход

Вопрос:

Я настраиваю входную службу, следуя некоторой документации k8s, но я не могу понять следующие аннотации:

kubernetes.ip/ingress.class:

nginx.ingress.kubernetes.io/rewrite-target:

Знаете ли вы, что делают эти аннотации?

Заранее спасибо.

Ответ №1:

  1. kubernetes.io/ingress.class аннотации официально устарели:

До IngressClass того, как ресурс был добавлен в Kubernetes 1.18, аналогичная концепция входного класса часто указывалась с kubernetes.io/ingress.class аннотацией на входе. Хотя эта аннотация никогда не была официально определена, она широко поддерживалась контроллерами входа и теперь должна считаться официально устаревшей.

Вместо этого вы должны использовать ingressClassName :

Более новое ingressClassName поле для входов заменяет эту аннотацию, но не является прямым эквивалентом. В то время как аннотация обычно использовалась для ссылки на имя контроллера входа, который должен реализовать вход, поле представляет собой ссылку на IngressClass ресурс, который содержит дополнительную конфигурацию входа, включая имя контроллера входа.

  1. Аннотация перезаписи выполняется следующим образом:

В некоторых сценариях открытый 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/