Невозможно указать ресурсы "configmaps" в группе API при развертывании настройки Weaviate k8s на GCP

При запуске (на GCP):

$ helm upgrade \
  --values ./values.yaml \
  --install \
  --namespace "weaviate" \
  "weaviate" \
  weaviate.tgz

Он возвращается;

UPGRADE FAILED
Error: configmaps is forbidden: User "system:serviceaccount:kube-system:default" cannot list resource "configmaps" in API group "" in the namespace "ku
be-system"
Error: UPGRADE FAILED: configmaps is forbidden: User "system:serviceaccount:kube-system:default" cannot list resource "configmaps" in API group "" in t
he namespace "kube-system"

ОБНОВЛЕНИЕ: на основе решения

$ vim rbac-config.yaml

Добавьте в файл:

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 create -f rbac-config.yaml
$ helm init --service-account tiller --upgrade

Примечание: на основе Helm v2.

1 ответ

Решение

tl;dr: Настройте Helm с соответствующими настройками авторизации для вашего кластера, см. https://v2.helm.sh/docs/using_helm/

Длинный ответ

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

Следующая ошибка

Error: configmaps is forbidden: User "system:serviceaccount:kube-system:default" cannot list resource "configmaps" in API group "" in the namespace "ku
be-system"

означает, что учетная запись службы по умолчанию в kube-systemпространство имен не имеет разрешений. Я предполагаю, что вы установили Helm/Tiller вkube-system пространство имен, так как это значение по умолчанию, если другие аргументы не указаны в helm init. Поскольку вы не создали конкретную учетную запись службы для Tiller, чтобы использовать ее, по умолчанию используетсяdefault сервисный аккаунт.

Поскольку вы упоминаете, что используете GCP, я предполагаю, что это означает, что вы используете GKE. В GKE по умолчанию включена авторизация RBAC. При настройке RBAC по умолчанию никто не имеет никаких прав, все права должны быть предоставлены явно.

В документации helm перечислено несколько вариантов того, как заставить Helm/Tiller работать в настройках с поддержкой RBAC. Если единственная цель кластера - запуск Weaviate, вы можете выбрать самый простой вариант: Учетная запись службы с ролью администратора кластера. Описанный здесь процесс, по сути, создает специальную учетную запись службы для Tiller и добавляет необходимыеClusterRoleBinding к существующим cluster-admin ClusterRole. Обратите внимание, что это фактически делает Helm/Tiller администратором всего кластера.

Если вы запускаете мультитенантный кластер и / или хотите ограничить разрешения Tillers определенным пространством имен, вам необходимо выбрать одну из альтернатив.

Другие вопросы по тегам