簡體   English   中英

從 istio 服務網格上的工作節點中的服務連接到 Kubernetes API 服務器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM