[英]Connecting to Kubernetes API Server from a service in a worker node on istio Service Mesh
我有一個安裝了 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(name, secretNamespace) 。 當我禁用我的目的地規則時,事情開始工作。
由於某些限制,我無法修改現有的destiationRules,也無法在單獨的命名空間中部署我的服務。 我需要幫助知道我是否可以在與 API 服務器通信時放置某種過濾器或類似物,以便通信不是 mTls?
請指教。
這對我有用:
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_MUTUAL
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.