Guía de inicio rápido: Sincroniza archivos de configuración de un repositorio

En este instructivo, crearás un clúster de Google Kubernetes Engine (GKE) y usarás el Sincronizador de configuración para sincronizar los archivos de configuración en el repositorio de muestras de repositorios múltiples de Anthos Config Management.

Imagina que el equipo de cumplimiento es responsable de garantizar que todos los miembros de la organización cumplan con las reglas internas. Para aplicar estas reglas, el equipo de cumplimiento creó archivos de configuración que agregaron al repositorio de muestras. Cada clúster de tu organización debe sincronizarse con el repositorio y eres responsable de crear y sincronizar clústeres.

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.
  2. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

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

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

    Ir al selector de proyectos

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

  6. Asegúrate de tener los siguientes roles en el proyecto: GKE Hub Admin

    Verifica los roles

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

      Ir a IAM
    2. Selecciona el proyecto.
    3. Busca la fila que tiene tu dirección de correo electrónico en la columna Principal.

      Si tu dirección de correo electrónico no está en esa columna, no tienes ningún rol.

    4. En la columna Función de la fila con la dirección de correo electrónico, verifica si la lista de roles incluye los roles necesarios.

    Otorga los roles

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

      Ir a IAM
    2. Selecciona el proyecto.
    3. Haz clic en Grant access.
    4. En el campo Principales nuevas, ingresa tu dirección de correo electrónico.
    5. En la lista Seleccionar un rol, elige un rol.
    6. Para otorgar funciones adicionales, haz clic en Agregar otro rol y agrega cada rol adicional.
    7. Haz clic en Guardar.

Crea un clúster

En esta sección, crearás un clúster que podrás usar en este instructivo. 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.

Para crear un clúster, completa los siguientes pasos:

  1. En la consola de Google Cloud, ve a la página 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 Aspectos básicos del clúster, ingresa cs-cluster en el campo Nombre y deja todos los demás campos con sus valores predeterminados recomendados.

  6. En el menú de navegación del 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. Haz clic en Crear. Se te redireccionará a la página Clústeres de Kubernetes. El clúster tarda varios minutos en crearse. Cuando veas una marca de verificación verde en la columna Estado junto al clúster, significa que está listo.

Configura tu clúster

Ahora que creaste un clúster, puedes configurar el Sincronizador de configuración para que se sincronice con los archivos de configuración en el directorio config-sync-quickstart del repositorio de muestras de Anthos Config Management.

Para configurar el Sincronizador de configuración en la consola de Google Cloud, completa los siguientes pasos:

  1. En la consola de Google Cloud, habilita la API de GKE Hub.

    Ir a la API de GKE Hub

  2. En la consola de Google Cloud, ve al panel del Sincronizador de configuración.

    Ir al panel del Sincronizador de configuración

  3. En el cuadro Configuración del Sincronizador de configuración, haz clic en Instalar el Sincronizador de configuración.

  4. En la tabla Clústeres disponibles, selecciona cs-cluster y haz clic en Siguiente.

  5. Desmarca la casilla de verificación Habilitar controlador de políticas y haz clic en Siguiente.

  6. Deja habilitada la casilla de verificación Habilitar el Sincronizador de configuración.

  7. En la lista Repositorio, selecciona Personalizado.

  8. En el campo URL, agrega https://github.com/GoogleCloudPlatform/anthos-config-management-samples.

  9. Haz clic en Mostrar configuración avanzada.

  10. En el campo Configuration directory, agrega config-sync-quickstart/multirepo/root.

  11. Deje todos los otros campos con sus valores predeterminados.

  12. Haz clic en Completar.

    Se te redireccionará a la página Configuración del Sincronizador de configuración. Después de unos minutos, deberías ver Synced en la columna Config sync status de cs-cluster.

Ahora que el Sincronizador de configuración está sincronizado con un repositorio, concilia de forma continua el estado de los clústeres con los archivos de configuración del repositorio.

Explora la instalación del Sincronizador de configuración

En las siguientes secciones, usarás Cloud Shell para explorar el repositorio desde el que se está sincronizando cs-cluster y confirmar que se están implementando los archivos de configuración del repositorio.

Abre Cloud Shell

  1. En la consola de Google Cloud, activa Cloud Shell.

    Activar Cloud Shell

    En la parte inferior de la consola de Google Cloud, se inicia una sesión de Cloud Shell en la que se muestra una ventana de línea de comandos. Cloud Shell es un entorno de shell con Google Cloud CLI ya instalada y con valores ya establecidos para el proyecto actual. La sesión puede tardar unos segundos en inicializarse.

  2. Para usar los comandos de las siguientes secciones, configura el acceso a la línea de comandos de kubectl:

    gcloud container clusters get-credentials cs-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

    Esta es la salida:

    Fetching cluster endpoint and auth data.
    kubeconfig entry generated for cs-cluster.
    

    Si se te solicita autorización, haz clic en Autorizar.

Examina tu clúster y repositorio

