Risposta più sicura
La risposta accettata fornisce l'accesso amministrativo completo a Helm, che non è la migliore soluzione dal punto di vista della sicurezza. Con un po 'più di lavoro, possiamo limitare l'accesso di Helm a un particolare spazio dei nomi. Maggiori dettagli nella documentazione di Helm .
$ kubectl create namespace tiller-world
namespace "tiller-world" created
$ kubectl create serviceaccount tiller --namespace tiller-world
serviceaccount "tiller" created
Definisci un ruolo che consenta a Tiller di gestire tutte le risorse tiller-world
come in 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: ["*"]
Quindi esegui:
$ kubectl create -f role-tiller.yaml
role "tiller-manager" created
In 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
Quindi esegui:
$ kubectl create -f rolebinding-tiller.yaml
rolebinding "tiller-binding" created
Successivamente puoi eseguire helm init
l'installazione di Tiller nello tiller-world
spazio dei nomi.
$ helm init --service-account tiller --tiller-namespace tiller-world
Ora anteponi tutti i comandi --tiller-namespace tiller-world
o impostati TILLER_NAMESPACE=tiller-world
nelle variabili d'ambiente.
Più risposta a prova di futuro
Smetti di usare Tiller. Helm 3 elimina completamente la necessità di Tiller. Se stai usando Helm 2, puoi usare helm template
per generare lo yaml dal tuo grafico Helm e quindi eseguire kubectl apply
per applicare gli oggetti al tuo cluster Kubernetes.
helm template --name foo --namespace bar --output-dir ./output ./chart-template
kubectl apply --namespace bar --recursive --filename ./output -o yaml
--clusterrole=cluster-admin
, il che risolverà sicuramente i problemi di autorizzazione, ma potrebbe non essere la soluzione che desideri. È meglio creare i propri account di servizio, ruoli (cluster) e rolebind (cluster) con le autorizzazioni esatte di cui si ha bisogno.