#nginx #kubernetes #nginx-ingress
#nginx #kubernetes #nginx-вход
Вопрос:
У меня есть общее правило входа для домена *.foo.com
, а затем у меня есть одно конкретное правило для домена a.foo.com
. Согласно документации, правило входа для a.foo.com
должно иметь приоритет над правилом с подстановочным знаком (потому что оно лучше подходит, чем подстановочный знак). Однако этого не происходит. Как мне явно установить приоритеты? Что я делаю не так?
Вот мое общее правило входа:
$ kubectl describe ing foo
Name: foo
Namespace: foo
Address: x.x.x.x
Default backend: default-http-backend:80 (x.x.x.x:8080)
TLS:
foo.com terminates *.foo.com
Rules:
Host Path Backends
---- ---- --------
*.foo.com
/ foo:8888 (<none>)
Вот правило, зависящее от домена:
$ kubectl describe ing foo-a
Name: foo-a
Namespace: foo
Address: x.x.x.x
Default backend: default-http-backend:80 (x.x.x.x:8080)
TLS:
foo.com terminates a.foo.com
Rules:
Host Path Backends
---- ---- --------
a.foo.com
/hello foo-a:8080 (<none>)
Ответ №1:
Вам нужно будет настроить каждый из ваших контроллеров nginx-ingress на другое ingress-class
имя. Затем в вашем определении входа вы должны указать kubernetes.io/ingress.class: "my-ingress"
, чтобы указать на контроллер входа, который вы хотите использовать для этого конкретного входа.
Подробности настройки включены в [документы nginx-ingress].(https://kubernetes.github.io/ingress-nginx/user-guide/multiple-ingress /)
Надеюсь, это поможет!
Комментарии:
1. Да, я в курсе этого. Однако это приведет к пустой трате ресурсов. Мое текущее решение для этого — использовать *.foo.com в качестве сертификата TLS по умолчанию и не указывать имя сертификата TLS для a.foo.com .