Kubernetes TLS路由的Istio加权路由
我们有两个微服务A和B。A通过istio代理侧车呼叫B 我们创建了一个虚拟服务。请参阅下面的yaml 创建虚拟服务后,当我们使用此命令检查pod A中的路由时,我们没有看到加权路由 如果我们用http替换tls,则会添加加权路由。我们可以在tls中使用加权路由吗Kubernetes TLS路由的Istio加权路由,kubernetes,istio,Kubernetes,Istio,我们有两个微服务A和B。A通过istio代理侧车呼叫B 我们创建了一个虚拟服务。请参阅下面的yaml 创建虚拟服务后,当我们使用此命令检查pod A中的路由时,我们没有看到加权路由 如果我们用http替换tls,则会添加加权路由。我们可以在tls中使用加权路由吗 apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: b namespace: default spec: hosts:
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
name: b
namespace: default
spec:
hosts:
- b
tls:
- match:
- port: 443
route:
- destination:
host: b
subset: v1
weight: 50
- destination:
host: b
subset: v2
weight: 50
添加服务定义
apiVersion: v1
kind: Service
metadata:
labels:
svc: b
name: b
namespace: default
spec:
clusterIP: x.x.x.x
ports:
- name: https-b
port: 443
protocol: TCP
targetPort: 8080
selector:
svc: b
sessionAffinity: None
type: ClusterIP
status:
loadBalancer: {}
正在添加目标规则
apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
name: b
namespace: default
spec:
host: b
subsets:
- labels:
version: v1
name: v1
- labels:
version: v2
name: v2
服务定义的端口名是否可能带有
http-Service-a
从中,HTTP和TLS具有不同的规范
http
HTTP路由将应用于名为“HTTP-”/“http2-”/“grpc-*”的平台服务端口、以协议HTTP/http2/grpc/TLS终止的HTTPS网关端口以及使用HTTP/http2/grpc协议的服务入口端口
tls
TLS路由将应用于名为“https-”的平台服务端口、“TLS-”、使用https/TLS协议的未端接网关端口(即使用“直通”TLS模式)和使用https/TLS协议的服务入口端口
鉴于上述差异,它可以解释不同的行为
您正在使用哪个版本的Istio?最好也能看到K8s的定义。Istio版本是1.6.1。我编辑了这个问题以添加服务定义抱歉,我误解了这里涉及的服务,有问题的服务定义应该是B,因为这是目的地。另外,您是否有DestinationRules?编辑了问题以添加目标规则。很抱歉,我现在不太确定,但您似乎没有指示TLS设置的配置。你试过添加一些吗?您在集群中需要什么样的TLS路由,是基于Isito的MTL,还是其他自定义设置?您还可以通过运行
istioctl analyze-A