【问题标题】:Sole Tiller to deploy multiple namespace on KubernetesSole Tiller 在 Kubernetes 上部署多个命名空间
【发布时间】:2019-03-15 00:37:26
【问题描述】:

https://github.com/helm/helm/blob/master/docs/rbac.md 找不到,Tiller 可以在其他多个命名空间上安装图表吗?

我希望 kube-system 命名空间上有一个 Tiller,并且还有多个命名空间:namespaceA、namespaceB、namespaceC、...。

最后我希望我可以将 nginx 部署到多个命名空间,例如:

helm init --service-account tiller --tiller-namespace kube-system
helm install nginx --tiller-namespace kube-system --namespace namespaceA
helm install nginx --tiller-namespace kube-system --namespace namespaceB

我想知道这是否可能以及如何设置服务帐户、角色和角色绑定。

谢谢。

【问题讨论】:

    标签: kubernetes kubernetes-helm


    【解决方案1】:

    可以使用 clustetRoles 而不是 Roles 来完成,这样您就可以在所有命名空间中授予权限。 clusterrole、clusterrolebinding 和 serviceaccount 代码为:

    kind: ClusterRole
    apiVersion: rbac.authorization.k8s.io/v1beta1
    metadata:
      name: tiller-manager
    rules:
    - apiGroups: ["", "batch", "extensions", "apps"]
      resources: ["*"]
      verbs: ["*"]
    ---
    kind: ClusterRoleBinding
    apiVersion: rbac.authorization.k8s.io/v1beta1
    metadata:
      name: tiller-binding
    subjects:
    - kind: ServiceAccount
      name: tiller
      namespace: kube-system
    roleRef:
      kind: ClusterRole
      name: tiller-manager
      apiGroup: rbac.authorization.k8s.io
    ---
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: tiller
      namespace: kube-system
    

    如果您只想授予少数命名空间的权限,则应在每个命名空间中创建一个角色绑定,如下所示:

    kind: RoleBinding
    apiVersion: rbac.authorization.k8s.io/v1beta1
    metadata:
      name: tiller-binding
      namespace: namespaceA
    subjects:
    - kind: ServiceAccount
      name: tiller
      namespace: kube-system
    roleRef:
      kind: ClusterRole
      name: tiller-manager
      apiGroup: rbac.authorization.k8s.io
    

    【讨论】:

    • 感谢您的友好指导。是的,简单的答案是使用 ClusterRole。我更喜欢使用 Role,因为 Tiller ServiceAccount 不应该在 kube-system 命名空间上操作资源。那有意义吗? kind:角色元数据:名称:namespaceA-tiller-manager 名称空间:namespaceA(snip)--- kind:RoleBinding 元数据:名称:namespaceA-tiller-binding 名称空间:namespaceA 主题:- 种类:ServiceAccount 名称:tiller 名称空间:namespaceA(snip )
    • 是的,您可以为每个命名空间定义一个角色 + 角色绑定,或者只定义 clusterRole 并将其授予具有角色绑定的特定命名空间(参见我的最后一段代码)。结果是一样的,clusterrole 只能在带有角色绑定的命名空间中工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-08
    • 2021-08-11
    • 2021-12-06
    • 2018-09-08
    • 2019-10-01
    • 1970-01-01
    • 2019-09-27
    相关资源
    最近更新 更多