我想用 Istio 多集群配置 2 个 Kubernetes 集群,我正在考虑以下 2 个选项:
- 复制的控制平面 ( https://istio.io/docs/setup/install/multicluster/gateways/ )
- 共享控制平面(单网络)(https://istio.io/docs/setup/install/multicluster/shared-vpn/)
出于可用性原因,我更愿意使用复制的控制平面,但我想到了以下问题:在这种情况下,应用程序之间的 mTLS 如何工作?
如果同一个集群的 2 个应用程序相互通信,并且启用了 mTLS,我可以创建一个如下所示的 AuthorizationPolicy:
apiVersion: "security.istio.io/v1beta1"
kind: "AuthorizationPolicy"
metadata:
name: "allow-app-a"
namespace: app-b
spec:
rules:
- from:
- source:
principals: ["cluster.local/ns/app-a/sa/default"]
to:
- operation:
methods: ["GET"]
app-a
由 mTLS 提供的主体标识。
如果我们正在部署具有复制控制平面(版本 1)的多集群,我们将拥有如下内容:
如何识别不同集群(cluster.global)中的应用程序?所有流量都通过网关,我的猜测是它永远不会从原始调用者那里读取主体,它会从网关中读取主体。这是正确的吗?
有没有办法解决这个问题?我可以获得复制的控制平面但没有网关部署吗?