Я установил helm 2.6.2 в кластере kubernetes 8. helm init
работал нормально. но когда я запускаю helm list
его, выдает эту ошибку.
helm list
Error: configmaps is forbidden: User "system:serviceaccount:kube-system:default" cannot list configmaps in the namespace "kube-system"
Как исправить это сообщение об ошибке RABC?
kubernetes
kubernetes-helm
sfgroups
источник
источник
--clusterrole=cluster-admin
, которое, безусловно, устранит проблемы с разрешениями, но может быть не тем исправлением, которое вам нужно. Лучше создать свои собственные учетные записи служб, (кластерные) роли и (кластерные) ролевые привязки с точными разрешениями, которые вам нужны.The accepted answer gives full admin access to Helm which is not the best solution security wise
(см. stackoverflow.com/a/53277281/2777965 ).kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'
я получаюError from server (NotFound): deployments.extensions "tiller-deploy" not found
Более безопасный ответ
Принятый ответ дает полный доступ администратора к Helm, что не является лучшим решением с точки зрения безопасности. Немного поработав, мы можем ограничить доступ Helm к определенному пространству имен. Подробнее в документации Helm .
Определите роль, которая позволяет Tiller управлять всеми ресурсами,
tiller-world
напримерrole-tiller.yaml
:Затем запустите:
В
rolebinding-tiller.yaml
,Затем запустите:
После этого вы можете запустить
helm init
установку Tiller вtiller-world
пространстве имен.Теперь префикс всех команд с помощью переменных среды
--tiller-namespace tiller-world
или установленныхTILLER_NAMESPACE=tiller-world
в них.Более перспективный ответ
Прекратите использовать Tiller. Helm 3 полностью устраняет необходимость в Tiller. Если вы используете Helm 2, вы можете использовать его
helm template
для генерации yaml из вашей диаграммы Helm, а затем запустить,kubectl apply
чтобы применить объекты к вашему кластеру Kubernetes.источник
--tiller-namespace tiller-world
или установитьTILLER_NAMESPACE=tiller-world
в переменных среды.Helm работает с учетной записью службы по умолчанию. Вы должны предоставить ему разрешения.
Для разрешений только для чтения:
Для доступа администратора: Например: для установки пакетов.
источник
kubectl create clusterrolebinding add-on-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:default
, а затем бегаhelm list
я все еще получаюError: configmaps is forbidden: User "system:serviceaccount:tiller:default" cannot list configmaps in the namespace "tiller": no RBAC policy matched
Сервисный аккаунт по умолчанию не имеет разрешений API. Скорее всего, Helm необходимо назначить учетную запись службы, а этой учетной записи службы предоставить разрешения API. См. Документацию RBAC для предоставления разрешений учетным записям служб: https://kubernetes.io/docs/admin/authorization/rbac/#service-account-permissions
источник
kubectl apply -f your-config-file-name.yaml
а затем обновите установку Helm, чтобы использовать serviceAccount:
helm init --service-account tiller --upgrade
источник
Я получил эту ошибку при попытке установить tiller в автономном режиме, я думал, что у учетной записи службы tiller недостаточно прав, но оказалось, что сетевая политика блокирует связь между tiller и api-сервером.
Решением было создать сетевую политику для румпеля, разрешающую все исходящие коммуникации румпеля.
источник
export TILLER_NAMESPACE=<your-tiller-namespace>
решил это за меня, если<your-tiller-namespace>
нетkube-system
. Это указывает клиенту Helm на правое пространство имен Tiller.источник
Если вы используете кластер EKS от AWS и столкнулись с запрещенной проблемой ( например :
forbidden: User ... cannot list resource "jobs" in API group "batch" in the namespace "default"
тогда это сработало для меня:Решение:
источник