Agrega parámetros de configuración a una fuente de confianza

En esta página, se explica cómo agregar y organizar configuraciones almacenadas en una fuente de información.

Información acerca de los parámetros de configuración

El Sincronizador de configuración está diseñado para operadores de clúster que administran muchos clústeres. Puedes asegurarte de que tus clústeres cumplan con los estándares empresariales y de cumplimiento si permites que el Sincronizador de configuración administre espacios de nombres, roles, RoleBindings, ResourceQuotas y otros objetos importantes de Kubernetes en toda tu flota.

Cuando el Sincronizador de configuración administra estos recursos, mantiene los clústeres inscritos sincronizados mediante archivos de configuración. Un archivo de configuración es un archivo YAML o JSON que se almacena en una fuente de información. El Sincronizador de configuración admite repositorios de Git, imágenes de OCI y gráficos de Helm como fuente de información. Los archivos de configuración contienen el mismo tipo de detalles de configuración que puedes aplicar de forma manual a un clúster mediante el comando kubectl apply. Puedes crear un archivo de configuración para cualquier objeto de Kubernetes que pueda existir en un clúster. Sin embargo, algunos objetos de Kubernetes, como los Secrets, contienen información sensible, y puede ser inapropiado almacenarlos en una fuente de información. Usa tu criterio cuando decidas administrar estos tipos de objetos mediante el Sincronizador de configuración.

También puedes usar el Sincronizador de configuración con Config Connector para sincronizar los archivos de configuración de los recursos deGoogle Cloud . Para obtener más información sobre cómo trabajar con Config Connector, consulta cómo administrar recursos de Google Cloud con Config Connector. También puedes simplificar la instalación del Sincronizador de configuración y Config Connector si configuras el controlador de configuración.

Limitaciones

No puedes cambiar ningún campo inmutable en una configuración solo cambiando el valor en la fuente de la verdad. Si necesitas actualizar un campo inmutable, borra manualmente el objeto en el clúster. Luego, el Sincronizador de configuración puede volver a crear el objeto con el valor del campo nuevo.

Selecciona cómo organizar tus archivos de configuración

El Sincronizador de configuración usa una fuente de información para el almacenamiento de la configuración y el control de versión. Existen dos formatos diferentes que puedes elegir para tu fuente de información: no estructurado y jerárquico.

El formato fuente no estructurado te permite organizar la configuración de la manera que sea más conveniente. Este formato puede ser muy útil si organizas o generas archivos de configuración con una herramienta como Kustomize, kpt o Helm. Para ver un ejemplo de cómo puedes organizar tus archivos de configuración, consulta Formato de ejemplo para un repositorio no estructurado.

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

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

Funciones compatibles 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 el formato de un objeto RootSync o la fuente de información central. Admitido Admitido
Se usa como el formato de un objeto RepoSync Admitido No compatible
ClusterSelector Admitido Compatible
NamespaceSelector Compatible Admitido
El comando nomos hydrate Compatible con la marca --source-format=unstructured Admitido
El comando nomos init No compatible Admitido
El comando nomos vet Compatible con la marca --source-format=unstructured Admitido
Todos los demás comandos nomos Admitido Admitido
Espacios de nombres abstractos No compatible Admitido
Repo objetos No compatible Admitido
Objetos HierarchyConfig No compatible Admitido

Cuándo agregar parámetros de configuración a la fuente

Si creas un formato no estructurado, puedes comenzar a agregarle archivos de configuración apenas se cree. Si creas un formato jerárquico, usa el comando nomos init para inicializar la fuente de información o crea la estructura del directorio de forma manual.

Los directorios vacíos no se pueden confirmar en un repositorio de Git, por lo que antes de configurar el Sincronizador de configuración, debes crear archivos de configuración y agregarlos a tu repositorio.

Después de crear la fuente de información y agregarle archivos de configuración, usa el comando nomos vet para verificar la estructura de la fuente de información y verificar la sintaxis y la validez de los archivos de configuración.

Configura el Sincronizador de configuración para que lea información desde la fuente de información

Después de crear una fuente de información y colocarle tus archivos de configuración, puedes configurar el Sincronizador de configuración para leer desde la fuente. Después de completar este paso, el Sincronizador de configuración sincroniza los archivos de configuración de tu fuente de información con tus clústeres.

Puedes configurar la ubicación de la fuente de información cuando instalas el Sincronizador de configuración y puedes editar su configuración más adelante. Además de la ubicación de la fuente de información, puedes especificar una rama o un subdirectorio que deseas observar si la fuente tiene otro contenido aparte de archivos de configuración.

Si usas un formato jerárquico y, luego, instalas el Sincronizador de configuración de forma manual con kubectl, no coloques el archivo de configuración del operador en el directorio system/ ni en ninguno de los otros directorios reservados, como cluster/ o namespaces/. Colocar los archivos de configuración en uno de los directorios reservados hace que nomos vet falle y registre un error, como KNV1033: IllegalSystemResourcePlacementError, KNV1038: IllegalKindInNamespacesError o KNV1039: IllegalKindInClusterError.

Puedes otorgar a las personas acceso a la fuente de información de la implementación de un equipo de productos determinado. Sin embargo, cuando le otorgas a una persona acceso a una fuente de confianza de la implementación, a esa persona también se le otorga el mismo RBAC que el conciliador que se ejecuta para esa fuente de confianza.

Para configurar la autenticación y la autorización entre el Sincronizador de configuración y la fuente de información, consulta el paso de instalación sobre la configuración del Secret git-creds.

Ignora mutaciones de objetos

Si no quieres que el Sincronizador de configuración mantenga el estado del objeto en el clúster después de su existencia, puedes agregar la anotación client.lifecycle.config.k8s.io/mutation: ignore al objeto en el que deseas que el Sincronizador de configuración ignore las mutaciones.

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

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

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

No puedes modificar de forma manual esta anotación en los objetos administrados del clúster.

¿Qué sigue?