Personalizar la instalación de Config Sync

Con Config Sync, puedes gestionar tus recursos de Kubernetes sincronizando configuraciones desde una única fuente de información fiable, como un repositorio de Git, una imagen OCI o un gráfico de Helm. Si las instrucciones de instalación predeterminadas no se ajustan a tus necesidades, es posible que tengas que personalizar la instalación de Config Sync.

En esta página se explica cómo realizar una instalación y configuración avanzadas de Config Sync. El proceso de instalación incluye lo siguiente:

  • Instalar Config Sync en clústeres individuales con laGoogle Cloud consola, la CLI de Google Cloud o Terraform.
  • Configurar el repositorio raíz, incluido el tipo de origen, el formato y la autenticación.
  • Verificar que Config Sync se ha instalado y configurado correctamente.

Limitaciones

Config Sync no admite la configuración de helm como tipo de origen con la consola o la CLI de Google Cloud. Google Cloud Puedes configurar tu objeto RootSync o RepoSync para que se sincronice desde un repositorio de Helm mediante la API de Kubernetes o declararlo en otra fuente de información veraz. Para obtener más información, consulta la configuración del repositorio de Helm.

Antes de empezar

Antes de instalar Config Sync, prepara tu fuente de información veraz y un clúster adecuado.

Conceder acceso de Config Sync a tu fuente de información veraz

Para sincronizar la configuración de una fuente de información veraz con tus clústeres, Config Sync necesita acceso de solo lectura a tu repositorio. Para autorizar a Config Sync a leer tus configuraciones, sigue estos pasos:

Revisar los requisitos de los clústeres

Antes de crear un clúster, consulta los requisitos de los clústeres.

Instalar Config Sync

Cuando instalas Config Sync mediante la consola o la CLI de Google Cloud, Config Sync crea automáticamente un objeto RootSync llamado root-sync. Google Cloud Puedes usar comandos kubectl para modificar root-sync y añadir configuraciones de Config Sync. Para obtener más información, consulta Configurar Config Sync con comandos de kubectl.

Consola

Instalar Config Sync

Para instalar Config Sync, todos los clústeres deben estar registrados en una flota. Cuando instalas Config Sync en la consola, al seleccionar clústeres individuales, estos se registran automáticamente en tu flota. Google Cloud

  1. En la Google Cloud consola, ve a la página Configuración de la sección Funciones.

    Ir a Configuración

  2. Haz clic en Instalar Config Sync.
  3. Selecciona la versión de Config Sync que quieras usar.
  4. En Opciones de instalación, selecciona una de las siguientes opciones:
    • Instalar Config Sync en toda la flota (opción recomendada): Config Sync se instala en todos los clústeres de la flota.
    • Instalar Config Sync en clústeres concretos: Config Sync se instala en los clústeres que selecciones. Los clústeres seleccionados se registran automáticamente en tu flota.
  5. Si vas a instalar Config Sync en clústeres concretos, en la tabla Available clusters (Clústeres disponibles), selecciona los clústeres en los que quieras instalar Config Sync.
  6. Haz clic en Instalar Config Sync. En la pestaña Configuración, al cabo de unos minutos, debería aparecer el valor Habilitado en la columna Estado de los clústeres de tu flota.

Desplegar un paquete

Una vez que hayas registrado tus clústeres en una flota e instalado Config Sync, puedes configurar Config Sync para desplegar un paquete en un clúster desde una fuente de información veraz. Puedes desplegar el mismo paquete en varios clústeres o desplegar diferentes paquetes en distintos clústeres. Puede editar un paquete después de implementarlo, excepto algunos ajustes, como el nombre del paquete y el tipo de sincronización. Para obtener más información, consulta Gestionar paquetes.

