Agrega archivos de configuración a los repositorios de Git

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 un repositorio de Git. 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 un repositorio de Git. 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 a fin de sincronizar los archivos de configuración para los recursos de Google Cloud. Para obtener más información sobre cómo trabajar con Config Connector, consulta Administra 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.

En esta página, se muestra cómo agregar archivos de configuración a tus repositorios. Para aprender a crear un archivo de configuración, consulta Crear archivos de configuración.

Selecciona cómo organizar tus archivos de configuración

El Sincronizador de configuración usa un repositorio de Git para el almacenamiento del archivo de configuración y el control de versiones. Existen dos formatos diferentes que puedes elegir para tu repositorio: no estructurado y jerárquico.

El formato fuente no estructurado te permite organizar la configuración de tu repositorio 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 la estructura del repositorio jerárquico, consulta Estructura del repositorio jerárquico.

Este es el formato recomendado para la mayoría de los usuarios. Además, los repositorios de espacio de nombres deben usar el formato de repositorio no estructurado.

Funciones compatibles para repositorios 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 repositorio raíz Admitido Admitido
Se usa como el formato de un repositorio de espacio de nombres Admitido No compatible
Se usa junto con el controlador de jerarquía Admitido No recomendado
Selectores de clústeres Admitido Admitido
Selectores de espacios de nombres Admitido 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
Espacios de nombres jerárquicos en el controlador de jerarquía Admitido No compatible

Agrega archivos de configuración a tu repositorio

Si creas un repositorio no estructurado, puedes comenzar a agregarle archivos de configuración apenas se cree. Si creas un repositorio jerárquico, usa el comando nomos init para inicializar el repositorio o crear la estructura del directorio manualmente.

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

Después de crear el repositorio y agregarle archivos de configuración, usa el comando nomos vet para verificar la estructura del repositorio 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 el repositorio

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

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

Si usas un repositorio 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 al repositorio de implementación de un equipo de productos determinado. Sin embargo, cuando le otorgas a una persona acceso a un repositorio de implementación, a esa persona también se le otorga el mismo RBAC que el conciliador que se ejecuta para ese repositorio.

Para configurar la autenticación y la autorización entre el Sincronizador de configuración y el repositorio, 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 la sincronización desde varios repositorios y usar una versión 1.7.0 o posterior. La sincronización desde varios repositorios se habilita de forma predeterminada si usaste Google Cloud Console o Google Cloud CLI para instalar el Sincronizador de configuración con una versión 1.7.0 o posterior. Si instalaste el Sincronizador de configuración con kubectl, configura spec.enableMultiRepo como true en tu objeto ConfigManagement.

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?