Guía de inicio rápido: Configura un clúster con Anthos Config Management

Configurar un clúster con Anthos Config Management

Imagina que eres un ingeniero de plataforma de una gran empresa que admite varios equipos de desarrollo de aplicaciones que se compilan en Google Kubernetes Engine (GKE). Estás a cargo del mantenimiento del entorno de GKE de la capa base y de las políticas de la organización que se aplican a todos los equipos de desarrollo.

Puedes simplificar la administración de clústeres con el Controlador de políticas y el Sincronizador de configuración de Anthos Config Management. Con el Controlador de políticas, puedes aplicar políticas personalizables para tus clústeres. Con el Sincronizador de configuración, puedes configurar tus clústeres de forma coherente. Cuando usas estos componentes juntos, puedes aplicar tus políticas de forma continua.

En este instructivo, crearás un clúster y, luego, instalarás el Controlador de políticas y el Sincronizador de configuración en ese clúster. A continuación, explora un ejemplo de repositorio de Git que contiene las restricciones del Controlador de políticas y los archivos de configuración del Sincronizador de configuración que aplicas a tu clúster para garantizar una aplicación de políticas y una configuración coherentes.

Un diagrama que muestra un clúster de GKE con el Controlador de políticas y el Sincronizador de configuración instalados


Para obtener una guía paso a paso sobre esta tarea directamente en la consola, haz clic en Guiarme:

Guiarme


En las siguientes secciones, se explican los mismos pasos que cuando se hace clic en Guiarme.

Antes de comenzar

  1. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.

    En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

    Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Obtén información sobre cómo verificar si la facturación está habilitada en un proyecto.

    En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

    Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Obtén información sobre cómo verificar si la facturación está habilitada en un proyecto.

Prepara el entorno

En las siguientes secciones, crearás y configurarás un clúster que puedas usar con el Controlador de políticas y el Sincronizador de configuración. Aunque en una situación real, es probable que administres varios clústeres, para simplificar este instructivo, solo debes crear y administrar un clúster.

Cree un clúster

Para crear un clúster que puedas usar con el Sincronizador de configuración, completa los siguientes pasos:

  1. En la consola de Google Cloud, ve a la página Google Kubernetes Engine.

    Ir a Google Kubernetes Engine

  2. Si usas GKE por primera vez, haz clic en Habilitar para habilitar la API de Kubernetes Engine.

  3. Haz clic en Crear.

  4. En la sección Estándar, haz clic en Configurar.

  5. En la sección Conceptos básicos del clúster, agrega acm-cluster en el campo Nombre y deja todos los demás campos con sus valores predeterminados recomendados.

  6. En el menú de la izquierda, en Clúster, selecciona Seguridad.

  7. En la página Seguridad, selecciona la casilla de verificación Habilitar Workload Identity y deja todos los otros campos con sus valores predeterminados.

  8. Haga clic en Crear. El clúster puede tardar varios minutos en crearse.

Otórgate permisos de administrador

Después de crear el clúster, otorga el Administrador de GKE Hub.

  1. En la consola, ve a la página IAM.

    Ir a IAM

  2. Haga clic en Agregar.

  3. En el campo Principales nuevos, ingresa la dirección de correo electrónico que usaste para registrarte en Google Cloud.

  4. En la lista desplegable Seleccionar una función, busca y selecciona Administrador de GKE Hub.

  5. Haz clic en Guardar.

Habilita Anthos Config Management

Para habilitar Anthos Config Management, completa los siguientes pasos:

  1. En la consola, ve a la página Config Management.

    Ir a Config Management

  2. Haz clic en Configurar Config Management.

  3. Para habilitar la API de Config Management, haz clic en Siguiente. Después de hacer clic en Siguiente, se te dirigirá a la página Seleccionar los clústeres registrados en Config Management, en la que puedes registrar tu clúster.

Registra tu clúster

