#nginx #kubernetes #kubernetes-ingress #azure-aks #nginx-ingress
Вопрос:
Насколько я понимаю, мы можем использовать аннотацию входного класса для использования нескольких входных контроллеров Nginx в кластере. Но у меня есть вариант использования, когда мне нужно использовать несколько контроллеров входа в одном пространстве имен, чтобы предоставлять разные службы в одном пространстве имен, используя соответствующие созданные правила входа. Я следую https://kubernetes.github.io/ingress-nginx/deploy/#azure чтобы создать образец контроллера входа. Какие все параметры я должен изменить, если хочу иметь несколько входных контроллеров Nginx в одном пространстве имен.
Заранее спасибо
Ответ №1:
Из вашего поста неясно, собираетесь ли вы развернуть несколько контроллеров входа nginx или разные контроллеры входа. Однако оба они могут быть развернуты в одном пространстве имен.
В случае развертывания разных контроллеров входа должно быть достаточно просто развернуть в одном пространстве имен и использовать аннотации классов, чтобы указать, какое правило входа обрабатывается каким контроллером входа. Однако в случае, если вы хотите развернуть несколько контроллеров входа nginx в одном пространстве имен, вам придется использовать обновление имени/меток или других идентификаторов до чего-то другого.
Например, Ссылка, которую вы упомянули, https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.47.0/deploy/static/provider/cloud/deploy.yaml , необходимо будет обновить, как —
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
helm.sh/chart: ingress-nginx-3.33.0
app.kubernetes.io/name: ingress-nginx-internal
app.kubernetes.io/instance: ingress-nginx-internal
app.kubernetes.io/version: 0.47.0
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: controller
name: ingress-nginx-internal
namespace: ingress-nginx
automountServiceAccountToken: true
предполагая, что мы вызываем 2-й контроллер nginx-ingress как ingress-nginx-внутренний; Аналогично, все ресурсы, созданные в вашей ссылке, должны быть изменены и развернуты в одном пространстве имен.
Кроме того, вам придется обновить параметры развертывания, чтобы указать ingress.class, ваши контроллеры будут нацелены —
spec:
template:
spec:
containers:
- name: nginx-ingress-internal-controller
args:
- /nginx-ingress-controller
- '--ingress-class=nginx-internal'
- '--configmap=ingress/nginx-ingress-internal-controller'
Ссылка https://kubernetes.github.io/ingress-nginx/user-guide/multiple-ingress/ объясняет, как управлять несколькими входными контроллерами.
Комментарии:
1. Спасибо за ответ. Я хочу, чтобы несколько входных контроллеров Nginx находились в одном пространстве имен. Я застрял в понимании того, какие все ярлыки мне нужно обновить в этом случае.
2. Круто. этикетки
app.kubernetes.io/name
иapp.kubernetes.io/instance
их необходимо будет обновить, чтобы сделать их идентифицируемыми [ссылка] ( kubernetes.io/docs/concepts/overview/working-with-objects/… ) , наряду с metadata.name . Также не забудьте указать новое имя в других создаваемых ресурсах.3. Эй, @JithinZachariah — Не могли бы вы, пожалуйста, принять ответ, если решение сработало.
4. Эй, Кумар, я предполагаю, что разные классы входа необходимы только в том случае, если контроллеры входа развернуты в одном пространстве имен. Это правильно?
5. Не совсем. Независимо от того, в каком пространстве имен развернут входной контроллер, они оба могут конфликтовать. Использование классов входа указывает вашему правилу входа использовать определенный контроллер входа.