如何使用NATS群集在Istio中的一个服务边车之间进行连接

时间:2019-10-11 07:45:46

标签: istio nats.io nats-streaming-server

我创建了一个不注入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?我该如何解决这个问题?

1 个答案:

答案 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