簡體   English   中英

為每個命名空間設置 Helm RBAC

[英]Setting up Helm RBAC Per Namespace

我正在關注“在命名空間中部署 Tiller,僅限於僅在該命名空間中部署資源”的官方 Helm文檔 這是我的 bash 腳本:

Namespace="$1"

kubectl create namespace $Namespace
kubectl create serviceaccount "tiller-$Namespace" --namespace $Namespace
kubectl create role "tiller-role-$Namespace" /
    --namespace $Namespace /
    --verb=* /
    --resource=*.,*.apps,*.batch,*.extensions
kubectl create rolebinding "tiller-rolebinding-$Namespace" /
    --namespace $Namespace /
    --role="tiller-role-$Namespace" /
    --serviceaccount="$Namespace:tiller-$Namespace"
helm init /
    --service-account "tiller-$Namespace" /
    --tiller-namespace $Namespace
    --override "spec.template.spec.containers[0].command'='{/tiller,--storage=secret}"
    --upgrade
    --wait

運行helm upgrade給了我以下錯誤:

錯誤:升級失敗:禁止配置映射:用戶“system:serviceaccount:kube-system:default”無法在命名空間“kube-system”中列出配置映射

官方文檔有bug嗎? 我讀錯了嗎?

我不確定腳本中的--resource標志語法是否正確,此處是否允許使用星號“*”,請查看 GitHub 上報告的此問題

$ kubectl create role "tiller-role-$Namespace" \
--namespace $Namespace \
--verb=* \
--resource=*.,*.apps,*.batch,*.extensions
the server doesn't have a resource type "*"

但是您可以在集群中檢查這個角色對象:

kubectl get role tiller-role-$Namespace -n $Namespace -o yaml

否則,請嘗試按照文檔中的指導在 yaml 文件中為tiller創建角色:

kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: tiller-manager
  namespace: tiller-world
rules:
- apiGroups: ["", "batch", "extensions", "apps"]
  resources: ["*"]
  verbs: ["*"]

此外,請記住,如果您在非默認命名空間( default )中安裝了tiller ,則需要在調用Helm命令時指定tiller所在的命名空間:

$ helm --tiller-namespace $Namespace version
Client: &version.Version{SemVer:"v2.11.0", GitCommit:"2e55dbe1fdb5fdb96b75ff144a339489417b146b", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.11.0", GitCommit:"2e55dbe1fdb5fdb96b75ff144a339489417b146b", GitTreeState:"clean"}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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