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
yview
. 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
- Consulta cómo gestionar espacios de nombres y objetos centrados en espacios de nombres.
- Para saber cómo publicar una imagen OCI, consulta Sincronizar artefactos OCI desde Artifact Registry.
- Para saber cómo sincronizar desde un gráfico de Helm, consulta Sincronizar gráficos de Helm desde Artifact Registry.