Более безопасный ответ
Принятый ответ дает полный доступ администратора к Helm, что не является лучшим решением с точки зрения безопасности. Немного поработав, мы можем ограничить доступ Helm к определенному пространству имен. Подробнее в документации Helm .
$ kubectl create namespace tiller-world
namespace "tiller-world" created
$ kubectl create serviceaccount tiller --namespace tiller-world
serviceaccount "tiller" created
Определите роль, которая позволяет Tiller управлять всеми ресурсами, tiller-world
например role-tiller.yaml
:
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: tiller-manager
namespace: tiller-world
rules:
- apiGroups: ["", "batch", "extensions", "apps"]
resources: ["*"]
verbs: ["*"]
Затем запустите:
$ kubectl create -f role-tiller.yaml
role "tiller-manager" created
В rolebinding-tiller.yaml
,
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: tiller-binding
namespace: tiller-world
subjects:
- kind: ServiceAccount
name: tiller
namespace: tiller-world
roleRef:
kind: Role
name: tiller-manager
apiGroup: rbac.authorization.k8s.io
Затем запустите:
$ kubectl create -f rolebinding-tiller.yaml
rolebinding "tiller-binding" created
После этого вы можете запустить helm init
установку Tiller в tiller-world
пространстве имен.
$ helm init --service-account tiller --tiller-namespace tiller-world
Теперь префикс всех команд с помощью переменных среды --tiller-namespace tiller-world
или установленных TILLER_NAMESPACE=tiller-world
в них.
Более перспективный ответ
Прекратите использовать Tiller. Helm 3 полностью устраняет необходимость в Tiller. Если вы используете Helm 2, вы можете использовать его helm template
для генерации yaml из вашей диаграммы Helm, а затем запустить, kubectl apply
чтобы применить объекты к вашему кластеру Kubernetes.
helm template --name foo --namespace bar --output-dir ./output ./chart-template
kubectl apply --namespace bar --recursive --filename ./output -o yaml
--clusterrole=cluster-admin
, которое, безусловно, устранит проблемы с разрешениями, но может быть не тем исправлением, которое вам нужно. Лучше создать свои собственные учетные записи служб, (кластерные) роли и (кластерные) ролевые привязки с точными разрешениями, которые вам нужны.