Alb*_*rto 3 azure kubernetes azure-aks
I\xe2\x80\x99ve 一个 go 程序,需要访问配置映射,当使用以下 clusterRole 时,我们得到错误禁止
\nkind: ClusterRole\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n name: s-access\n labels:\n app.kubernetes.io/instance: te-mger\nrules:\n - verbs:\n - get\n - watch\n - list\n - update\n apiGroups:\n - dpt.com\n resources:\n - pods\nRun Code Online (Sandbox Code Playgroud)\n现在,当我将其更改为以下内容时,它就可以工作了(添加 apiGroups \'\')并configmaps添加到resources\n由于这是一种解决方法,我们应该为长期解决方案做什么
kind: ClusterRole\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n name: s-access\n labels:\n app.kubernetes.io/instance: te-mger\nrules:\n - verbs:\n - get\n - watch\n - list\n - update\n apiGroups:\n - dpt.com\n - \'\'\n resources:\n - pods\n - configmaps\nRun Code Online (Sandbox Code Playgroud)\n我阅读了以下内容,但没有帮助https://kubernetes.io/docs/reference/access-authn-authz/rbac/
\n我想避免使用apiGroups: \'\'
\n每个 Kubernetes 资源都是某个 API 组的一部分。API 组定义了这些资源的可用路径。例如,您可以在 Kubernetes API 参考中找到它们(对于每个资源,您都有组、版本和种类)。
正如您在这里所看到的,例如对于 ConfigMap,该组是core. 引用资源时,需要在ClusterRole(或Role)中使用资源所属的组。这是正确指定您正在谈论的资源所必需的,因为资源名称本身不一定是唯一的,而只能与组组合使用。
通常情况下,组只是写在那里,但对于core组,您通常只是放在那里(""如此处所述)。
所以在你的例子中,这个:
rules:
- verbs:
- get
- watch
- list
- update
apiGroups:
- dpt.com
resources:
- configmaps
Run Code Online (Sandbox Code Playgroud)
将涵盖您自己的 API 组中pod指定的一些资源,但不涵盖该组中真正的 Kubernetes 资源。要覆盖它们,您需要指定正确的组,如下所示:configmapdsp.comcore
rules:
- verbs:
- get
- watch
- list
- update
apiGroups:
- ""
resources:
- configmaps
Run Code Online (Sandbox Code Playgroud)
如果您只想授予对特定 ConfigMap 的访问权限,则可以使用该resourceNames字段。
rules:
- verbs:
- get
- watch
- list
- update
apiGroups:
- ""
resources:
- configmaps
resourceNames:
- my-config-map
- my-config-map
Run Code Online (Sandbox Code Playgroud)
但您需要将配置映射一一命名。它不支持任何通配符、正则表达式或任何东西。
| 归档时间: |
|
| 查看次数: |
248 次 |
| 最近记录: |