【问题标题】:Read configmap from a k8s program从 k8s 程序中读取 configmap
【发布时间】:2021-03-30 19:57:53
【问题描述】:

我有一个 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: ''

【问题讨论】:

  • 我想避免使用 apiGroups: '' 你不能!

标签: azure kubernetes azure-aks


【解决方案1】:

每个 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 的资源,但不包括来自 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

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

【讨论】:

  • 谢谢,但这不是太笼统吗? (使用"")不应该只对配置映射或特定配置映射更严格吗?这是我用过的,但我很害怕我可以冒一些风险,因为它是通用的......如果我在这里错了,请纠正我。谢谢!
  • 如果您只想授予对特定 ConfigMap 的访问权限,您可以使用 resourceNames 字段。我在答案中添加了一个示例。但它只能列出特定的名称,不能列出通配符、正则表达式或任何东西。
猜你喜欢
  • 2022-01-27
  • 2020-06-22
  • 2020-02-29
  • 2021-11-30
  • 1970-01-01
  • 2018-10-24
  • 2021-12-03
  • 2019-06-18
  • 2021-01-04
相关资源
最近更新 更多