3

运行时(在 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。

4

1 回答 1

3

tl;dr:使用适合集群的授权设置设置 Helm,请参阅https://v2.helm.sh/docs/using_helm/#role-based-access-control

长答案

您的体验并非特定于 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,您可以选择最简单的选项:具有 cluster-admin 角色的服务帐户。此处描述的过程实质上为 Tiller 创建了一个专用服务帐户,并将所需的服务添加ClusterRoleBinding到现有的cluster-admin ClusterRole. 请注意,这有效地使 Helm/Tiller 成为整个集群的管理员。

如果您正在运行多租户集群和/或希望将 Tillers 权限限制为特定命名空间,则需要选择其中一种替代方法。

于 2019-10-22T10:04:06.463 回答