Sincronizar con un repositorio de solo lectura

En esta guía de inicio rápido, se muestra cómo comenzar a usar Anthos Config Management en un clúster nuevo mediante el repositorio de ejemplo de foo-corp para iniciar un clúster con un conjunto de configuraciones. En esta guía de inicio rápido, no necesitas acceso de escritura al repositorio. Imagina que un equipo de cumplimiento de tu organización es responsable de crear los archivos de configuración y que cada clúster debe sincronizarse con el repositorio.

Después de completar esta guía de inicio rápido, podrás seguir una guía de inicio rápido sobre cómo escribir, probar y sincronizar archivos de configuración.

Antes de comenzar

  1. Accede a tu Cuenta de Google.

    Si todavía no tienes una cuenta, regístrate para obtener una nueva.

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

    Ir a la página del selector de proyectos

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Descubre cómo confirmar que tienes habilitada la facturación en un proyecto.

  4. Habilita la API Anthos.

    Habilita la API

  5. Instala e inicializa el SDK de Cloud.

Configuración del clúster

Usuarios de GKE

  1. Crea un clúster.

  2. Mediante los siguientes comandos, configura el comando de kubectl para autenticarte en el clúster y crea una RoleBinding a fin de convertirte en administrador del clúster. Usa el nombre del clúster donde veas [MY-CLUSTER] y la dirección de correo electrónico de la cuenta de Google Cloud donde veas [USER-ACCOUNT]. Según cómo configuraste el comando de gcloud en el sistema local, es posible que debas agregar los campos --project y --zone.

    gcloud container clusters get-credentials [MY-CLUSTER]
    
    kubectl create clusterrolebinding cluster-admin-binding \
        --clusterrole cluster-admin --user [USER_ACCOUNT]
    

Usuarios de GKE On-Prem

Preparación de Anthos Config Management

Completa los siguientes pasos a fin de preparar las herramientas que necesitas para esta guía de inicio rápido:

  1. Si usas Anthos Config Management por primera vez, habilita la función a través de Google Cloud Console o mediante la herramienta de línea de comandos de gcloud.

    Console

    Para habilitar Anthos Config Management:

    1. Visita la página Funciones de Anthos en Google Cloud Console.

      Visitar las funciones de Anthos

    2. En la fila Config Management, haz clic en Habilitar.

    3. En la ventana de confirmación, haz clic en Habilitar Config Management.

    gcloud

    Para habilitar Anthos Config Management, ejecuta el siguiente comando:

     gcloud alpha container hub config-management enable
    
  2. Instala el comando nomos en el sistema local.

  3. Si deseas instalar con kubectl, implementa el operador de Config Management en el clúster que acabas de crear.

  4. Registra tu clúster en un entorno de Anthos mediante Connect.

Configura tu clúster

Puedes configurar tu clúster con Google Cloud Console, la herramienta de línea de comandos de gcloud o kubectl.

Console

Para configurar Anthos Config Management en Google Cloud Console, sigue estos pasos:

  1. Visita el menú de Anthos Config Management en Google Cloud Console.

    Visitar el menú de Anthos Config Management

  2. Selecciona tu clúster registrado y haz clic en Configurar.

  3. En la sección Autenticación de repositorio de Git para ACM, selecciona Ninguno, ya que el repositorio en este ejemplo es legible para todo el mundo.

  4. Haga clic en Continuar.

  5. En la sección Configuración de ACM para tus clústeres, completa los siguientes pasos:

    1. En el campo Versión, selecciona cualquier versión para Anthos Config Management.
    2. Selecciona la casilla de verificación Habilitar Sincronizador de configuración.
    3. En el menú desplegable que aparece, completa los siguientes pasos:

      1. En el campo URL, agrega https://github.com/GoogleCloudPlatform/csp-config-management/.
      2. En el campo Rama, agrega 1.0.0.
      3. Deja el campo Etiqueta/Confirmación en blanco, ya que usaremos el valor predeterminado de HEAD.
      4. En el campo Directorio de políticas, agrega foo-corp.
      5. Deja el resto de los campos en su valor predeterminado.
  6. Haga clic en Listo. Volverás al menú de Anthos Config Management. Después de unos minutos, deberías ver Synced en la columna de estado junto al clúster que configuraste.

gcloud