Para implementar un paquete, sigue estos pasos:

  1. En la Google Cloud consola, ve al panel de control Config Sync.

    Ir al panel de control de Config Sync

  2. Haz clic en Desplegar paquete.

  3. En la tabla Seleccionar clústeres para la implementación de paquetes, seleccione el clúster en el que quiera implementar un paquete y, a continuación, haga clic en Continuar.

  4. Seleccione Paquete alojado en Git o Paquete alojado en OCI como tipo de fuente y, a continuación, haga clic en Continuar.

  5. En la sección Detalles del paquete, introduce un Nombre del paquete, que identifica el objeto RootSync o RepoSync.

  6. En el campo Tipo de sincronización, elige Sincronización con ámbito de clúster o Sincronización con ámbito de espacio de nombres como tipo de sincronización.

    La sincronización con ámbito de clúster crea un objeto RootSync, mientras que la sincronización con ámbito de espacio de nombres crea un objeto RepoSync. Para obtener más información sobre estos objetos, consulta Arquitectura de Config Sync.

  7. En la sección Origen, haz lo siguiente:

    • En el caso de las fuentes alojadas en un repositorio de Git, introduce los siguientes campos:

      1. Introduce la URL del repositorio de Git que estés usando como fuente de información principal en el campo URL del repositorio.
      2. Opcional: Actualiza el campo Revisión para comprobar si no estás usando el valor predeterminado HEAD.
      3. Opcional: Actualiza el campo Ruta si no quieres sincronizar desde el repositorio raíz.
      4. Opcional: Actualiza el campo Rama si no usas la rama main predeterminada.
    • En el caso de las fuentes alojadas en una imagen de OCI, introduce los siguientes campos:

      1. Introduce la URL de la imagen OCI que estés usando como fuente de información principal en el campo Imagen.
      2. Introduce la ruta del directorio desde el que se va a sincronizar, relativa al directorio raíz, en el campo Directorio.
  8. (Opcional): Despliega la sección Configuración avanzada para completar lo siguiente:

    1. Selecciona un Tipo de autenticación. Config Sync necesita acceso de solo lectura a tu fuente de información veraz para leer los archivos de configuración de la fuente y aplicarlos a tus clústeres. A menos que tu fuente no requiera autenticación, como un repositorio público, asegúrate de conceder a Config Sync acceso de solo lectura a tu repositorio de Git, imagen OCI o gráfico de Helm (solo en la CLI de gcloud). Elige el mismo tipo de autenticación que configuraste al instalar Config Sync:

      • Ninguna: no se usa ninguna autenticación.
      • SSH autentica mediante un par de claves SSH.
      • Cookiefile: autentica mediante un cookiefile.
      • Token: autentícate con un token de acceso o una contraseña.
      • Repositorio de Google Cloud: usa una cuenta de servicio de Google para acceder a un repositorio de Cloud Source Repositories. Selecciona esta opción solo si la federación de identidades de carga de trabajo para GKE no está habilitada en tu clúster.
      • Workload Identity: usa una cuenta de servicio de Google para acceder a un repositorio de Cloud Source Repositories.
    2. Introduce un número en segundos para definir el Tiempo de espera de sincronización, que determina cuánto tiempo espera Config Sync entre los intentos de extraer datos de la fuente de información veraz.

    3. Introduce una URL de proxy de Git para el proxy HTTPS que se usará al comunicarse con la fuente de información principal.

    4. Elige Jerarquía para cambiar el Formato de origen.

      En la mayoría de los casos, se recomienda usar el valor predeterminado Sin estructura, ya que te permite organizar tu fuente de información como quieras.

  9. Haz clic en Desplegar paquete.

    Se te redirigirá a la página Paquetes de Config Sync. Al cabo de unos minutos, debería ver el estado Sincronizado en la columna Estado de sincronización del clúster que ha configurado.

gcloud

