Вход — как отказаться от базовых URL-адресов?

#kubernetes #kubernetes-ingress

#kubernetes #kubernetes-вход

Вопрос:

У меня есть две службы с именами svc1 и svc2 . Могу ли я заставить ingress отправлять один и тот же домен с разными базовыми URL-адресами для каждой службы, т. е.:

ingress.domain/svc1/path-here -> svc1 получает этот запрос с путем, переписанным как /path-here

ingress.domain/svc2/path-here -> svc2 получает этот запрос с путем, переписанным как /path-here

Значит, я могу использовать один домен для всех служб в этом экземпляре k8s?

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

1. вы имели в виду: после того, как вы получили доступ к домену ingress.domain/svc2/path-here , он перенаправит на ingress.domain/path-here

2. Я имею в виду, что модуль svc2 service получит запрос и увидит, что это URL-адрес запроса ingress.domain/path-here . ingress.domain преобразуется в IP-адрес экземпляра k8s.

3. пожалуйста, поделитесь своим примером файла ingress ymal.

Ответ №1:

вы можете сделать что-то вроде

 apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    cert-manager.io/cluster-issuer: public-dev
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/proxy-body-size: 50m
    nginx.ingress.kubernetes.io/proxy-read-timeout: "1800"
    nginx.ingress.kubernetes.io/proxy-send-timeout: "1800"
    nginx.ingress.kubernetes.io/rewrite-target: /$2
  name: public-ingress
spec:
  rules:
  - host: developer.example.com
    http:
      paths:
      - backend:
          serviceName: test-service
          servicePort: 80
        path: /test-service(/|$)(.*)
      - backend:
          serviceName: test-service-2
          servicePort: 80
        path: /test-service-2(/|$)(.*)
  tls:
  - hosts:
    - developer.example.com
    secretName: public-dev