Usa archivos de configuración en repositorios de Git

En esta página, se describen los archivos de configuración, los archivos que el Sincronizador de configuración lee desde Git y aplica a tus clústeres de forma automática. Puedes crear una archivo de configuración y confirmarlo en tu repositorio.

El Sincronizador de configuración 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 tu repositorio de Git y contiene los mismos tipos de detalles de configuración que puedes aplicar de forma manual a un clúster mediante el comando kubectl apply. En este tema, se explica cómo inicializar un repositorio de Git para almacenar los archivos de configuración, cómo organizar el directorio de archivos de configuración y cómo configurar el Sincronizador de configuración para que lea los archivos 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, funciones, RoleBindings, ResourceQuotas y otros objetos importantes de Kubernetes en toda tu flota. Puedes crear un archivo de configuración para cualquier objeto de Kubernetes que pueda existir en un clúster.

Inicializa un repositorio de Git

El Sincronizador de configuración usa un repositorio de Git para el almacenamiento y el control de versiones, y realiza acciones basadas en su contenido. En el Sincronizador de configuración, este repositorio se denomina repositorio.

Para el formato no estructurado, puedes inicializar un repositorio de Git vacío y comenzar a agregar archivos de configuración en el repositorio. Para el formato jerárquico, puedes inicializar un repositorio mediante el comando nomos init o puedes crear la estructura del directorio de forma manual.

Los directorios vacíos no se pueden confirmar en un repositorio de Git. Puedes usar el comando nomos vet para verificar la estructura del repositorio, incluso si creaste el repositorio de forma manual.

Diseño de la configuración

Hay dos formatos diferentes para un 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.

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

En la siguiente tabla, se destacan las diferencias entre los formatos de repositorio jerárquico y no estructurado:

Funciones Formato del repositorio jerárquico Formato del repositorio no estructurado
Selectores de espacios de nombres Admitido Admitido
Selectores de clústeres Admitido Admitido
Espacios de nombres abstractos Admitido No compatible
Repo objetos Admitido No compatible
Objetos HierarchyConfig Admitido No compatible
Espacios de nombres jerárquicos en el controlador de jerarquía No compatible Admitido
Se usa como el formato de un repositorio de espacio de nombres No compatible Admitido
Se usa como el formato de un repositorio raíz Admitido Admitido
Se usa junto con el controlador de jerarquía No recomendado Admitido
El comando nomos init Admitido No compatible
El comando nomos hydrate Admitido No compatible
El comando nomos vet Admitido Compatible con la marca --source-format=unstructured
Todos los demás comandos nomos Admitido Admitido

Ejemplo de un diseño de archivo de configuración no estructurado

En el siguiente ejemplo, se muestra una manera de organizar los archivos de configuración, incluidos los recursos de Google Cloud.

Puedes colocar tus archivos de configuración sin procesar en un directorio raw-configs, usar una secuencia de comandos o una canalización automatizada para procesar los archivos de configuración sin procesar y almacenar el resultado en el directorio manifests. Al final, debes configurar el Sincronizador de configuración para que se sincronice desde tu directorio manifests.

├── manifests
│   ├── access-control
│   │   ├── ...
│   ├── change-control
│   │   ├── ...
│   ├── git-ops
│   │   └── ...
│   ├── logging-monitoring
│   │   └── ...
│   ├── networking
│   │   └── ...
│   ├── project-factory
│   │   └── ...
│   └── resource-hierarchy
│   │   └── ...
├── raw-configs
│   ├── access-control
│   │   └── ...
│   ├── change-control
│   │   └── ...
│   ├── git-ops
│   │   └── ...
│   ├── logging-monitoring
│   │   └── ...
│   ├── networking
│   │   └── ...
│   ├── project-factory
│   │   └── ...
│   └── resource-hierarchy
│   │   └── ...
└── scripts
    └── render.sh

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

Debes configurar la ubicación del repositorio cuando instalas el Sincronizador de configuración, y puedes editar su configuración más adelante en el archivo de configuración del operador. 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.

Después de actualizar el archivo de configuración, puedes aplicarlo al clúster mediante el comando kubectl apply. El Sincronizador de configuración no administra la configuración del operador.

Puedes otorgar a las personas acceso al repositorio de implementación de un equipo de productos determinado. Sin embargo, debes tener en cuenta que cuando otorgas a una persona acceso a un repositorio de implementaciones, esa persona también recibe 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 secreto git-creds.

¿Qué sigue?