Añadir configuraciones a una fuente de información veraz

En esta página se explica cómo añadir y organizar las configuraciones almacenadas en una fuente de información veraz.

Acerca de las configuraciones

Config Sync está diseñado para operadores de clústeres que gestionan muchos clústeres. Puedes asegurarte de que tus clústeres cumplan los estándares empresariales y de cumplimiento dejando que Config Sync gestione los espacios de nombres, los roles, los enlaces de roles, las cuotas de recursos y otros objetos importantes de Kubernetes en toda tu flota.

Cuando Config Sync gestiona estos recursos, mantiene sincronizados los clústeres registrados mediante configuraciones. Una configuración es un archivo YAML o JSON que se almacena en una fuente de información veraz. Config Sync admite repositorios de Git, imágenes OCI y gráficos de Helm como fuente de información principal. Las configuraciones contienen el mismo tipo de detalles de configuración que puedes aplicar manualmente a un clúster mediante el comando kubectl apply. Puedes crear una configuración para cualquier objeto de Kubernetes que pueda existir en un clúster. Sin embargo, algunos objetos de Kubernetes, como los secretos, contienen información sensible que podría no ser adecuada para almacenar en una fuente de información veraz. Decide si quieres gestionar estos tipos de objetos con Config Sync según tu propio criterio.

También puedes usar Config Sync con Config Connector para sincronizar configuraciones de Google Cloud recursos. Para obtener más información sobre cómo trabajar con Config Connector, consulta el artículo sobre gestión Google Cloud de recursos con Config Connector. También puedes simplificar la instalación de Config Sync y Config Connector configurando Config Controller.

Limitaciones

  • Algunos recursos de Kubernetes contienen campos inmutables, como los selectores de pods en un objeto Deployment. No puedes cambiar ningún campo inmutable de una configuración cambiando el valor en la fuente de información veraz. Si intenta hacer este cambio, se producirá un error KNV2009. Si necesitas cambiar un campo inmutable, elimina el objeto de tu fuente de información veraz, espera a que Config Sync elimine el objeto del clúster y, a continuación, vuelve a crear el objeto en tu fuente de información veraz con los cambios.

  • Si usas submódulos de Git, debes conceder acceso a Config Sync a todos los repositorios, incluidos los submódulos.

  • No puedes usar Config Sync para gestionar directamente los ClusterRoles de Kubernetes integrados. GKE incluye algunos roles orientados al usuario, como cluster-admin, admin, edit y view. No puedes gestionar directamente estos ClusterRoles con Config Sync, ya que, de lo contrario, Config Sync entrará en conflicto con GKE. Para añadir permisos a los ClusterRoles integrados, usa la agregación de roles para modificarlos indirectamente. Para modificar los roles, crea un ClusterRole con un nombre único en tu fuente de información veraz con las anotaciones adecuadas.

Selecciona cómo quieres organizar tus configuraciones

Config Sync usa una fuente de información principal para el almacenamiento de la configuración y el control de versiones. Puede elegir entre dos formatos para su fuente de información veraz: no estructurado y jerárquico.

El formato de origen no estructurado le permite organizar las configuraciones de la forma que le resulte más cómoda. Este formato puede ser especialmente útil si organizas o generas configuraciones con una herramienta como Kustomize, kpt o Helm. Para ver un ejemplo de cómo puedes organizar tus configuraciones, consulta el formato de ejemplo de un repositorio no estructurado.

El formato de origen jerárquico o estructurado separa las configuraciones en categorías distintas para ayudarte a organizarlas. Las categorías son configuración del sistema, metadatos del clúster, configuración a nivel de clúster y configuración del espacio de nombres. Para obtener más información sobre el formato de origen jerárquico, consulta Estructura del repositorio jerárquico.

El formato no estructurado es el recomendado para la mayoría de los usuarios. Además, cuando configures objetos RepoSync, debes usar el formato de origen no estructurado.

Funciones admitidas para formatos no estructurados y jerárquicos

En la siguiente tabla se destacan las diferencias entre los formatos no estructurados y jerárquicos:

Funciones Formato no estructurado (recomendado) Formato jerárquico
Se usa como formato de un objeto RootSync o como fuente de información veraz central. Compatible Compatible
Se usa como formato de un objeto RepoSync. Compatible No compatible
ClusterSelector Compatible Compatible
NamespaceSelector Compatible Compatible
El comando nomos hydrate Admitido con la marca --source-format=unstructured Compatible
El comando nomos init No compatible Compatible
El comando nomos vet Admitido con la marca --source-format=unstructured Compatible
Todos los demás comandos de nomos Compatible Compatible
Espacios de nombres abstractos No compatible Compatible
Repo objetos No compatible Compatible
Objetos HierarchyConfig No compatible Compatible

Cuándo añadir configuraciones a la fuente

Si vas a crear un formato no estructurado, puedes empezar a añadir configuraciones en cuanto se cree. Si vas a crear un formato jerárquico, usa el comando nomos init para inicializar la fuente de información o crea la estructura de directorios manualmente.

Los directorios vacíos no se pueden confirmar en un repositorio de Git, por lo que, antes de configurar Config Sync, debes crear configuraciones y añadirlas a tu repositorio.

Una vez que hayas creado la fuente de datos fiable y le hayas añadido configuraciones, usa el comando nomos vet para verificar la estructura de la fuente de datos fiable y comprobar la sintaxis y la validez de las configuraciones.

Configurar Config Sync para que lea de la fuente de información veraz

Una vez que hayas creado una fuente de información veraz y hayas colocado tus configuraciones en ella, puedes configurar Config Sync para que lea de la fuente. Una vez que hayas completado este paso, Config Sync sincronizará las configuraciones de tu fuente de información veraz con tus clústeres.

La ubicación de la fuente de información veraz se configura cuando instalas Config Sync y puedes editar la configuración de Config Sync más adelante. Además de la ubicación de la fuente de información veraz, puedes especificar una rama o un subdirectorio que quieras monitorizar si la fuente tiene contenido que no sean configuraciones.

Si usas un formato jerárquico y instalas Config Sync manualmente con kubectl, no coloques la configuración del operador en el directorio system/ ni en ningún otro directorio reservado, como cluster/ o namespaces/. Si colocas la configuración en uno de los directorios reservados, se producirá un error en nomos vet y se registrará un error como KNV1033: IllegalSystemResourcePlacementError, KNV1038: IllegalKindInNamespacesError o KNV1039: IllegalKindInClusterError.

Puedes conceder acceso a los usuarios a la fuente de información fiable de la implementación de un equipo de producto concreto. Sin embargo, cuando concede acceso a una persona a una fuente de información veraz de una implementación, también se le concede el mismo control de acceso basado en roles que al reconciliador que se ejecuta en esa fuente de información veraz.

Para configurar la autenticación y la autorización entre Config Sync y la fuente de información veraz, consulta el paso de instalación sobre cómo configurar el secreto git-creds.

Ignorar mutaciones de objetos

Si no quieres que Config Sync mantenga el estado del objeto en el clúster después de que exista, puedes añadir la anotación client.lifecycle.config.k8s.io/mutation: ignore al objeto en el que quieras que Config Sync ignore las mutaciones.

Para usar la anotación, debes habilitar las APIs RootSync y RepoSync.

En el siguiente ejemplo se muestra cómo añadir la anotación a un objeto:

metadata:
  annotations:
    client.lifecycle.config.k8s.io/mutation: ignore 

No puedes modificar manualmente esta anotación en objetos gestionados del clúster.

Siguientes pasos