Настройка Helm RBAC для пространства имен - PullRequest
0 голосов
/ 15 ноября 2018

Я следую официальной документации Helm для «Развернуть Tiller в пространстве имен, ограниченном развертыванием ресурсов только в этом пространстве имен».Вот мой сценарий bash:

Namespace="$1"

kubectl create namespace $Namespace
kubectl create serviceaccount "tiller-$Namespace" --namespace $Namespace
kubectl create role "tiller-role-$Namespace" /
    --namespace $Namespace /
    --verb=* /
    --resource=*.,*.apps,*.batch,*.extensions
kubectl create rolebinding "tiller-rolebinding-$Namespace" /
    --namespace $Namespace /
    --role="tiller-role-$Namespace" /
    --serviceaccount="$Namespace:tiller-$Namespace"
helm init /
    --service-account "tiller-$Namespace" /
    --tiller-namespace $Namespace
    --override "spec.template.spec.containers[0].command'='{/tiller,--storage=secret}"
    --upgrade
    --wait

Запуск helm upgrade выдает мне следующую ошибку:

Ошибка: СБОЙ ОБНОВЛЕНО: configmaps запрещена: Пользователь "system: serviceaccount: kube-system: default "не может перечислить конфигурации в пространстве имен" kube-system "

Есть ли ошибка в официальной документации?Я прочитал это неправильно?

1 Ответ

0 голосов
/ 16 ноября 2018

Я не уверен, что --resource пометит правильный синтаксис в вашем скрипте, разрешены ли здесь символы звездочки "*", посмотрите на эту проблему , сообщенную на GitHub.

$ kubectl create role "tiller-role-$Namespace" \
--namespace $Namespace \
--verb=* \
--resource=*.,*.apps,*.batch,*.extensions
the server doesn't have a resource type "*"

Но вы можете проверить этот объект роли в вашем кластере:

kubectl get role tiller-role-$Namespace -n $Namespace -o yaml

В противном случае попробуйте создать роль для tiller в файле yaml, как указано в документации:

kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: tiller-manager
  namespace: tiller-world
rules:
- apiGroups: ["", "batch", "extensions", "apps"]
  resources: ["*"]
  verbs: ["*"]

Кроме того, имейте в виду, что если вы установили tiller в пространство имен не по умолчанию (default), необходимо указать пространство имен, в котором находится tiller, при вызове команды Helm:

$ helm --tiller-namespace $Namespace version
Client: &version.Version{SemVer:"v2.11.0", GitCommit:"2e55dbe1fdb5fdb96b75ff144a339489417b146b", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.11.0", GitCommit:"2e55dbe1fdb5fdb96b75ff144a339489417b146b", GitTreeState:"clean"}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...