描述
在某个命名空间a的客户端应用,访问另一个命名空间b的服务端应用后,通过kiali等页面查看时,发现没有度量信息和链路信息。
解决办法
为了减少服务网格下发到envoy sidecar的服务配置数量,在istio层面默认做了命名空间隔离,只能看到当前命名空间和指定的服务kubernetes和tracing-oap,可通过以下命令查看:
kubectl -nservicemesh get sidecar default -oyaml
apiVersion: networking.istio.io/v1beta1
kind: Sidecar
metadata:
name: default
namespace: servicemesh
spec:
egress:
- hosts:
- ./*
- default/kubernetes.default.svc.cluster.local
- servicemesh/tracing-oap.servicemesh.svc.cluster.local
此时如果不在a命名空间设置sidecar资源,a空间下的客户端服务是没有经过sidecar的,因此没有度量和链路信息。需要在a命名空间下设置sidecar资源,让a空间下的sidecar能够访问b空间的服务端应用,示例设置如下,a空间默认可以访问b空间的服务b:
apiVersion: networking.istio.io/v1beta1
kind: Sidecar
metadata:
name: default
namespace: a
spec:
egress:
- hosts:
- "b/svcb"