Resposta mais segura
A resposta aceita dá acesso de administrador total ao Helm, o que não é a melhor solução em termos de segurança. Com um pouco mais de trabalho, podemos restringir o acesso do Helm a um determinado namespace. Mais detalhes na documentação do Helm .
$ kubectl create namespace tiller-world
namespace "tiller-world" created
$ kubectl create serviceaccount tiller --namespace tiller-world
serviceaccount "tiller" created
Defina uma função que permita ao Tiller gerenciar todos os recursos tiller-world
em 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: ["*"]
Então corra:
$ kubectl create -f role-tiller.yaml
role "tiller-manager" created
Em 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
Então corra:
$ kubectl create -f rolebinding-tiller.yaml
rolebinding "tiller-binding" created
Depois disso, você pode executar helm init
para instalar o Tiller no tiller-world
namespace.
$ helm init --service-account tiller --tiller-namespace tiller-world
Agora prefixe todos os comandos com --tiller-namespace tiller-world
ou defina TILLER_NAMESPACE=tiller-world
em suas variáveis de ambiente.
Mais respostas à prova de futuro
Pare de usar o Tiller. O Helm 3 elimina completamente a necessidade do Leme. Se você estiver usando o Helm 2, poderá usar helm template
para gerar o yaml a partir do gráfico do Helm e, em seguida, executar kubectl apply
para aplicar os objetos ao cluster do Kubernetes.
helm template --name foo --namespace bar --output-dir ./output ./chart-template
kubectl apply --namespace bar --recursive --filename ./output -o yaml
--clusterrole=cluster-admin
, o que certamente corrigirá problemas de permissões, mas pode não ser a correção que você deseja. É melhor criar suas próprias contas de serviço, funções (cluster) e vinculações de funções (cluster) com as permissões exatas de que você precisa.