El directorio config-sync-quickstart incluye ClusterRole, CustomResourceDefinition, Rolebinding, Namespace y RepoSync. También incluye parámetros de configuración para el operador de Prometheus a fin de supervisarlos. Estos archivos de configuración se aplican en cuanto se configura el Sincronizador de configuración para leer desde el repositorio.

Todos los objetos administrados por el Sincronizador de configuración tienen la etiqueta app.kubernetes.io/managed-by configurada en configmanagement.gke.io. Puedes usar esta etiqueta para ver los objetos administrados.

Para mostrar una lista de los espacios de nombres administrados por el Sincronizador de configuración, ejecuta el siguiente comando:

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

El resultado es similar a este:

NAME         STATUS   AGE
gamestore    Active   58s
monitoring   Active   58s

Puedes navegar a la carpeta /config-sync-quickstart/multirepo/ del repositorio de Anthos Config Management en GitHub para explorar los archivos de configuración que generaron la creación de estos espacios de nombres.

Puedes examinar otros objetos, como ClusterRole, Reposyncs, CRD y Rolesbinding, del mismo modo.

Comprueba el estado de la sincronización

Cuando usas el Sincronizador de configuración, puedes usar la herramienta de línea de comandos de nomos. Esta herramienta te proporciona funciones adicionales para el Sincronizador de configuración.

En esta sección, puedes verificar si el Sincronizador de configuración sincronizó con éxito todos los archivos de configuración en tu clúster mediante el comando nomos status:

nomos status

El resultado es similar a este:

*gke_PROJECT_ID_ZONE_cs-cluster
  --------------------
  <root>:root-sync                         https://github.com/GoogleCloudPlatform/anthos-config-management-samples/config-sync-quickstart/multirepo/root@main
  SYNCED @ 2023-02-03 16:58:42 +0000 UTC   1fbab5c90af9029b26451fec92e9900d8db23aee
  Managed resources:
     NAMESPACE    NAME                                                                                      STATUS    SOURCEHASH
                  clusterrole.rbac.authorization.k8s.io/namespace-reader                                    Current   1fbab5c
                  clusterrole.rbac.authorization.k8s.io/prometheus-acm                                      Current   1fbab5c
                  clusterrole.rbac.authorization.k8s.io/prometheus-operator                                 Current   1fbab5c
                  clusterrole.rbac.authorization.k8s.io/webstore-admin                                      Current   1fbab5c
                  clusterrolebinding.rbac.authorization.k8s.io/prometheus-acm                               Current   1fbab5c
                  clusterrolebinding.rbac.authorization.k8s.io/prometheus-operator                          Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/alertmanagerconfigs.monitoring.coreos.com   Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/alertmanagers.monitoring.coreos.com         Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/anvils.acme.com                             Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/podmonitors.monitoring.coreos.com           Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/probes.monitoring.coreos.com                Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/prometheuses.monitoring.coreos.com          Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/prometheusrules.monitoring.coreos.com       Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/servicemonitors.monitoring.coreos.com       Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/thanosrulers.monitoring.coreos.com          Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/webstores.marketplace.com                   Current   1fbab5c
                  namespace/gamestore                                                                       Current   1fbab5c
                  namespace/monitoring                                                                      Current   1fbab5c
     gamestore    reposync.configsync.gke.io/repo-sync                                                      Current   1fbab5c
     gamestore    rolebinding.rbac.authorization.k8s.io/gamestore-admin                                     Current   1fbab5c
     gamestore    rolebinding.rbac.authorization.k8s.io/gamestore-webstore-admin                            Current   1fbab5c
     monitoring   deployment.apps/prometheus-operator                                                       Current   1fbab5c
     monitoring   prometheus.monitoring.coreos.com/acm                                                      Current   1fbab5c
     monitoring   service/prometheus-acm                                                                    Current   1fbab5c
     monitoring   service/prometheus-operator                                                               Current   1fbab5c
     monitoring   serviceaccount/prometheus-acm                                                             Current   1fbab5c
     monitoring   serviceaccount/prometheus-operator                                                        Current   1fbab5c
     monitoring   servicemonitor.monitoring.coreos.com/acm-service                                          Current   1fbab5c
  --------------------
  gamestore:repo-sync                      https://github.com/GoogleCloudPlatform/anthos-config-management-samples/config-sync-quickstart/multirepo/namespaces/gamestore@main
  SYNCED @ 2023-02-03 16:58:51 +0000 UTC   1fbab5c90af9029b26451fec92e9900d8db23aee
  Managed resources:
     NAMESPACE   NAME                                 STATUS    SOURCEHASH
     gamestore   configmap/store-inventory            Current   1fbab5c
     gamestore   webstore.marketplace.com/gameplace   Current   1fbab5c

En este resultado, puedes ver que cs-cluster se sincroniza de manera correcta desde dos repositorios. Además, debido a que todos los recursos tienen un estado Current, su estado coincide con el que deseas.

Realiza una limpieza

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

    Ir a GKE

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

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

¿Qué sigue?