Instala el controlador de políticas

En esta página, se muestra cómo instalar el Controlador de políticas. El Controlador de políticas verifica, audita y aplica el cumplimiento de tus clústeres con las políticas relacionadas con la seguridad, las regulaciones o las reglas comerciales.

El controlador de políticas está disponible si usas Anthos o Google Kubernetes Engine (GKE). Con GKE, el controlador de políticas es una función pagada. Para obtener más información, consulta Precios.

Antes de comenzar

Antes de comenzar, asegúrate de haber realizado las siguientes tareas:

  1. Instala y, luego, inicializa el SDK de Cloud, que proporciona los comandos gcloud, gsutil, kubectl y nomos que se usan en estas instrucciones. Si usas Cloud Shell, el SDK de Cloud viene preinstalado.

  2. Si usas Anthos Config Management por primera vez, habilita Anthos Config Management.

  3. Crea un clúster que ejecute una versión de Kubernetes 1.14.x o posterior o asegúrate de tener acceso a uno. Parece que el Controlador de políticas se ejecuta en versiones de Kubernetes anteriores a la versión 1.14.x, pero el producto no se comporta correctamente.

  4. Otorga las funciones de IAM necesarias al usuario que registra el clúster.

  5. Si planeas usar la herramienta de línea de comandos de gcloud para configurar el controlador de políticas, registra tu clúster en una flota ahora. Si planeas usar Google Cloud Console, registra tus clústeres cuando instales el controlador de políticas.

Instala el controlador de políticas

Sigue estos pasos a fin de configurar Anthos Config Management para instalar el controlador de admisión dinámica del controlador de políticas en el clúster.

Console

Registra tus clústeres

Para usar Anthos Config Management, primero debes registrar los clústeres. Cuando registras tus clústeres, estos pueden compartir un conjunto común de opciones de configuración y políticas.

Para registrar tus clústeres, completa las siguientes tareas:

  1. En Cloud Console:

    En estas páginas, se muestra qué clústeres están registrados y configurados en este momento y te permite comenzar a registrar clústeres nuevos.

  2. Haz clic en Configuración nueva.

  3. En la página Selecciona clústeres registrados para Config Management, ubica la tabla Clústeres no registrados de este proyecto y busca el clúster que deseas registrar.

  4. Haz clic en Registrar junto al clúster que deseas registrar.

    Una vez que el clúster se registra de forma correcta, aparece en la tabla Selecciona clústeres registrados para Config Management.

Configura el controlador de políticas

Para instalar el Controlador de políticas en Cloud Console, sigue estos pasos:

  1. En la página Selecciona clústeres registrados para la administración de configuración, selecciona el clúster registrado en el que deseas habilitar el controlador de políticas y selecciona Siguiente.
  2. En la lista desplegable Versión, selecciona la versión de Anthos Config Management que deseas usar. El valor predeterminado es la versión actual.
  3. Si no deseas instalar el Sincronizador de configuración, desmarca la casilla de verificación Habilitar el Sincronizador de configuración y haz clic en Siguiente.
  4. En la página del Controlador de políticas, deja seleccionada la casilla de verificación Habilitar el Controlador de políticas.
  5. Opcional: Si quieres instalar una biblioteca de plantillas de restricciones para tipos de políticas comunes, deja seleccionada la casilla de verificación Instalar la biblioteca de plantillas predeterminada.
  6. Opcional: En el campo Intervalo de auditoría, selecciona el período en segundos entre sincronizaciones consecutivas. El valor predeterminado es de 60 segundos, y si configuras el intervalo de auditoría en 0, se inhabilitará la auditoría.
  7. Opcional: En el campo Espacios de nombres exentos, proporciona una lista de espacios de nombres. Todas las políticas ignoran los objetos de estos espacios de nombres. No es necesario que los espacios de nombres existan.
  8. Opcional: Para habilitar restricciones referenciales, selecciona la casilla de verificación Habilitar la capacidad de usar plantillas de restricciones que hacen referencia a objetos distintos del que se está evaluando.
  9. Haz clic en Completar. Volverás a la página Config Management.

    Después de unos minutos, deberías ver Instalado en la columna de estado del Controlador de políticas junto a los clústeres que configuraste.

gcloud

  1. Para preparar la configuración, crea un nuevo manifiesto apply-spec.yaml o usa un manifiesto existente. El uso de un manifiesto existente te permite configurar tu clúster con la misma configuración que usa otro clúster.

Crear manifiesto nuevo

Para configurar el Controlador de políticas con una configuración nueva para tu clúster, crea un archivo llamado apply-spec.yaml y copia el siguiente archivo YAML en él:

