唯一的耕种机,可在Kubernetes上部署多个命名空间

时间:2018-10-10 07:03:41

标签: kubernetes kubernetes-helm

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

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

谢谢。

1 个答案:

答案 0 :(得分:2)

可以使用clustetRoles代替Roles来完成,这样您就可以在所有命名空间中授予权限。 clusterrole,clusterrolebinding和服务帐户代码为:

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