Ich habe Helm 2.6.2 auf dem Kubernetes 8-Cluster installiert. helm init
hat gut funktioniert. aber wenn ich helm list
es starte, gibt es diesen Fehler.
helm list
Error: configmaps is forbidden: User "system:serviceaccount:kube-system:default" cannot list configmaps in the namespace "kube-system"
Wie behebt man diese RABC-Fehlermeldung?
kubernetes
kubernetes-helm
sfgroups
quelle
quelle
--clusterrole=cluster-admin
, die sicherlich Berechtigungsprobleme beheben, aber möglicherweise nicht die gewünschte Lösung sind. Es ist besser, eigene Dienstkonten, (Cluster-) Rollen und (Cluster-) Rollenbindungen mit genau den Berechtigungen zu erstellen, die Sie benötigen.The accepted answer gives full admin access to Helm which is not the best solution security wise
(Siehe stackoverflow.com/a/53277281/2777965 ).kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'
bekomme ichError from server (NotFound): deployments.extensions "tiller-deploy" not found
Sicherere Antwort
Die akzeptierte Antwort gibt dem Administrator vollen Zugriff auf Helm, was in Bezug auf die Sicherheit nicht die beste Lösung ist. Mit etwas mehr Arbeit können wir Helms Zugriff auf einen bestimmten Namespace einschränken. Weitere Details in der Helm-Dokumentation .
Definieren Sie eine Rolle, mit der Tiller alle Ressourcen
tiller-world
wie folgt verwalten kannrole-tiller.yaml
:Dann renne:
In
rolebinding-tiller.yaml
,Dann renne:
Anschließend können Sie
helm init
Tiller imtiller-world
Namespace installieren .Stellen Sie nun allen Befehlen Ihre Umgebungsvariablen voran
--tiller-namespace tiller-world
oder legenTILLER_NAMESPACE=tiller-world
Sie sie fest.Weitere zukunftssichere Antwort
Verwenden Sie Tiller nicht mehr. Helm 3 macht Tiller komplett überflüssig. Wenn Sie Helm 2 verwenden, können Sie
helm template
das Yaml aus Ihrem Helmdiagramm generieren und dann ausführenkubectl apply
, um die Objekte auf Ihren Kubernetes-Cluster anzuwenden.quelle
--tiller-namespace tiller-world
oder diese festlegen müssenTILLER_NAMESPACE=tiller-world
.Helm läuft mit "Standard" -Dienstkonto. Sie sollten Berechtigungen dafür bereitstellen.
Für schreibgeschützte Berechtigungen:
Für den Administratorzugriff: ZB: um Pakete zu installieren.
quelle
kubectl create clusterrolebinding add-on-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:default
und dann laufenhelm list
bekomme ich immer nochError: configmaps is forbidden: User "system:serviceaccount:tiller:default" cannot list configmaps in the namespace "tiller": no RBAC policy matched
Das Standard-Servicekonto verfügt nicht über API-Berechtigungen. Helm muss wahrscheinlich ein Dienstkonto zugewiesen werden, und diesem Dienstkonto müssen API-Berechtigungen erteilt werden. Informationen zum Erteilen von Berechtigungen für Dienstkonten finden Sie in der RBAC-Dokumentation: https://kubernetes.io/docs/admin/authorization/rbac/#service-account-permissions
quelle
kubectl apply -f your-config-file-name.yaml
und aktualisieren Sie dann die Helminstallation, um serviceAccount zu verwenden:
helm init --service-account tiller --upgrade
quelle
Beim Versuch, Pinne im Offline-Modus zu installieren, ist dieser Fehler aufgetreten. Ich dachte, das Dienstkonto "Pinne" habe nicht genügend Rechte, aber es stellte sich heraus, dass eine Netzwerkrichtlinie die Kommunikation zwischen Pinne und dem API-Server blockierte.
Die Lösung bestand darin, eine Netzwerkrichtlinie für die Pinne zu erstellen, die die gesamte Ausgangskommunikation der Pinne ermöglicht
quelle
export TILLER_NAMESPACE=<your-tiller-namespace>
löste es für mich, wenn<your-tiller-namespace>
nichtkube-system
. Dies zeigt den Helm-Client auf den richtigen Tiller-Namespace.quelle
Wenn Sie einen EKS-Cluster von AWS verwenden und mit dem verbotenen Problem konfrontiert sind ( z. B .:
forbidden: User ... cannot list resource "jobs" in API group "batch" in the namespace "default"
Dann hat dies bei mir funktioniert:Lösung:
quelle