Helm list: не может отображать конфигурационные файлы в пространстве имен "kube-system"

Я установил шлейф 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?

Ответ 1

Однажды эти команды:

kubectl create serviceaccount --namespace kube-system tiller
kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'      
helm init --service-account tiller --upgrade

были запущены, проблема была решена.

Ответ 2

Более безопасный ответ

Принятый ответ дает полный доступ администратора к Helm, что не является лучшим решением с точки зрения безопасности. Приложив немного больше работы, мы можем ограничить доступ Helm к определенному пространству имен. Подробнее в документации руля.

$ kubectl create namespace tiller-world
namespace "tiller-world" created
$ kubectl create serviceaccount tiller --namespace tiller-world
serviceaccount "tiller" created

Определите роль, которая позволит Tiller управлять всеми ресурсами в tiller-world, как в 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: ["*"]

Затем запустите:

$ kubectl create -f role-tiller.yaml
role "tiller-manager" created

В 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

Затем запустите:

$ kubectl create -f rolebinding-tiller.yaml
rolebinding "tiller-binding" created

После этого вы можете запустить helm init для установки Tiller в пространство имен tiller-world.

$ helm init --service-account tiller --tiller-namespace tiller-world

Теперь добавьте префикс ко всем командам --tiller-namespace tiller-world или установите TILLER_NAMESPACE=tiller-world в ваших переменных среды.

Более надежный ответ в будущем

Прекратите использовать Тиллер. Helm 3 полностью устраняет необходимость в Tiller. Если вы используете Helm 2, вы можете использовать helm template, чтобы сгенерировать yaml из диаграммы Helm, а затем запустить kubectl apply, чтобы применить объекты к вашему кластеру Kubernetes.

helm template --name foo --namespace bar --output-dir ./output ./chart-template
kubectl apply --namespace bar --recursive --filename ./output -o yaml

Ответ 3

Helm работает с учетной записью "по умолчанию". Вы должны предоставить разрешения на это.

Только для чтения:

kubectl create rolebinding default-view --clusterrole=view --serviceaccount=kube-system:default --namespace=kube-system

Для доступа администратора: например, для установки пакетов.

kubectl create clusterrolebinding add-on-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:default

Ответ 4

Учетная запись по умолчанию не имеет прав доступа к API. Для Helm, вероятно, должна быть назначена учетная запись службы, а для этой учетной записи службы - разрешения API. См. Документацию RBAC для предоставления разрешений учетным записям служб: https://kubernetes.io/docs/admin/authorization/rbac/#service-account-permissions

Ответ 5

Как вы сказали, это проблема RABC. Я думаю, что эта страница полезна!

Ответ 6

apiVersion: v1
kind: ServiceAccount
metadata:
  name: tiller
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: tiller
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: tiller
    namespace: kube-system

kubectl apply -f your-config-file-name.yaml

а затем обновите установку helm для использования serviceAccount:

helm init --service-account tiller --upgrade

Ответ 7

Я получил эту ошибку при попытке установить тиллер в автономном режиме, я думал, что учетной записи службы "тиллер" не было достаточно прав, но оказалось, что сетевая политика блокировала связь между тиллером и api-сервером.

Решение состояло в том, чтобы создать сетевую политику для румпеля, позволяющую всю исходящую связь румпеля

Ответ 8

Я использовал следующий метод, предоставленный * suresh Palemoni *, как я могу отменить эти изменения?

Для доступа администратора: например, для установки пакетов. kubectl создать кластерное связывание add-on-cluster-admin --clusterrole = cluster-admin --serviceaccount = kube-system: по умолчанию

(на самом деле я хотел бы прокомментировать, но я не могу из-за репутации...)