#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