Я очень старался, чтобы этот сценарий работал. У меня есть пространства имен:
- пространство имен: mongodb (Istio отключено, на самом деле это оператор mongodb с кластером)
- пространство имен: приложение (включен Istio)
Из третьего пространства имен, скажем по умолчанию, я могу достичь конечной точки mongodb с помощью fqnd: mongodb-standalone-0.mongodb-standalone-svc.mongodb.svc.cluster.local
Но из пространства имен приложения, в котором включен istio, я безуспешно пробовал следующее:
Служба внешних имен
kind: "Service"
apiVersion: "v1"
metadata:
namespace: app
labels:
app: mongodb
service: mongodb
name: mongodb
spec:
type: ExternalName
externalName: mongodb-standalone-0.mongodb-standalone-svc.mongodb.svc.cluster.local
ports:
- port: 27017
status:
loadBalancer: {}
- ping работает, но трафик на порт 27017 нет
Виртуальный сервис + сервис
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: mongodb
spec:
hosts:
- mongodb
tcp:
- route:
- destination:
host: mongodb-standalone-0.mongodb-standalone-svc.mongodb.svc.cluster.local
subset: v1
---
kind: "Service"
apiVersion: "v1"
metadata:
namespace: app
labels:
app: mongodb
service: mongodb
name: mongodb
spec:
ports:
- name: "tcp-mongodb"
port: 27017
targetPort: 27017
status:
loadBalancer: {}
Запись в службу:
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
name: mongodb
spec:
hosts:
- mongodb-standalone-0.mongodb-standalone-svc.mongodb.svc.cluster.local
#- mongodb
ports:
- number: 27017
name: tcp-mongodb
protocol: TCP
location: MESH_EXTERNAL
resolution: DNS
endpoints:
- address: mongodb-standalone-0.mongodb-standalone-svc.mongodb.svc.cluster.local
но, похоже, ничто не помогает достичь пространства имен mongodb из пространства имен с поддержкой Istio. Любые идеи?