Permisos de los componentes de servicio de Knative

En esta página se explican los permisos de control de acceso basado en roles (RBAC) que tienen los componentes de Knative Serving para mantener el acceso al clúster. Estos permisos son obligatorios y están habilitados de forma predeterminada en el servicio de Knative. No intentes inhabilitarlos.

Componentes Espacio de nombres Cuenta de servicio
activator knative-serving controlador
autoscaler knative-serving controlador
controller knative-serving controlador
webhook knative-serving controlador
storage-version-migration-serving knative-serving controlador
webhook knative-serving controlador
cloud-run-operator cloud-run-system cloud-run-operator

Ten en cuenta que la cuenta de servicio cloud-run-operator tiene el mismo conjunto de permisos que controller. El operador es el que implementa todos los componentes de Knative Serving, incluidas las definiciones de recursos personalizados y los controladores.

RBAC para cuentas de servicio de Knative Serving

Consulta las siguientes definiciones de apiGroup para saber qué permisos de control de acceso tiene cada recurso en Knative Serving para las cuentas de servicio controller y cloud-run-operator.

- apiGroups:
  - ""
  resources:
  - pods
  - secrets
  verbs:
  - deletecollection
- apiGroups:
  - ""
  resources:
  - nodes
  verbs:
  - get
  - watch
  - list
- apiGroups:
  - ""
  resources:
  - pods
  - namespaces
  - secrets
  - configmaps
  - endpoints
  - services
  - events
  - serviceaccounts
  verbs:
  - get
  - list
  - create
  - update
  - delete
  - patch
  - watch
- apiGroups:
  - ""
  resources:
  - endpoints/restricted
  verbs:
  - create
- apiGroups:
  - ""
  resources:
  - namespaces/finalizers
  verbs:
  - update
- apiGroups:
  - apps
  resources:
  - deployments
  - deployments/finalizers
  verbs:
  - get
  - list
  - create
  - update
  - delete
  - patch
  - watch
- apiGroups:
  - admissionregistration.k8s.io
  resources:
  - mutatingwebhookconfigurations
  - validatingwebhookconfigurations
  verbs:
  - get
  - list
  - create
  - update
  - delete
  - patch
  - watch
- apiGroups:
  - apiextensions.k8s.io
  resources:
  - customresourcedefinitions
  - customresourcedefinitions/status
  verbs:
  - get
  - list
  - create
  - update
  - delete
  - patch
  - watch
- apiGroups:
  - autoscaling
  resources:
  - horizontalpodautoscalers
  verbs:
  - get
  - list
  - create
  - update
  - delete
  - patch
  - watch
- apiGroups:
  - coordination.k8s.io
  resources:
  - leases
  verbs:
  - get
  - list
  - create
  - update
  - delete
  - patch
  - watch
- apiGroups:
  - admissionregistration.k8s.io
  resources:
  - validatingwebhookconfigurations
  verbs:
  - get
  - list
  - create
  - update
  - delete
  - patch
  - watch

En la siguiente tabla se indica cómo se usan los permisos de RBAC en Knative Serving.

  • view incluye los verbos get, list y watch.
  • Modificar incluye los verbos crear, actualizar, eliminar y parchear.
Permisos Motivos
Puede ver todos los secrets El webhook debe leer el secreto del espacio de nombres knative-serving. El controlador de asignación de dominio debe leer el secreto del certificado generado por la función TLS automática y, a continuación, copiarlo en el espacio de nombres gke-system.
Puede modificar pods El controlador DomainMapping debe crear un pod que se use para atender las solicitudes de la verificación HTTP01.
Puede modificar secrets El controlador de asignación de dominio necesita crear o actualizar el secreto del certificado. El webhook debe leer el secreto del espacio de nombres knative-serving.
Puede modificar configmaps Se usa en la función de URL predeterminada. El controlador debe actualizar el configmap "config-domain" en el espacio de nombres "knative-serving" para añadir la URL `nip.io`.
Puede modificar endpoints El controlador de servicio sin servidor necesita crear, actualizar o eliminar los endpoints. El controlador de ruta debe crear, actualizar o eliminar los endpoints.
Puede modificar services El controlador de ruta necesita crear, actualizar o eliminar un servicio. El controlador sin servidor necesita crear, actualizar o eliminar un servicio. El controlador de asignación de dominios debe crear un servicio para atender las solicitudes de verificación HTTP01.
Puede modificar events El controlador de servicio de Knative crea y emite eventos para los recursos gestionados por Knative.
Puede modificar serviceaccounts Knative Serving necesita leer una cuenta de servicio de forma indirecta.
Puede modificar endpoints/restricted Knative Serving necesita crear endpoints cuando RestrictedEndpointsAdmission está habilitado.
Puede modificar deployments El controlador de revisiones debe crear o actualizar un despliegue para el servicio de Knative.
Puede modificar mutatingwebhookconfiguration El webhook de Knative añade caBundle a los mutatingwebhookconfigurations propiedad de Knative.
Puede modificar validatingwebhookconfiguration El webhook de Knative añade caBundle a las validatingwebhookconfigurations propiedad de Knative.
Puede modificar customresourcedifinitions customresourcedefinitions/status El trabajo posterior a la instalación de Knative debe actualizar los CRDs relacionados con Knative a la versión v1.
Puede modificar horizontalpodautoscalers Knative admite el autoescalado basado en HPA.
Puede modificar namespace/finalizer El servicio de Knative debe definir ownerreference en el espacio de nombres de Knative-serving.