从 k8s 程序中读取 configmap
Read configmap from a k8s program
我有一个需要访问配置映射的 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
中名为 pod
和 configmap
的一些资源,但不包括 core
组中的真正 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
但是你需要一个一个地命名配置映射。它不支持任何通配符、正则表达式或任何东西。
我有一个需要访问配置映射的 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
中名为 pod
和 configmap
的一些资源,但不包括 core
组中的真正 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
但是你需要一个一个地命名配置映射。它不支持任何通配符、正则表达式或任何东西。