Crea un archivo llamado config-management.yaml y copia el siguiente archivo YAML en él. Debido a que el repositorio es legible para todo el mundo, secretType se configura como none. Para obtener una explicación de los campos, consulta Configuración del repositorio de Git.

  1. Crea un archivo config-management.yaml y copia el siguiente archivo YAML en él:

    # config-management.yaml
    
    apiVersion: configmanagement.gke.io/v1
    kind: ConfigManagement
    metadata:
      name: config-management
      namespace: config-management-system
    
    spec:
      git:
        syncRepo: https://github.com/GoogleCloudPlatform/csp-config-management/
        syncBranch: 1.0.0
        secretType: none
        policyDir: "foo-corp"
    
  2. Establece una variable:

    export CONFIG_YAML=PATH_TO_CONFIG_YAML

  3. Aplica el archivo config-management.yaml:

     gcloud alpha 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.
    • PROJECT_ID: agrega tu ID del proyecto.

kubectl

Crea un archivo llamado config-management.yaml y copia el siguiente archivo YAML en él. Debido a que el repositorio es legible para todo el mundo, secretType se configura como none. Para obtener una explicación de los campos, consulta Configuración del repositorio de Git.

apiVersion: configmanagement.gke.io/v1
kind: ConfigManagement
metadata:
  name: config-management
spec:
  # clusterName is required and must be unique among all managed clusters
  clusterName: my-cluster
  git:
    syncRepo: https://github.com/GoogleCloudPlatform/csp-config-management/
    syncBranch: 1.0.0
    secretType: none
    policyDir: "foo-corp"

Aplica la configuración a tu clúster:

kubectl apply -f config-management.yaml

Si el comando se ejecuta correctamente, Kubernetes actualiza Anthos Config Management en tu clúster para comenzar a sincronizar la configuración de tu clúster desde el repositorio. Para verificar que Anthos Config Management esté en ejecución, enumera todos los pods que se ejecutan en el espacio de nombres config-management-system:

kubectl get pods -n config-management-system

Salida:

NAME                                   READY     STATUS    RESTARTS   AGE
git-importer-5f8bdb59bd-7nn5m          2/2       Running   0          2m
monitor-58c48fbc66-ggrmd               1/1       Running   0          2m
syncer-7bbfd7686b-dxb45                1/1       Running   0          2m

Examina tu clúster y repositorio

El repositorio foo-corp incluye archivos de configuración en los directorios cluster/ y namespaces/. Estos archivos de configuración se aplican apenas se configura Anthos Config Management para leer desde el repositorio.

Todos los objetos administrados por Anthos Config Management tienen la etiqueta app.kubernetes.io/managed-by configurada como configmanagement.gke.io.

Enumera los objetos de espacios de nombres administrados por Anthos Config Management:

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

Salida:

NAME               STATUS   AGE
audit              Active   4m
shipping-dev       Active   4m
shipping-prod      Active   4m
shipping-staging   Active   4m

Examina los archivos de configuración que generaron la creación de estos espacios de nombres, como namespaces/audit/namespace.yaml y namespaces/online/shipping-app-backend/shipping-dev/namespace.yaml.

Lista de ClusterRoles administrados por Anthos Config Management:

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

Salida:

NAME               AGE
namespace-reader   6m52s
pod-creator        6m52s

Examina los archivos de configuración de ClusterRole que declaran lo siguiente:

  • cluster/namespace-reader-clusterrole.yaml
  • cluster/pod-creator-clusterrole.yaml

Puedes examinar otros objetos, como Roles y PodSecurityPolicies, de la misma manera.

Intente modificar manualmente un objeto administrado

Si modificas manualmente un objeto de Kubernetes administrado por Anthos Config Management, la configuración de ese objeto se actualiza automáticamente para que coincida con la configuración del objeto en tu repositorio. Para probar esto, borra el espacio de nombres shipping-dev.

kubectl delete namespace shipping-dev

Si verificas de inmediato, es posible que falte el espacio de nombres, pero en unos segundos volverá a aparecer. Por ejemplo:

kubectl get ns shipping-dev

Resultado:

Error from server (NotFound): namespaces "shipping-dev" not found

Después de unos segundos:

kubectl get ns shipping-dev

Resultado:

NAME           STATUS   AGE
shipping-dev   Active   3s

Realice una limpieza

Si deseas seguir la guía de inicio rápido avanzada, todavía no debes realizar una limpieza. Esta guía de inicio rápido es un requisito para ese tema, que también incluye instrucciones de limpieza.

Si no deseas seguir la guía de inicio rápido avanzada, puedes borrar los clústeres que usaste para realizar la prueba.

¿Qué sigue?