Конфигурация порта виртуальной службы работает для одного пространства имен, но не для другого

#kubernetes #istio-gateway

Вопрос:

Я развернул одно и то же приложение в k8s в двух разных пространствах имен: nsgreen и nsblue . Желаемый результат-возможность доступа к приложениям для обоих пространств имен на порту 80:

Мой шлюз создается в 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. вы пытались это проверить?