我创建了一个不注入Istio的NATS集群。
apiVersion: nats.io/v1alpha2
kind: NatsCluster
metadata:
name: nats
spec:
size: 2
pod:
annotations:
sidecar.istio.io/inject: "false"
version: "2.0.0"
现在我有一个sidecar istio,连接到上面的Nats群集,但是istio断开了连接。我的应用程序上的nat客户端关闭,并且Nats服务器通知:“客户端解析器错误,状态= 0 ...” 为什么在nat集群和sidecar之间没有mtl?我该如何解决这个问题?
答案 0 :(得分:0)
使用以下istio选项在网格上启用或禁用MTL。
values.global.mtls.auto=true
values.global.mtls.enabled=true or false
并使用目标规则来控制客户端连接策略。 也许是这样。
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: nats-dr
namespace: xxx
spec:
host: "nats-server.xxx.svc.cluster.local"
trafficPolicy:
tls:
mode: ISTIO_MUTUAL
如果您的服务器是严格模式,则您的服务器仅接受MTL,并且客户端必须使用相互的ILS。 如果您的服务器处于许可模式,则客户端可以使用MTL或文本计划进行连接。
Istio文档对此进行了介绍。
https://istio.io/pt-br/docs/tasks/security/authentication/auto-mtls/
最后使用命令检查MTL
istioctl authn tls-check podName.namespace
像这样
istioctl authn tls-check nats-server-1.namespace
并列出要检查的内容
nats-operator-7f747c74f8-fpxsv 2/2 Running 2 3h9m
nats-server-1 2/2 Running 0 3h8m
nats-server-2 2/2 Running 0 3h8m
nats-server-3 2/2 Running 0 3h8m
nats-streaming-1 2/2 Running 2 3h8m
nats-streaming-2 2/2 Running 2 3h8m
nats-streaming-3 2/2 Running 2 3h8m
nats-streaming-operator-86d6ff68ff-mzp7p 2/2 Running 0 3h9m