Настройка конфигурации входа не перенаправляет на правильную страницу

#kubernetes #kubernetes-helm #kubernetes-ingress #azure-aks #kubernetes-pod

Вопрос:

Нужна помощь в настройке входа в K8S. Заранее спасибо.

Я настроил контроллер NGINX и Cert-менеджер в кластере AKS с помощью Helm.

Вот список svc, модулей. введите описание изображения здесь

Далее развернуты два модуля, и уважаемые службы вот эти имена, которые можно найти на прикрепленном выше изображении.

  • pod/rpe-доставка-заказы-dcs-api*
  • сервис/rpe-доставка-заказы-dcs-api
  • pod/rpe-доставка-заказы-прокси-api*
  • сервис/rpe-доставка-заказы-прокси-api

Далее — когда я попытаюсь настроить вход, как показано ниже, для двух вышеперечисленных служб.

 apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: rpe-delivers-orders-dcs-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    cert-manager.io/cluster-issuer: dcs-cluster-issuer
    nginx.ingress.kubernetes.io/rewrite-target: /$1
    nginx.ingress.kubernetes.io/use-regex: "true"
spec:
  tls:
  - hosts:
    - raag.westus2.cloudapp.azure.com
    secretName: dcs-tls-secret
  rules:
  - host: raag.westus2.cloudapp.azure.com
    http:
      paths:
      - path: /orders-dcs(/|$)(.*)
        pathType: Prefix
        backend:
          service:
            name: rpe-delivers-orders-dcs-api
            port:
              number: 80
      - path: /orders-proxy(/|$)(.*)
        pathType: Prefix
        backend:
          service:
            name: rpe-delivers-orders-proxy-api
            port:
              number: 80
      - path: /(.*)
        pathType: Prefix
        backend:
          service:
            name: rpe-delivers-orders-dcs-api
            port:
              number: 80
 
  • Работает так, как ожидалось — raag.westus2.cloudapp.azure.com
  • Работая, как и ожидалось — raag.westus2.cloudapp.azure.com/rpe-delivers-orders-dcs-api
  • Не работает — raag.westus2.cloudapp.azure.com/rpe-delivers-orders-proxy-api

Моя цель состоит в том, чтобы приведенные ниже URL-адреса были перенаправлены на две разные веб-страницы:

  • raag.westus2.cloudapp.azure.com/rpe-delivers-orders-dcs-api
  • raag.westus2.cloudapp.azure.com/rpe-delivers-orders-proxy-api

Пожалуйста, дайте мне знать, если я упустил какую — либо информацию или неправильно выполнил настройку.

Спасибо.

Ответ №1:

Похоже, что вам не хватает блока rpe-delivers-orders-proxy-api в вашей входной конфигурации

 - path: /(.*)
        pathType: Prefix
        backend:
          service:
            name: rpe-delivers-orders-proxy-api
            port:
              number: 80
 

Если у вас есть какой-либо вариант и требование перезаписи пути, в этом случае вы можете создать два разных входа

№ 1. Вход для перезаписи

 apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name:  ingress-first
  annotations:
    kubernetes.io/ingress.class: nginx
    cert-manager.io/cluster-issuer: dcs-cluster-issuer
    nginx.ingress.kubernetes.io/rewrite-target: /$1
    nginx.ingress.kubernetes.io/use-regex: "true"
spec:
  tls:
  - hosts:
    - raag.westus2.cloudapp.azure.com
    secretName: dcs-tls-secret
  rules:
  - host: raag.westus2.cloudapp.azure.com
    http:
      paths:
      - path: /orders-dcs(/|$)(.*)
        pathType: Prefix
        backend:
          service:
            name: rpe-delivers-orders-dcs-api
            port:
              number: 80
      - path: /orders-proxy(/|$)(.*)
        pathType: Prefix
        backend:
          service:
            name: rpe-delivers-orders-proxy-api
            port:
              number: 80
 

Нет 2. простой вход, который также будет там в соответствии с вашими требованиями

 apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-second
  annotations:
    kubernetes.io/ingress.class: nginx
spec:
  tls:
  - hosts:
    - raag.westus2.cloudapp.azure.com
    secretName: dcs-tls-secret
  rules:
  - host: raag.westus2.cloudapp.azure.com
    http:
      paths:
      - path: /
        backend:
          service:
            name: rpe-delivers-orders-proxy-api
            port:
              number: 80
      - path: /
        backend:
          service:
            name: rpe-delivers-orders-dcs-api
            port:
              number: 80
 

Обновить :

 apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-second
  annotations:
    kubernetes.io/ingress.class: nginx
spec:
  tls:
  - hosts:
    - raag.westus2.cloudapp.azure.com
    secretName: dcs-tls-secret
  rules:
  - host: raag.westus2.cloudapp.azure.com
    http:
      paths:
      - path: /orders-proxy
        pathType: Prefix
        backend:
          service:
            name: rpe-delivers-orders-proxy-api
            port:
              number: 80
 

Комментарии:

1. проверьте журналы входящих контейнеров Nginx для отладки, когда вы выполняете запрос пути.

2. Привет, Харш — я пробовал и то, и другое, но все равно одно и то же. Вот моя новая настройка в соответствии с предложением. kubectl применить -f .rpe-доставляет-заказы-вход. yaml —пространство имен dcs-вход-nginx kubectl применяется -f .rpe-доставляет-заказы-базовый вход. yaml —dcs пространства имен-вход-nginx

3. Попробуйте удалить regrex,обновленный в ответе, также проверьте журналы контроллера nginx, есть ли какие-либо проблемы ?

4. я обновил второй вход, пожалуйста, проверьте один раз, а также проверьте журналы модуля входа nginx.

5. Я подтвердил правильность имен служб в базовом входном файле, а также удалил регулярное выражение из аннотаций. Но это все равно так же Сурово. Спасибо.