Bardziej bezpieczna odpowiedź
Zaakceptowana odpowiedź daje pełny dostęp administracyjny do Helm, co nie jest najlepszym rozwiązaniem pod względem bezpieczeństwa. Przy odrobinie pracy możemy ograniczyć dostęp Helma do określonej przestrzeni nazw. Więcej szczegółów w dokumentacji Helm .
$ kubectl create namespace tiller-world
namespace "tiller-world" created
$ kubectl create serviceaccount tiller --namespace tiller-world
serviceaccount "tiller" created
Zdefiniuj rolę, która pozwoli Tillerowi zarządzać wszystkimi zasobami tiller-world
w 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: ["*"]
Następnie uruchomić:
$ kubectl create -f role-tiller.yaml
role "tiller-manager" created
W 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
Następnie uruchomić:
$ kubectl create -f rolebinding-tiller.yaml
rolebinding "tiller-binding" created
Następnie możesz uruchomić helm init
instalację Tillera w tiller-world
przestrzeni nazw.
$ helm init --service-account tiller --tiller-namespace tiller-world
Teraz poprzedzaj wszystkie polecenia zmiennymi środowiskowymi --tiller-namespace tiller-world
lub ustaw je TILLER_NAMESPACE=tiller-world
w nich.
Więcej odpowiedzi na przyszłość
Przestań używać Tillera. Helm 3 całkowicie eliminuje potrzebę używania Rumpla. Jeśli używasz Helm 2, możesz użyć helm template
do wygenerowania yaml z wykresu Helm, a następnie uruchomić, kubectl apply
aby zastosować obiekty do klastra Kubernetes.
helm template --name foo --namespace bar --output-dir ./output ./chart-template
kubectl apply --namespace bar --recursive --filename ./output -o yaml
--clusterrole=cluster-admin
, co z pewnością rozwiąże problemy z uprawnieniami, ale może nie być poprawką, której potrzebujesz. Lepiej jest utworzyć własne konta usług, role (klastra) i powiązania ról (klastra) z dokładnymi uprawnieniami, których potrzebujesz.