Как я могу сделать один маршрут publi c в kubernetes ingress с установленным auth-url? - PullRequest
0 голосов
/ 13 июля 2020

Я немного поиграю с маршрутизацией на основе путей через входящие потоки Kubernetes (мы используем Nginx входящие). У нас есть одна служба, работающая за аутентификацией через внешнюю службу, как в первом фрагменте. Этот сервис уже используется другими сервисами в нашей экосистеме, однако по мере развития у сервиса теперь есть API управления, и нам нужно отключить аутентификацию для определенных c путей. Согласно этому ответу , это невозможно для basi c auth и, согласно тому, что я пробовал (второй фрагмент), это также невозможно для аутентификации через внешнюю службу. Есть ли другой способ разрешить указанные c пути без аутентификации без полной перестройки входов и доменов / путей?

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: path-based-routing-1
  annotations:
    kubernetes.io/tls-acme: "true"
    kubernetes.io/ingress.class: nginx-external
    nginx.ingress.kubernetes.io/auth-url: http://authorizer.dev.svc.cluster.local
spec:
  tls:
  - hosts:
    - 'routing.example.com'
    secretName: routing.example.com
  rules:
  - host: 'routing.example.com'
    http:
      paths:
      - path: /
        backend:
          serviceName: path-based-routing-1
          servicePort: 80
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: path-based-routing-2
  annotations:
    kubernetes.io/tls-acme: "true"
    nginx.ingress.kubernetes.io/auth-type: ""
    kubernetes.io/ingress.class: nginx-external

    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  tls:
  - hosts:
    - 'routing.example.com'
    secretName: routing.example.com
  rules:
  - host: 'routing.example.com'
    http:
      paths:
      - path: /management-api
        backend:
          serviceName: path-based-routing-2
          servicePort: 80
...