Antes de continuar, asegúrate de haber registrado tus clústeres en una flota.

  1. Habilita la función de flota ConfigManagement:

    gcloud beta container fleet config-management enable
    
  2. Para preparar la configuración, crea un archivo llamado apply-spec.yaml y copia en él el siguiente archivo YAML.

    Puedes definir todos los campos spec.configSync opcionales que necesites al crear el manifiesto y, más adelante, usar los comandos kubectl para la configuración. También puedes definir el campo spec.configSync.enabled como true y omitir los campos opcionales. Después, puedes usar comandos kubectl para crear objetos RootSync adicionales o RepoSyncs que puedes gestionar por completo con comandos kubectl más adelante.

    # apply-spec.yaml
    
         applySpecVersion: 1
         spec:
           configSync:
             enabled: true
             # If you don't have a source of truth yet, omit the
             # following fields. You can configure them later.
             sourceType: SOURCE_TYPE
             sourceFormat: FORMAT
             syncRepo: REPO
             syncRev: REVISION
             secretType: SECRET_TYPE
             gcpServiceAccountEmail: EMAIL
             metricsGcpServiceAccountEmail: METRICS_EMAIL
             policyDir: DIRECTORY
             preventDrift: false
    

    Haz los cambios siguientes:

    • SOURCE_TYPE: añade git para sincronizar desde un repositorio de Git, oci para sincronizar desde una imagen OCI o helm para sincronizar desde un gráfico de Helm. Si no se especifica ningún valor, se usa git de forma predeterminada.
    • FORMAT: añade unstructured para usar un repositorio no estructurado o añade hierarchy para usar un repositorio jerárquico. En estos valores se distingue entre mayúsculas y minúsculas. Este campo es opcional y su valor predeterminado es hierarchy. Te recomendamos que añadas unstructured, ya que este formato te permite organizar tus configuraciones de la forma que te resulte más cómoda.
    • REPO: añade la URL de la fuente de información veraz. Las URLs de los repositorios de Git y Helm usan el protocolo HTTPS o SSH. Por ejemplo, https://github.com/GoogleCloudPlatform/anthos-config-management-samples. Si tienes previsto usar SSH como secretType, introduce tu URL con el protocolo SSH. Este campo es obligatorio y, si no introduces ningún protocolo, la URL se tratará como una URL HTTPS.

      Las URLs de OCI tienen el siguiente formato: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME. De forma predeterminada, la imagen se extrae de la etiqueta latest, pero puedes extraer imágenes con TAG o DIGEST. Especifica TAG o DIGEST en PACKAGE_NAME:

      • Para tirar por TAG: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME:TAG
      • Para tirar por DIGEST: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME@sha256:DIGEST
    • REVISION: la revisión de Git (etiqueta o hash) o el nombre de la rama desde la que se sincronizará. Cuando se utilice un hash, debe ser un hash completo, no una forma abreviada.

    • SECRET_TYPE: una de las siguientes secretTypes:

      git

      • none: no se usa ninguna autenticación.
      • ssh: usa un par de claves SSH.
      • cookiefile: usa un cookiefile.
      • token: usa un token.
      • gcpserviceaccount: usa una cuenta de servicio de Google para acceder a un repositorio de Cloud Source Repositories o Secure Source Manager. Si seleccionas este tipo de autenticación, debes crear un enlace de política de IAM después de terminar de configurar Config Sync. Para obtener más información, consulta la pestaña Cuenta de servicio de Google de la sección Conceder acceso a Git a Config Sync con una cuenta de servicio de Google.
      • gcenode: usa una cuenta de servicio de Google para acceder a Cloud Source Repositories. Selecciona esta opción solo si Workload Identity Federation para GKE no está habilitado en tu clúster.
      • githubapp: usa una aplicación de GitHub para autenticarte en un repositorio de GitHub.

      Para obtener más información sobre estos tipos de autenticación, consulta el artículo Conceder acceso de Config Sync a Git.

      oci

      • none: no usar autenticación
      • gcenode: usa la cuenta de servicio predeterminada de Compute Engine para acceder a una imagen de Artifact Registry. Selecciona esta opción solo si Workload Identity Federation para GKE no está habilitado en tu clúster.
      • gcpserviceaccount: usa una cuenta de servicio de Google para acceder a una imagen.

      Helm

      • token: usa un token.
      • gcenode: usa la cuenta de servicio predeterminada de Compute Engine para acceder a una imagen de Artifact Registry. Selecciona esta opción solo si Workload Identity Federation para GKE no está habilitado en tu clúster.
      • gcpserviceaccount: usa una cuenta de servicio de Google para acceder a una imagen.
      • EMAIL: si has añadido gcpserviceaccount como tu secretType, añade la dirección de correo de tu cuenta de servicio de Google. Por ejemplo, acm@PROJECT_ID.iam.gserviceaccount.com.

      • METRICS_EMAIL: el correo electrónico de la Google Cloud cuenta de servicio (GSA) que se usa para exportar métricas de Config Sync a Cloud Monitoring. La cuenta de servicio de Google debe tener el rol de gestión de identidades y accesos Editor de métricas de monitorización (roles/monitoring.metricWriter). La cuenta de servicio de Kubernetes default del espacio de nombres config-management-monitoring debe estar vinculada a la cuenta de servicio de Google.

      • DIRECTORY: la ruta del directorio desde el que se va a sincronizar, relativa a la raíz del repositorio de Git. Todos los subdirectorios del directorio que especifique se incluirán y se sincronizarán con el clúster. El valor predeterminado es el directorio raíz del repositorio.

    Para ver una lista completa de los campos que puedes añadir al campo spec, consulta gcloud fields.

  3. Aplica el archivo apply-spec.yaml. Si usas un manifiesto, debes aplicar el archivo al clúster que quieras configurar con los ajustes que has obtenido en el comando anterior:

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

    Haz los cambios siguientes:

    • MEMBERSHIP_NAME: el nombre de la pertenencia a la flota que elegiste al registrar tu clúster. Puedes encontrar el nombre con gcloud container fleet memberships list.
    • CONFIG_YAML_PATH: la ruta a tu archivo apply-spec.yaml.
    • PROJECT_ID: tu ID de proyecto.