Después de crear tu clúster, regístralo en una flota:

  1. En la página Selecciona clústeres registrados para Config Management, ubica la tabla Clústeres no registrados de este proyecto y busca acm-cluster.
  2. Junto a acm-cluster, haz clic en Registrarse.

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

Configura tu clúster

Para configurar el controlador de políticas y el Sincronizador de configuración en Google Cloud Console, completa los siguientes pasos:

  1. En la tabla Selecciona clústeres registrados para Config Management, selecciona acm-cluster y haz clic en Siguiente.
  2. En la página Controlador de políticas que aparecerá, deja habilitada la casilla de verificación Habilitar Controlador de políticas y haz clic en Siguiente.
  3. En la página Sincronizador de configuración que aparece, deja habilitada la casilla de verificación Habilitar el Sincronizador de configuración.
  4. En la lista desplegable Repositorio, selecciona Personalizado.
  5. En el campo URL que aparece, agrega https://github.com/GoogleCloudPlatform/anthos-config-management-samples. Este es un repositorio de muestra creado por Google.
  6. Haz clic en Mostrar configuración avanzada.
  7. En la lista desplegable Tipo de autenticación, selecciona Ninguno.
  8. En el campo Rama, agrega main.
  9. Deja el campo Etiqueta/Confirmación con su valor predeterminado de HEAD.
  10. En el campo Configuration directory, agrega /quickstart/config-sync. Este directorio contiene las restricciones y los archivos de configuración de ejemplo que usas en las siguientes secciones.
  11. Deja los campos Tiempo de espera de sincronización, Proxy de Git, Formato de origen y Versión de Config Management con los valores predeterminados.
  12. Haz clic en Completar y volverás a la página Config Management.

Después de unos minutos, verifica el estado de acm-cluster en la tabla. Deberías ver Sincronizado en la columna de estado del Sincronizador de configuración, así como Instalado en la columna de estado del Controlador de políticas.

Prueba las funciones de Anthos Config Management

El repositorio que agregaste en la sección anterior contiene los archivos de configuración del Sincronizador de configuración y las restricciones del Controlador de políticas que ahora se aplican a tu clúster. En las siguientes secciones, se muestra cómo confirmar que los archivos de configuración y las restricciones se aplican al clúster.

Verifica que una configuración se esté sincronizando

Una configuración es una declaración de configuración de Kubernetes escrita en YAML o JSON que se almacena en tu repositorio de Git. Una vez que terminaste de configurar tu clúster, el Sincronizador de configuración aplica de forma continua estos archivos de configuración a tus clústeres.

El repositorio de guía de inicio rápido contiene el siguiente archivo de configuración para un espacio de nombres:

apiVersion: v1
kind: Namespace
metadata:
  name: hello

Este archivo de configuración otorga el espacio de nombres hello a todos los clústeres que se sincronizan con el repositorio y, en las siguientes secciones, se muestra cómo verificar que este archivo esté sincronizado con tu clúster.

Abre Cloud Shell

Para ejecutar la CLI de gcloud y los comandos de kubectl en las siguientes secciones, usa Cloud Shell. Para iniciar Cloud Shell, ejecuta estos comandos:

  1. Ve a la consola de Google Cloud.

    Ir a Google Cloud Console

  2. Desde la esquina superior derecha de la consola, haz clic en el botón Activar Cloud Shell: .

    Se abrirá una sesión de Cloud Shell dentro de un marco en la parte inferior en la consola.

Enumera los espacios de nombres que administra el Sincronizador de configuración

Para confirmar que el Sincronizador de configuración administra el espacio de nombres hello, ejecuta los siguientes comandos en Cloud Shell:

  1. Configura el acceso a la línea de comandos de kubectl:

    gcloud container clusters get-credentials acm-cluster \
        --zone ZONE \
        --project PROJECT_ID
    

    Reemplaza lo siguiente:

    • ZONE: Es la zona en la que creaste el clúster.
    • PROJECT_ID: El ID de tu proyecto
  2. Enumera los espacios de nombres que administra el Sincronizador de configuración:

    kubectl get ns -l app.kubernetes.io/managed-by=configmanagement.gke.io
    

    El resultado es similar a este:

    NAME    STATUS   AGE
    hello   Active   7m7s
    

