Назад | Перейти на главную страницу

Путь перезаписи / перенаправления Kubernetes

У меня есть 2 службы, которые используют один и тот же образ, но их конфигурация отличается. Я хочу, чтобы всякий раз, когда я запрашиваю / get_traits_similarity, он перенаправляется на / get_similarity внутри этой службы. Есть способ как это сделать? Ниже представлена ​​последняя конфигурация, которую я пробовал.

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: "/$1"
    nginx.ingress.kubernetes.io/ssl-redirect: 'false'
    nginx.ingress.kubernetes.io/use-regex: 'true'
    nginx.ingress.kubernetes.io/app-root: /get_similarity
  labels:
    app.kubernetes.io/component: hashingservice
    app.kubernetes.io/name: hashing-ingress
    app.kubernetes.io/part-of: hashingapi
  name: hashing-ingress
  namespace: default
spec:
  rules:
    - http:
        paths:
        - backend:
            serviceName: mediasimilarity
            servicePort: 5000
          path: "/(get_similarity)"
        - backend:
            serviceName: mediasimilarity
            servicePort: 5000
          path: "/(create_token)(/get_similarity){1}"
        - backend:
            serviceName: mediasimilarity
            servicePort: 5000
          path: "/(load_index)"
        - backend:
            serviceName: traits-mediasimilarity
            servicePort: 5000
          path: "/(get_traits_similarity)(/|$)(.*)"
        - backend:
            serviceName: traits-mediasimilarity
            servicePort: 5000
          path: "/(create_token)/(get_traits_similarity)(/|$)(.*){1}"
        - backend:
            serviceName: traits-mediasimilarity
            servicePort: 5000
          path: "/(load_index)"

Я вижу три потенциальных проблемы с вашей конфигурацией:

  1. Опечатка в аннотациях: nginx.ingress.kubernetes.io/user-regex: вместо того nginx.ingress.kubernetes.io/use-regex: (уже исправлено)

  2. NetworkPolicy в extensions/v1beta1 Версия API больше не обслуживается из Kubernetes версии 1.16.

  3. Учитывая Переписать сам:

    • вам необходимо правильно установить цель: nginx.ingress.kubernetes.io/rewrite-target: /get_similarity/$2

    • вам нужно указать свой хост в поле spec: часть

    • наконец, вам нужно указать путь, который вы хотите переписать: path: /get_traits_similarity(/|$)(.*)

Вот пример:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /get_similarity/$2
  name: hashing-ingress
  namespace: default
spec:
  rules:
  - host: <your_host>
    http:
      paths:
      - backend:
          serviceName: traits-mediasimilarity
          servicePort: 5000
        path: /get_traits_similarity(/|$)(.*)

При необходимости обратитесь к связанной документации и сообщите мне, помогло ли это.