Terraform

Para cada clúster en el que quieras configurar Config Sync, aplica un bloque de recursos google_gkehub_feature_membership que contenga bloques configmanagement y config_sync, como en el siguiente ejemplo:

git

data "google_project" "default" {}

resource "google_container_cluster" "default" {
  name     = "gke-autopilot-basic"
  location = "us-central1"

  fleet {
    project = data.google_project.default.project_id
  }

  enable_autopilot = true
}

resource "google_gke_hub_feature" "configmanagement_feature" {
  name     = "configmanagement"
  location = "global"
}

resource "google_gke_hub_feature_membership" "configmanagement_feature_member" {
  location = "global"

  feature             = google_gke_hub_feature.configmanagement_feature.name
  membership          = google_container_cluster.default.fleet[0].membership_id
  membership_location = google_container_cluster.default.fleet[0].membership_location

  configmanagement {
    config_sync {
      # The field `enabled` was introduced in Terraform version 5.41.0, and
      # needs to be set to `true` explicitly to install Config Sync.
      enabled = true
      git {
        sync_repo   = "REPO"
        sync_branch = "BRANCH"
        policy_dir  = "DIRECTORY"
        secret_type = "SECRET"
      }
    }
  }
}

Haz los cambios siguientes:

  • REPO: la URL del repositorio de Git que contiene los archivos de configuración.
  • BRANCH: la rama del repositorio, por ejemplo, main.
  • DIRECTORY: la ruta del repositorio de Git que representa el nivel superior del repositorio que quieres sincronizar.
  • SECRET: el tipo de autenticación secreta.

oci

data "google_project" "default" {}

resource "google_container_cluster" "default" {
  name     = "gke-autopilot-basic"
  location = "us-central1"

  fleet {
    project = data.google_project.default.project_id
  }

  enable_autopilot = true
}

resource "google_gke_hub_feature" "configmanagement_feature" {
  name     = "configmanagement"
  location = "global"
}

resource "google_gke_hub_feature_membership" "configmanagement_feature_member" {
  location = "global"

  feature             = google_gke_hub_feature.configmanagement_feature.name
  membership          = google_container_cluster.default.fleet[0].membership_id
  membership_location = google_container_cluster.default.fleet[0].membership_location

  configmanagement {
    config_sync {
      # The field `enabled` was introduced in Terraform version 5.41.0, and
      # needs to be set to `true` explicitly to install Config Sync.
      enabled = true
      oci {
        sync_repo   = "REPO"
        policy_dir  = "DIRECTORY"
        secret_type = "SECRET"
      }
    }
  }
}

Haz los cambios siguientes:

  • REPO: la URL del repositorio de imágenes de OCI que contiene los archivos de configuración.
  • DIRECTORY: la ruta absoluta del directorio que contiene los recursos que quieres sincronizar. Para usar el directorio raíz, deje este campo en blanco.
  • SECRET: el tipo de autenticación secreta.

Repite este proceso con cada clúster que quieras sincronizar.

Para obtener más información sobre el uso de Terraform, consulta Compatibilidad de Terraform con Config Sync.

Después de configurar el repositorio raíz, puedes configurar la sincronización desde varios repositorios, incluidos otros repositorios raíz y repositorios de espacios de nombres. Los repositorios de espacios de nombres son útiles si quieres que un repositorio que contenga configuraciones de ámbito de espacio de nombres se sincronice con un espacio de nombres concreto en todos los clústeres.

Verificar la instalación

Después de instalar y configurar Config Sync, puedes verificar que la instalación se haya completado correctamente.

gcloud

Ejecuta el siguiente comando:

nomos status

Si la instalación se ha realizado correctamente, el estado será SYNCED o PENDING.

Para obtener más información sobre la información proporcionada por nomos status, incluidos los errores notificados, consulta Comprobar el estado de Config Sync en la documentación de la herramienta de línea de comandos nomos.

consola

Este agente debe seguir estos pasos:

  1. En la Google Cloud consola, ve a la página Configuración de la sección Funciones.

    Ir a Configuración

  2. En la pestaña Paquetes, consulte la columna Estado de sincronización de la tabla de clústeres. Si Config Sync se ha instalado correctamente, su estado será Instalado. Una fuente de información configurada correctamente tiene el estado Sincronizado.

Siguientes pasos