在 GCP 上部署 Weaviate k8s 设置时,无法在 API 组中列出资源“configmaps”

2024-01-06

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

Run:

$ kubectl create -f rbac-config.yaml
$ helm init --service-account tiller --upgrade

注意:基于 Helm v2。


tl;dr:使用适合您集群的授权设置来设置 Helm,请参阅https://v2.helm.sh/docs/using_helm/#role-based-access-control 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/Tillerkube-system名称空间,因为如果没有指定其他参数,则这是默认值helm init。由于您尚未创建特定的服务帐户供 Tiller 使用,因此默认为default服务帐户。

既然您提到您正在 GCP 上运行,我认为这意味着您正在使用 GKE。 GKE 默认有角色授权 https://kubernetes.io/docs/reference/access-authn-authz/rbac/已启用。在 RBAC 设置中,默认情况下没有人拥有任何权限,所有权限都需要明确授予。

helm 文档列出了有关如何制作的几个选项Helm/Tiller 在启用 RBAC 的设置中工作 https://v2.helm.sh/docs/using_helm/#role-based-access-control。如果集群的唯一目的是运行 Weaviate,您可以选择最简单的选项:具有 cluster-admin 角色的服务帐户 https://v2.helm.sh/docs/using_helm/#example-service-account-with-cluster-admin-role。这里描述的过程本质上是为 Tiller 创建一个专用服务帐户,并添加所需的ClusterRoleBinding到现有的cluster-admin ClusterRole。请注意,这实际上使 Helm/Tiller 成为整个集群的管理员。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 GCP 上部署 Weaviate k8s 设置时,无法在 API 组中列出资源“configmaps” 的相关文章

  • Kubernetes 集群自动缩放器似乎不适用于 GKE?

    我定义了一个节点池 最小实例设置为 1 最大实例设置为 5 并启用了自动缩放 但它似乎并没有缩小规模 我已经封锁了一个节点 已经过去12个多小时了 没有待处理的 Pod 删除节点不会减少我自己的部署的副本数量 相关节点上运行以下 pod f
  • 如何为容器设置正确的 cpu 毫核?

    我想要优化配置 CPU 核心 而不会分配过多或不足 如何测量给定容器所需的 CPU 毫核 它还带来了一个问题 即代理将根据 CPU 消耗将多少流量发送到任何给定的 Pod 以便我们可以最佳地使用计算 目前我发送请求并进行监控 kubectl
  • 如何根据 Kubernetes / Docker 事件发送警报?

    是否可以根据 Kubernetes 集群内发生的事件以某种方式发送警报 到电子邮件 slack 特别是 如果 Pod 意外重新启动或 Pod 无法启动 那么获取警报将非常有用 同样 了解 Pod 的 CPU 使用率是否超过特定阈值并获取警报
  • Google Cloud Kubernetes 上任务队列的替代方案

    我发现任务队列主要用于App Engine标准环境 我正在将现有服务从 App Engine 迁移到 Kubernetes 任务队列的一个好的替代方案是什么 推送队列是当前正在使用的队列 我在线阅读文档并浏览了此链接 何时使用 PubSub
  • 允许 Kubernetes 用户列表/获取命名空间

    我有以下用户清单 我希望允许 myapp user 获取集群内所有命名空间的列表 根据我的查找 我应该创建一个 ClusterRole 但我无法真正找到足够的详细信息 是否有所有 apiGroup 以及相应资源和动词的列表 apiVersi
  • GKE 出现错误:ImagePullBackOff 和错误:ErrImagePull 错误

    当 kubectl 应用 yaml 将自定义构建的 docker 映像部署到 GCP 中的集群 编辑掉敏感信息 时 我收到以下错误 已尝试以下但没有运气 手动部署镜像 检查以确保防火墙规则允许 443 并且没有任何东西阻止它 尝试将容器注册
  • 无法使用 minikube 设置 Istio

    我按照 Istio 的官方文档为带有 minikube 的示例 bookinfo 应用程序设置了 Istio 但我得到了无法连接到服务器 net http TLS 握手超时错误 这些是我遵循的步骤 我安装了 kubectl 和 miniku
  • Kubernetes Web UI(仪表板)缺少图表

    我已经使用 Kubeadm v1 6 安装了 Docker v1 13 和 Kubernetes 然后我安装了 Web UI 仪表板 我可以访问它 但缺少 CPU 内存使用图 为什么会发生这种情况 对我来说 安装后使用图就起作用了heaps
  • AppEngine 警告 - OpenBLAS 警告 - 无法确定该系统上的 L2 缓存大小

    我尝试在 GC AppEngine 上部署应用程序 部署过程中没有错误 但应用程序无法运行 仅显示加载页面 日志中唯一一个奇怪的原始日志 OpenBLAS WARNING could not determine the L2 cache s
  • Kubernetes Ingress 在 nginx 反向代理后面运行

    我已经在可以从互联网访问的服务器上安装了 minikube 我创建了一个可用的 kubernetes 服务 gt kubectl get service myservice NAME CLUSTER IP EXTERNAL IP PORT
  • 无法在 GCP Cloud Scheduler 上创建作业

    当我尝试在 GCP Cloud Scheduler 中创建作业时 出现以下错误 error code 7 message 主体 用户或服务帐户 缺少资源 我的服务帐户 的 IAM 权限 iam serviceAccounts actAs 或
  • 如何退出项目?

    我找不到离开该项目的方法 该项目的所有者不是我 任何通过 IAM 执行此操作的尝试都不会成功 我希望该项目停止显示在我的帐户中 获得许可的项目成员resourcemanager projects setIamPolicy需要在项目上添加 删
  • 如何在 kubernetes 中将秘密标记为可选?

    来自文档 除非将秘密标记为可选 否则必须先创建秘密 然后再将其作为环境变量在 pod 中使用 引用不存在的 Secret 将阻止 pod 启动 如何将秘密标记为可选 您正在寻找的是 name ENV NAME valueFrom secre
  • 让我们加密证书颁发

    我正在尝试获取 Let s Encrypt 颁发的证书 已经过去了 3 个半小时 我不小心最初将我的 SecretName 设置为 echo tls 然后将其切换到我想使用的正确的 pandaist tls 我目前有这个 kubectl g
  • 多个值文件中包含多个列表的 Helm 图表

    我有一个包含以下内容的values yaml abc env name name01 value value01 name name02 value value02 我有另一个值文件values dev yaml 我在使用 f安装时添加它
  • K8s服务无法ping通

    我在 minikube 集群中有一个 k8s 服务 部署 名称amq in default命名空间 D20181472 argo k8s gms kubectl get svc all namespaces NAMESPACE NAME T
  • 如何通过 kubectl 代理访问此 Kubernetes 服务?

    我想通过以下方式访问我的 Grafana Kubernetes 服务kubectl 代理服务器 https kubernetes io docs user guide kubectl v1 7 proxy 但由于某种原因 即使我可以使其适用
  • 如何将 kubectl 配置文件与 ~/.kube/config 合并?

    有没有一个简单的kubectl命令采取kubeconfig文件 包含 cluster context user 并将其合并到 kube config 文件作为附加上下文 Do this export KUBECONFIG kube conf
  • 使用 Docker Desktop 调试本地部署到 Kubernetes 的应用程序的最佳方法是什么?

    我有使用 Docker 开发相对复杂的应用程序的经验 使用 Visual Studio 2019 调试应用程序非常容易 我只是将 docker compose yaml 设置为启动应用程序并开始调试 是否可以使用 Docker Deskto
  • 尽管具有适当的角色,GCP VM 实例仍无法从 Secret Manager 访问密钥

    我在 GCP 中创造了一些秘密Secret Manager服务 然后为了在本地计算机上访问这些秘密 我创建了一个service account and a JSON用于从我的本地计算机验证该服务帐户的密钥 我也授予了这个角色Secret M

随机推荐