#kubernetes #istio-gateway
Вопрос:
Я развернул одно и то же приложение в k8s в двух разных пространствах имен: nsgreen
и nsblue
. Желаемый результат-возможность доступа к приложениям для обоих пространств имен на порту 80:
- nsgreen: http://myapp.int.mydomain.com
- nsblue: http://myapp-blue.int.mydomain.com
Мой шлюз создается в istio-system
пространстве имен следующим образом:
### Gateway
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: mygateway
namespace: istio-system
spec:
selector:
istio: ingressgateway
servers:
- hosts:
- myapp-blue.int.mydomain.com
port:
name: myapp-server-blue
number: 80
protocol: HTTP
- hosts:
- myapp.int.mydomain.com
port:
name: myapp-server
number: 80
protocol: HTTP
Виртуальный сервис для my-приложения в nsblue:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: myapp-vs-blue
namespace: istio-system
spec:
gateways:
- mygateway
hosts:
- myapp-blue.int.mydomain.com
http:
- match:
- uri:
prefix: /
route:
- destination:
host: myapp-server-blue.nsblue.svc.cluster.local
port:
number: 8080
weight: 100
Виртуальная служба для моего приложения в nsgreen
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: myapp
namespace: istio-system
spec:
gateways:
- mygateway
hosts:
- myapp.int.mydomain.com
http:
- match:
- uri:
prefix: /
route:
- destination:
host: myapp-server.nsgreen.svc.cluster.local
port:
number: 8080
weight: 100
При доступе http://myapp.int.mydomain.com (nsgreen), порт 80, кажется, работает нормально, но в случае myapp-blue (nsblue) я могу получить доступ к нему только через порт 8080 (http://myapp-blue.int.mydomain.com:8080) вместо 80.
Примечание: В случае, если это имеет значение, оба пространства имен имеют метку istio-injection=enabled
.
Может ли кто-нибудь пролить свет на то, что не так с моими файлами yaml, чтобы достичь желаемого результата выше?
Комментарии:
1. Какую версию Kubernetes вы использовали и как вы настроили кластер? Вы использовали установку с голым металлом или какой-то облачный провайдер? Важно воспроизвести вашу проблему.
2. Это v.1. 16.1. Это локальный кластер, который я унаследовал. К сожалению, шаги по настройке никогда не записывались людьми, создавшими кластер.
3. Вы используете очень старую, устаревшую версию Kubernetes (и, вероятно, istio). Без шагов по настройке мы не сможем воспроизвести вашу проблему. Не могли бы вы установить новейшую версию Kubernetes и Istio и протестировать свою конфигурацию?
4. Прежде всего, большое вам спасибо за то, что нашли время ответить на мой вопрос. Я попытаюсь посмотреть, смогу ли я найти свободные ресурсы для создания нового кластера с более поздней/последней версией.
5. вы пытались это проверить?