# apply-spec.yaml

applySpecVersion: 1
spec:
  policyController:
    # Set to true to install and enable Policy Controller
    enabled: true
    # Uncomment to prevent the template library from being installed
    # templateLibraryInstalled: false
    # Uncomment to enable support for referential constraints
    # referentialRulesEnabled: true
    # Uncomment to disable audit, adjust value to set audit interval
    # auditIntervalSeconds: 0
    # Uncomment to log all denies and dryrun failures
    # logDeniesEnabled: true
    # Uncomment to exempt namespaces
    # exemptableNamespaces: ["namespace-name"]
    # Uncomment to enable mutation (preview feature)
    # mutation:
    #   # enabled: true
  # ...other fields...

Debes agregar un campo spec.policyController y establecer el valor de enabled en true. Puedes elegir habilitar otras funciones del controlador de políticas. Sin embargo, la compatibilidad para restricciones referenciales está inhabilitada según la configuración predeterminada. Antes de habilitarlo, asegúrate de familiarizarte con las advertencias sobre la coherencia eventual.

Usar el manifiesto existente

Para configurar tu clúster con la misma configuración que usa otro clúster, recupera la configuración de un clúster registrado:

gcloud alpha container hub config-management fetch-for-apply \
     --membership=MEMBERSHIP_NAME \
     --project=PROJECT_ID \
     > CONFIG_YAML_PATH

Reemplaza lo siguiente:

  • MEMBERSHIP_NAME: El nombre de la membresía del clúster registrado que tiene la configuración del controlador de políticas que deseas usar
  • PROJECT_ID: El ID de tu proyecto
  • CONFIG_YAML_PATH: La ruta de acceso al archivo apply-spec.yaml

2. Aplica el archivo apply-spec.yaml:

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

Reemplaza lo siguiente:

  • MEMBERSHIP_NAME: El nombre de la membresía del clúster registrado que tiene la configuración del controlador de políticas que deseas usar.
  • CONFIG_YAML: Agrega la ruta de acceso a tu archivo apply-spec.yaml.
  • PROJECT_ID: Agrega ID de tu proyecto.

Se crea el pod, y el Controlador de políticas comienza a buscar restricciones y a aplicarlas.

Instala el Controlador de políticas en un clúster privado

Si usas una versión anterior a la 1.8.0 y, luego, instalas el controlador de políticas en un clúster privado en Google Kubernetes Engine (GKE), debes realizar pasos adicionales. para completar la instalación. En los clústeres privados, el firewall bloquea el plano de control y no llega a los nodos en el puerto 8443, que es donde el plano de control intenta conectarse al controlador de políticas. Puedes crear una regla de firewall para que el plano de control pueda alcanzar el puerto 8443 (o cualquier otro puerto personalizado). También puedes hacer que tu Pod se ejecute en el puerto privilegiado 443. Para obtener más información, consulta Ejecuta en nodos privados de clúster de GKE en la documentación de Gatekeeper.

Verifique la instalación

Después de instalar el controlador de políticas, puedes verificar que se haya completado de forma correcta.

Console

Completa los siguientes pasos:

  1. En Cloud Console:

  2. En la tabla de clústeres, consulta la columna Estado de controlador de política. Si la instalación se realiza correctamente, tendrá el estado Instalado.

gcloud

Ejecuta el siguiente comando:

gcloud beta container hub config-management status \
    --project=PROJECT_ID

Reemplaza PROJECT_ID por el ID del proyecto.

Deberías ver un resultado similar al siguiente:

Name          Status  Last_Synced_Token  Sync_Branch  Last_Synced_Time      Policy_Controller
CLUSTER_NAME  SYNCED  a687c2c            1.0.0        2021-02-17T00:15:55Z  INSTALLED

Una instalación correcta tiene el estado INSTALLED en la columna del Controlador de políticas.

Verifica la instalación de la biblioteca de plantillas de restricciones

Cuando instalas el Controlador de políticas, la biblioteca de plantillas de restricciones se instala de forma predeterminada, lo que puede tardar varios minutos en completarse.

Para verificar que la biblioteca de plantillas esté instalada, enumera todos los objetos ConstraintTemplate:

kubectl get constrainttemplates

Deberías ver un resultado similar al siguiente:

NAME                                      AGE
k8sallowedrepos                           84s
k8scontainerlimits                        84s
k8spspallowprivilegeescalationcontainer   84s
...[OUTPUT TRUNCATED]...

Cuando una plantilla de restricciones individual se instala de forma adecuada, su campo status.created es true.

