Я использую AKS с Helm v2.2, чтобы попытаться развернуть диаграмму, которая использует nginx LoadBalancer Pod, чтобы контролировать все входы в мои сервисы через один IP-адрес. Это очень много на этапе эксперимента, но я доказал, что, когда я использую следующую конфигурацию входа Helm для моей службы net core webapi:
ingress:
enabled: true
annotations:
kubernetes.io/ingress.class: nginx
hosts:
- host:
paths:
- /
, что я действительно смогу тогда посетить мои открытые API и см. пользовательский интерфейс Swagger по адресу
http://[My External IP]/index.html
. Затем я хочу разместить несколько служб за одним и тем же LoadBalancer (как вы и предполагали), поэтому я ожидал, что я смогу затем изменить указанную выше конфигурацию службы на что-то другое. как это:
ingress:
enabled: true
annotations:
kubernetes.io/ingress.class: nginx
hosts:
- host:
paths:
- /serviceA
Что должно означать, что я могу получить доступ к той же службе через обновленный URL:
http://[My External IP]/serviceA/index.html
Это то, что я должен ожидать работать? Нужно ли мне использовать какую-либо систему перезаписи, поскольку до сих пор я получаю сообщения об ошибках из этого URL, говорящие о том, что она не может найти определенные недостающие ресурсы. Любые попытки использовать аннотацию переписывания также не помогли мне здесь. Может ли кто-нибудь помочь мне и указать, что я могу делать неправильно? С новым путем URL я в конечном итоге получаю следующие типы ошибок в файлах, которые индекс загружает. html страница пытается загрузить, предполагая, что она наполовину работает, но нуждается в некоторой перезаписи или чем-то еще?
Failed to load resource: the server responded with a status of 404 ()
В результате механизма шаблонов диаграммы Helm создается следующий входной yaml-файл:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: myrelease-release-manager
labels:
app.kubernetes.io/name: release-manager
helm.sh/chart: release-manager-0.1.0
app.kubernetes.io/instance: release-name
app.kubernetes.io/version: "1.0"
app.kubernetes.io/managed-by: Tiller
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/force-ssl-redirect: "false"
nginx.ingress.kubernetes.io/rewrite-target: /serviceA
nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
rules:
- host:
http:
paths:
- path: /serviceA
backend:
serviceName: myrelease-release-manager
servicePort: 80
В результате этого входного файла я хочу посетить этот сервис, когда я go на мой внешний IP-адрес с путем /serviceA/index.html.