Kubernetes TLS路由的Istio加权路由

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:

我们有两个微服务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:
  - 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