Interacciones del Controlador de políticas con Anthos Config Management

Anthos Config Management administra los recursos esenciales para ejecutar el Controlador de políticas. Para evitar discrepancias entre Anthos Config Management y el Controlador de políticas, ten en cuenta lo que se implementa en el repositorio de Anthos Config Management.

Cuando uses el Controlador de políticas, ten en cuenta los siguientes puntos:

  • No puedes sincronizar una plantilla de restricciones que también es parte de la biblioteca de plantillas, a menos que la biblioteca de plantillas de restricciones esté inhabilitada.

  • Si deseas sincronizar el recurso de configuración almacenado en el espacio de nombres gatekeeper-system, el espacio de nombres no debe estar definido en el repositorio ni coincidir con la configuración que Anthos Config Management desea instalar.

  • Si se quita el espacio de nombres gatekeeper-system del repositorio de la fuente de información, es posible que Anthos Config Management no se pueda recuperar. Si quieres recuperarlo, borra la configuración de webhook de validación para el Controlador de políticas.

Administra la biblioteca de plantillas de restricciones

Si quieres obtener información para desinstalar o reinstalar plantillas de restricciones, sus restricciones asociadas o la biblioteca de plantillas de restricciones, consulta Crea restricciones.

Exime espacios de nombres de la aplicación

Puedes configurar el controlador de políticas para ignorar objetos dentro de un espacio de nombres. Para obtener más información, consulta Excluye espacios de nombres del controlador de políticas.

Muta los recursos

El controlador de políticas también actúa como un webhook de mutación (función de vista previa). Para obtener más información, consulta Mutate Resources.

Visualiza la versión del controlador de políticas

Para descubrir qué versión del Controlador de políticas de Gatekeeper usa, ejecuta el siguiente comando a fin de ver la etiqueta de imagen:

kubectl get deployments -n gatekeeper-system gatekeeper-controller-manager \
  -o="jsonpath={.spec.template.spec.containers[0].image}"

A partir de la versión 1.3.2 y las posteriores de Anthos Config Management, la etiqueta de Git (o el hash) que se usó para compilar Gatekeeper y el número de versión de Anthos Config Management se incluyen en la etiqueta de la imagen, como se muestra a continuación:

.../gatekeeper:VERIOSN_NUMBER-GIT_TAG.gBUILD_NUMBER

Por ejemplo, en la siguiente imagen, sucede lo siguiente:

gcr.io/config-management-release/gatekeeper:anthos1.3.2-480baac.g0
  • anthos1.3.2 es el número de versión.
  • 480baac es la etiqueta de Git.
  • 0 es el número de compilación.

También puedes ver una lista de todas las versiones de Anthos Config Management junto con las versiones correspondientes del manifiesto, la instalación y el objeto binario nomos en Matriz de la versión de actualización.

Actualiza el controlador de políticas

El Controlador de políticas se actualiza cada vez que actualizas Anthos Config Management. Para obtener más información, consulta Actualiza Anthos Config Management.

Desinstala el controlador de políticas

Sigue estos pasos para desinstalar el Controlador de políticas de tus clústeres.

Console

Para inhabilitar el Controlador de políticas en tus clústeres, completa las siguientes tareas:

  1. En Cloud Console:

  2. Junto al clúster en el que deseas inhabilitar el Controlador de políticas, haz clic en Editar.

  3. Para ir a la página de configuración del Controlador de políticas, haz clic en Siguiente.

  4. Desmarca la casilla de verificación Habilitar controlador de políticas.

  5. Haz clic en Completar.

gcloud

Para desinstalar el Controlador de políticas, sigue estos pasos:

  1. Edita la configuración de Anthos Config Management en el archivo apply-spec.yaml y configura policyController.enabled como false.

  2. Aplica los cambios en el archivo apply-spec.yaml como sigue:

     gcloud beta container hub config-management apply \
         --membership=CLUSTER_NAME \
         --config=CONFIG_YAML \
         --project=PROJECT_ID
    

    Reemplaza lo siguiente:

    • CLUSTER_NAME: Agrega el clúster registrado al que deseas aplicar esta configuración.
    • CONFIG_YAML: Agrega la ruta de acceso a tu archivo apply-spec.yaml.
    • PROJECT_ID: Agrega el ID de tu proyecto.

Después de que Anthos Config Management quita el finalizador policycontroller.configmanagement.gke.io, se completa la desinstalación.

Si deseas desinstalar Anthos Config Management por completo, consulta Desinstala Anthos Config Management.

¿Qué sigue?