1

概括

我有一个简单的启用 Istio 的 k8s 集群,仅包含:

  • Java 网络服务器。
  • Redis 主实例。

通常,Web 服务器可以从 Redis 读取和写入。然而,Kiali 显示了一个类似于 ( https://kiali.io/documentation/latest/faq/#disconnected-tcp ) 的断开连接图。因此,我尝试使用 STRICT 模式显式打开 mTLS。但是,Kiali 似乎继续显示断开连接的图形

设置

  • Kubernetes 版本 1.18.0
  • Minikube 版本 1.18.0
  • Istio 1.9 版
$ istioctl install --set profile=demo -y
$ kubectl apply -f samples/addons
  • Java 服务器代码片段 (redis.clients.jedis.Jedis)
Jedis redis = new Jedis("redis-master");
redis.set(key, value);
  • mTLS
apiVersion: "security.istio.io/v1beta1"
kind: "PeerAuthentication"
metadata:
  name: "default"
spec:
  mtls:
    mode: STRICT

问题

  • 我的理解是,默认情况下,mTLS应该是默认开启的。非 HTTP TCP 流量不是这种情况吗?
  • 我需要做些什么来为非 HTTP TCP 流量启用 mTLS 吗?(例如,将Service 上的端口从6379 更改为443?设置一个VirtualService?)。
4

1 回答 1

0

根据 istio文档,您必须配置 redis 以使其与 istio 一起使用。

与部署在 Istio 服务网格中的其他服务类似,Redis 实例需要监听 0.0.0.0。但是,每个 Redis 从属实例都应该公布一个可供主控使用的地址,该地址不能也为 0.0.0.0。

使用 Redis 配置参数 replica-announce-ip 来宣布正确的地址。例如,使用以下步骤将 replica-announce-ip 设置为每个 Redis 从属实例的 IP 地址:

通过从属 StatefulSet 定义的 env 小节中的环境变量传递 pod IP 地址:

- name: "POD_IP"
  valueFrom:
    fieldRef:
      fieldPath: status.podIP

此外,在命令小节下添加以下内容:

echo "" >> /opt/bitnami/redis/etc/replica.conf
echo "replica-announce-ip $POD_IP" >> /opt/bitnami/redis/etc/replica.conf
于 2021-04-26T08:56:31.177 回答