我有一个安装了Istio的AKS集群。我正在使用Kubernetes Client for C#在我的集群上执行一些操作(读取和创建秘密)。为此,我配置了适当的集群角色和绑定:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: secret-creator
rules:
- apiGroups: [""]
resources: ["secrets"]
verbs: ["create", "get", "list", "delete", "update"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: role-binding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: secret-creator
subjects:
- kind: ServiceAccount
name: default
namespace: default当前服务在默认命名空间中,并在默认服务帐户下运行。我为整个集群设置了PeerAuthentication和DestinationRules,如下所示:
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
name: default
namespace: default
spec:
mtls: {}
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: Mdestinationrule
namespace: default
spec:
host: "*"
trafficPolicy:
tls:
mode: ISTIO_MUTUAL有了这些配置后,我的服务无法与API服务器进行通信,无法使用KubeClient(client.ReadNamespacedSecret,secretNamespace)。当我禁用我的destinationRule时,事情就开始工作了。
由于某些限制,我不能修改现有的destiationRules,也不能在单独的名称空间中部署我的服务。我需要帮助知道我是否可以在与API服务器通信时放入某种过滤器或类似的东西,这样通信就不是mTls了?
敬请指教。
发布于 2020-08-27 02:48:03
这对我很有效:
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: Mdestinationrule
namespace: default
spec:
host: "*.kubernetes.default.svc" #Disabling it for Kube API Server communication
trafficPolicy:
tls:
mode: DISABLE
host: "*.default.svc"
trafficPolicy:
tls:
mode: ISTIO_MUTUALhttps://stackoverflow.com/questions/63545379
复制相似问题