Tengo un programa go que necesita acceder al mapa de configuración, cuando uso el siguiente clusterRole tenemos un error prohibido
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 Ahora, cuando lo cambio a lo siguiente, funciona (agregando apiGroups '') y configmaps de configuración a los resources Como esta es una solución alternativa, ¿qué debemos hacer para soluciones largas?
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 - configmapsLeí lo siguiente pero no ayudó https://kubernetes.io/docs/reference/access-authn-authz/rbac/
Quiero evitar usar apiGroups: ''
Cada recurso de Kubernetes es parte de algún grupo de API. El grupo API define la ruta en la que están disponibles estos recursos. Puede encontrarlos, por ejemplo, en la referencia de la API de Kubernetes (para cada recurso, tiene el grupo, la versión y el tipo).
Como puede ver aquí , por ejemplo, para ConfigMap el grupo es core . El grupo al que pertenece el recurso debe usarse en el ClusterRole (o Rol) al hacer referencia a los recursos. Eso es necesario para especificar correctamente de qué recurso está hablando, ya que el nombre del recurso no es necesariamente único por sí solo, sino solo en combinación con el grupo.
Normalmente, el grupo solo se escribe allí, pero para el grupo core , normalmente solo se escribe allí "" (como se describe aquí ).
Entonces, en tus ejemplos, esto:
rules: - verbs: - get - watch - list - update apiGroups: - dpt.com resources: - configmaps cubriría algunos recursos denominados pod y configmap de su propio grupo de API dsp.com , pero no los recursos reales de Kubernetes del grupo core . Para cubrirlos, debe especificar el grupo correcto de esta manera:
rules: - verbs: - get - watch - list - update apiGroups: - "" resources: - configmaps Si desea otorgar acceso solo a ConfigMap específico, puede usar el campo resourceNames .
rules: - verbs: - get - watch - list - update apiGroups: - "" resources: - configmaps resourceNames: - my-config-map - my-config-mapPero debe nombrar los mapas de configuración uno por uno. No admite comodines, expresiones regulares ni nada.