Excluye espacios de nombres del Controlador de políticas

En esta página, se describe cómo configurar espacios de nombres exentos en el controlador de políticas.

Los espacios de nombres exentos quitan un espacio de nombres de la aplicación del webhook de admisión con el controlador de políticas, pero cualquier incumplimiento se sigue informando en la auditoría. Si no configuras espacios de nombres, solo el espacio de nombres gatekeeper-system está preconfigurado como exento de la aplicación del webhook de admisión del controlador de políticas.

Configura espacios de nombres exentos

Configurar un espacio de nombres exento te permite aplicar la etiqueta admission.gatekeeper.sh/ignore para eximir el espacio de nombres de la aplicación del webhook de admisión del controlador de políticas. Si más adelante quitas un espacio de nombres que se puede excluir, el controlador de políticas no quitará la etiqueta admission.gatekeeper.sh/ignore del espacio de nombres.

Exime espacios de nombres de la aplicación

Puedes eximir los espacios de nombres durante la instalación del controlador de políticas o después de la instalación. En el siguiente proceso, se muestra cómo eximir espacios de nombres después de la instalación.

Console

  1. En la consola de Google Cloud, ve a la página Política de GKE Enterprise en la sección Administración de posturas.

    Ir a la política

  2. En la pestaña Configuración, en la tabla del clúster, selecciona Editar en la columna Editar configuración.
  3. Expande el menú Edit Policy Controller configuration.
  4. En el campo Eximir espacios de nombres, proporciona una lista de espacios de nombres válidos. Todas las políticas ignoran los objetos de estos espacios de nombres. No es necesario que los espacios de nombres existan todavía.
  5. Selecciona Guardar cambios.

Controlador de políticas de gcloud

Para agregar espacios de nombres a la lista de espacios de nombres que pueden estar exentos de la aplicación forzosa por el webhook de admisión, ejecuta el siguiente comando:

  gcloud container fleet policycontroller update \
    --memberships=MEMBERSHIP_NAME \
    --exemptable-namespaces=[NAMESPACE_LIST]

Reemplaza lo siguiente:

  • MEMBERSHIP_NAME: Es el nombre de la membresía del clúster registrado en el que se excluirán los espacios de nombres. Puedes especificar varias membresías separadas por comas.
  • NAMESPACE_LIST: Es una lista de espacios de nombres separados por comas que deseas que el controlador de políticas exima de la aplicación.

Este comando exime a los recursos solo del webhook de admisión. Los recursos aún se auditan. Para eximir los espacios de nombres de la auditoría, configura la exención a nivel del paquete de políticas:

  gcloud container fleet policycontroller content bundles set BUNDLE_NAME \
    --memberships=MEMBERSHIP_NAME \
    --exempted-namespaces=[NAMESPACE_LIST]

Reemplaza lo siguiente:

  • BUNDLE_NAME por el nombre del paquete de políticas que deseas actualizar con espacios de nombres exentos
  • MEMBERSHIP_NAME: Es el nombre de la membresía del clúster registrado en el que se excluirán los espacios de nombres. Puedes especificar varias membresías separadas por comas.
  • NAMESPACE_LIST: Es una lista de espacios de nombres separados por comas que deseas que el controlador de políticas exima de la aplicación.

gcloud ConfigManagement

  1. Para eximir un espacio de nombres de la aplicación, agrega el nombre del espacio de nombres en spec.policyController.exemptableNamespaces:

    # apply-spec.yaml
    
    applySpecVersion: 1
    spec:
      # Set to true to install and enable Policy Controller
      policyController:
        enabled: true
        exemptableNamespaces: ["NAMESPACE_NAME"]
    ...
    

    Reemplaza NAMESPACE_NAME por el nombre del espacio de nombres que deseas excluir de la aplicación forzosa.

    También puedes eximir varios espacios de nombres. Por ejemplo, para agregar los espacios de nombres not-applicable y also-not-applicable, deberías aplicar el siguiente manifiesto:

    # apply-spec.yaml
    
    applySpecVersion: 1
    spec:
      # Set to true to install and enable Policy Controller
      policyController:
        enabled: true
        exemptableNamespaces: ["not-applicable","also-not-applicable"]
    ...
    
  2. Aplica los cambios al archivo apply-spec.yaml:

     gcloud beta container fleet config-management apply \
         --membership=MEMBERSHIP_NAME \
         --config=CONFIG_YAML \
         --project=PROJECT_ID
    

    Reemplaza lo siguiente:

    • MEMBERSHIP_NAME: Agrega el clúster registrado al que deseas aplicar esta configuración. Si registraste el clúster en la consola de Google Cloud, el nombre de la membresía es el mismo que el de tu clúster.
    • CONFIG_YAML: Agrega la ruta de acceso a tu archivo apply-spec.yaml.
    • PROJECT_ID: Agrega ID de tu proyecto.
  3. Etiqueta tu espacio de nombres exento para que el webhook de admisión del controlador de políticas no aplique su contenido:

    kubectl label namespace NAMESPACE_NAME "admission.gatekeeper.sh/ignore=true"
    

    Reemplaza NAMESPACE_NAME por el nombre del espacio de nombres que deseas excluir de la aplicación forzosa.

Espacios de nombres para excluir de la aplicación

Estos son algunos espacios de nombres que Google Kubernetes Engine (GKE) y los productos relacionados podrían crear. Es recomendable que las eximas de la aplicación para evitar un impacto no deseado:

- anthos-creds
- anthos-identity-service
- apigee
- apigee-system
- asm-system
- capi-kubeadm-bootstrap-system
- capi-system
- cert-manager
- cnrm-system
- config-management-monitoring
- config-management-system
- gke-connect
- gke-gmp-system
- gke-managed-cim
- gke-managed-filestorecsi
- gke-managed-metrics-server
- gke-managed-system
- gke-system
- gmp-public
- gmp-system
- hnc-system
- istio-system
- kube-node-lease
- kube-public
- kube-system
- poco-trial
- resource-group-system
- vm-system