У меня есть три службы, работающие в моем бэкэнд, а маршрутизация Ingress определяется следующим образом:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: myapp-ingress
annotations:
kubernetes.io/ingress.class: nginx
certmanager.k8s.io/cluster-issuer: letsencrypt-prod
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
tls:
- hosts:
- myapp.westeurope.cloudapp.azure.com
secretName: acme-crt-secret
rules:
- host: myapp.westeurope.cloudapp.azure.com
http:
paths:
- path: /
backend:
serviceName: myapp-mvc
servicePort: 80
- path: /api
backend:
serviceName: myapp-api
servicePort: 80
- path: /identity
backend:
serviceName: myapp-identity
servicePort: 80
Проблема в том, что myapp-api уже прослушивает запросы к /api/v1/myresource. В текущей конфигурации служба myapp-api обслуживает запросы только myapp.westeurope.cloudapp.azure.com/api/api/v1/myresource (обратите внимание на ... / api / api / ...).
Возможно ли обслуживать запросы /api службой myapp-api, но переписывать эти запросы на / для службы без создания другого Ingress? Итак, myapp-api должен обслуживать запросы myapp.westeurope.cloudapp.azure.com/api/v1/myresource.
У вас есть два варианта:
a) Измените порт API и выполните его / на этом порту.
b) Измените приложение, чтобы оно обслуживало API на "/ v1 / myresource" и присвойте ему часть api через URL-адрес через Ingress.
В любом случае у вас будут свои ресурсы на "myapp.westeurope.cloudapp.azure.com/ апи / v1 / myresource».