Este resultado significa que el Sincronizador de configuración supervisa tu repositorio de Git y sincroniza de forma continua los archivos de configuración del repositorio con el clúster de GKE.

Intenta infringir una restricción

Puedes asegurarte de que tus clústeres cumplan con tus políticas mediante las restricciones del Controlador de políticas. El controlador de políticas viene con una biblioteca de plantillas de restricciones que puedes usar como ayuda para crear tus restricciones.

El repositorio de guía de inicio rápido contiene la restricción no-ext-services.yaml, que usa la plantilla de restricción K8sNoExternalServices de la biblioteca:

apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sNoExternalServices
metadata:
  name: no-internet-services
spec:
  parameters:
    internalCIDRs: [] 

En esta restricción, se prohíbe la creación de un Service externo y el Sincronizador de configuración sincroniza la restricción desde el repositorio hasta el clúster.

  • Para probar que el Sincronizador de configuración sincroniza la restricción, obtén una lista de restricciones:

    kubectl get constraint
    

    El resultado es similar a este:

    NAME                                                                   AGE
    k8snoexternalservices.constraints.gatekeeper.sh/no-internet-services   7m39s
    

El repositorio de guía de inicio rápido también contiene un Service externo llamado service.yaml que infringe esta restricción:

apiVersion: v1
kind: Service
metadata:
  name: hello
  namespace: default
spec:
  type: LoadBalancer
  selector:
    app: hello
  ports:
  - name: http
    port: 80
    targetPort: 8080

Para probar que el controlador de políticas aplica la restricción no-ext-services.yaml, ejecuta los siguientes comandos para intentar aplicar service.yaml:

  1. Clona el repositorio de muestra de Anthos Config Management:

    git clone https://github.com/GoogleCloudPlatform/anthos-config-management-samples
    
  2. Navega a la carpeta que contiene las muestras usadas en este instructivo:

    cd anthos-config-management-samples/quickstart/
    
  3. Intenta aplicar service.yaml:

    kubectl apply -f resources/service.yaml
    

    Dado que el Service que intentaste crear era uno externo, no puedes crearlo y el resultado es el siguiente:

    Error from server ([no-internet-services] Creating services of type
    `LoadBalancer` without Internal annotation is not allowed): error when
    creating "resources/service.yaml": admission webhook
    "validation.gatekeeper.sh" denied the request: [no-internet-services]
    Creating services of type `LoadBalancer` without Internal annotation is not
    allowed ```
    

Cuando usas el Controlador de políticas y el Sincronizador de configuración juntos, tus políticas se aplican de manera coherente a tus clústeres. El Sincronizador de configuración sincronizó la política K8sNoExternalServices con tu clúster y el Controlador de políticas aplicó la política a nivel del controlador de admisión, lo que evita que apliques un recurso que infrinja la política.

Ya aprendiste a completar las siguientes tareas para Anthos Config Management:

  1. Instala el Controlador de políticas y el Sincronizador de configuración.
  2. Usa el Sincronizador de configuración para sincronizar un archivo de configuración de un repositorio de GitHub con tu clúster de GKE.
  3. Usa el Sincronizador de configuración para sincronizar una restricción del Controlador de políticas con tu clúster.
  4. Usa el Controlador de políticas para aplicar una política a toda la organización en tu clúster.

Realiza una limpieza

Si deseas evitar que se generen cargos, borra el clúster que creaste para esta guía de inicio rápido de la siguiente manera:

  1. Ve al menú de GKE en la consola.

    Ir a GKE

  2. Junto a acm-cluster, haz clic en Acciones y, luego, en Borrar.

  3. Cuando se te solicite confirmación, haz clic en Borrar de nuevo.

¿Qué sigue?