代码之家  ›  专栏  ›  技术社区  ›  Muhammad Rehan Saeed

为每个命名空间设置helm rbac

  •  1
  • Muhammad Rehan Saeed  · 技术社区  · 6 年前

    我跟着正式的头盔 documentation 对于“在命名空间中部署tiller,仅限于在该命名空间中部署资源”。这是我的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 给出以下错误:

    错误:升级失败:禁止configmaps:用户“system:serviceaccount:kube system:default”无法在命名空间“kube system”中列出configmaps

    官方文件中有漏洞吗?我读错了吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Nick_Kh    6 年前

    我不确定 --resource 在脚本中标记正确的语法,这里是否允许使用星号“*”,请看这个 issue 在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

    否则,请尝试为创建角色 tiller 在文件指导下的yaml文件中:

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

    此外,请记住,如果安装了 分蘖 在非默认命名空间中( default )需要指定命名空间 分蘖 当您调用 Helm 命令:

    $ 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"}