gpt4 book ai didi

azure - 从 k8s 程序读取 configmap

转载 作者:行者123 更新时间:2023-12-02 06:03:49 25 4
gpt4 key购买 nike

我有一个 go 程序需要访问配置映射,当使用以下 clusterRole 时出现错误禁止

kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: s-access
labels:
app.kubernetes.io/instance: te-mger
rules:
- verbs:
- get
- watch
- list
- update
apiGroups:
- dpt.com
resources:
- pods

现在,当我将其更改为以下内容时,它就可以工作了(将 apiGroups '')和 configmaps 添加到 resources由于这是一种解决方法,我们应该为长期解决方案做什么

kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: s-access
labels:
app.kubernetes.io/instance: te-mger
rules:
- verbs:
- get
- watch
- list
- update
apiGroups:
- dpt.com
- ''
resources:
- pods
- configmaps

我阅读了以下内容,但没有帮助https://kubernetes.io/docs/reference/access-authn-authz/rbac/

我想避免使用apiGroups: ''

最佳答案

每个 Kubernetes 资源都是某个 API 组的一部分。 API 组定义了这些资源的可用路径。例如,您可以在 Kubernetes API 引用中找到它们(对于每个资源,您都有组、版本和种类)。

如您所见here ,例如对于 ConfigMap,组是core。引用资源时,需要在ClusterRole(或Role)中使用资源所属的组。这是正确指定您正在谈论的资源所必需的,因为资源名称本身不一定是唯一的,而只能与组组合使用。

通常情况下,组就写在那里,但对于 core 组,您通常只需将 "" 写在那里(如 here 中所述)。

所以在你的例子中,这个:

rules:
- verbs:
- get
- watch
- list
- update
apiGroups:
- dpt.com
resources:
- configmaps

将覆盖您自己的 API 组 dsp.com 中名为 podconfigmap 的一些资源,但不覆盖 中真正的 Kubernetes 资源>核心组。要覆盖它们,您需要指定正确的组,如下所示:

rules:
- verbs:
- get
- watch
- list
- update
apiGroups:
- ""
resources:
- configmaps

如果您只想授予对特定 ConfigMap 的访问权限,可以使用 resourceNames 字段。

rules:
- verbs:
- get
- watch
- list
- update
apiGroups:
- ""
resources:
- configmaps
resourceNames:
- my-config-map
- my-config-map

但是您需要将配置映射一一命名。它不支持任何通配符、正则表达式或任何东西。

关于azure - 从 k8s 程序读取 configmap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66877681/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com