我有暴露多个端口的容器。因此,配置为部署kubernetes服务如下所示:
kind: Service
apiVersion: v1
metadata:
name: myapp
labels:
app: myapp
spec:
selector:
name: myapp
ports:
- protocol: TCP
port: 5555
targetPort: 5555
- protocol: TCP
port: 5556
targetPort: 5556
我用Istio来管理路由,并通过istio入口网关公开此服务。我们有80端口一个网关,做我们必须为同一个主机两个不同的网关使用两个不同的虚拟服务?
我想配置“example.myhost.com”的80路线5556和其他一些港口,让说,‘example.myhost.com’的8088路线服务的5555。
这是可能与一个virtualservice?
假设Istio Gateway服务是TCP的网络连接,你也许能够一个Gateway
配置两个外部端口80和5556相结合:
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: myapp-gateway
spec:
selector:
istio: ingressgateway # use istio default controller
servers:
- port:
number: 80
name: port1
protocol: TCP
hosts:
- example.myhost.com
- port:
number: 8088
name: port2
protocol: TCP
hosts:
- example.myhost.com
现场hosts
这里标识必须由这个Gateway
暴露目标地址的列表。
为了使相应的网络路由到嵌套吊舱,可以与端口的匹配组指定VirtualService:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: myapp-virtual-service
spec:
hosts:
- example.myhost.com
gateways:
- myapp-gateway
tcp:
- match:
- port: 80
route:
- destination:
host: myapp.prod.svc.cluster.local
port:
number: 5556
- match:
- port: 8088
route:
- destination:
host: myapp.prod.svc.cluster.local
port:
number: 5555
上述VirtualService
定义规则,以80个8088端口来为example.myhost.com
到myapp
服务端口5556,5555分别航线网络流量。
我鼓励你去获取有关Istio TCPRoute能力,并进一步应用的更多信息。