Ajouter des configurations à une source fiable

Cette page explique comment ajouter et organiser des configurations stockées dans une source d'informations.

À propos des configurations

Config Sync est conçu pour les opérateurs qui gèrent de nombreux clusters. Vous pouvez vous assurer que vos clusters respectent les normes métier et de conformité en laissant Config Sync gérer des objets Kubernetes importants, tels que Namespace, Role, RoleBinding ou ResourceQuota, pour l'ensemble de votre parc.

Lorsque Config Sync gère ces ressources, il synchronise vos clusters enregistrés à l'aide de configurations. Une configuration est un fichier YAML ou JSON stocké dans une source fiable. Config Sync est compatible avec les dépôts Git, les images OCI et les charts Helm comme source de référence. Les configurations contiennent le même type de détails de configuration que vous pouvez appliquer manuellement à un cluster à l'aide de la commande kubectl apply. Vous pouvez créer une configuration pour tout objet Kubernetes pouvant exister dans un cluster. Toutefois, certains objets Kubernetes, tels que les secrets, contiennent des informations sensibles qu'il peut être inapproprié de stocker dans une source fiable. Jugez vous-même s'il est pertinent de gérer ces types d'objets à l'aide de Config Sync.

Vous pouvez également utiliser Config Sync avec Config Connector pour synchroniser les configurations pour les ressources Google Cloud. Pour en savoir plus sur l'utilisation de Config Connector, consultez la page Gérer les ressources Google Cloud à l'aide de Config Connector. Vous pouvez également simplifier l'installation de Config Sync et de Config Connector en configurant Config Controller.

Limites

Vous ne pouvez pas modifier un champ immuable dans une configuration en modifiant la valeur dans la source de référence. Si vous devez mettre à jour un champ immuable, supprimez manuellement l'objet dans le cluster. Config Sync peut ensuite recréer l'objet avec la nouvelle valeur de champ.

Choisir comment organiser vos configurations

Config Sync utilise une source de référence pour le stockage de la configuration et le contrôle des versions. Vous pouvez choisir deux formats comme source de référence : non structuré et hiérarchique.

Le format source non structuré vous permet d'organiser les configurations de la manière la plus pratique. Ce format peut être particulièrement utile si vous organisez ou générez des configurations à l'aide d'un outil tel que Kustomize, kpt ou Helm. Pour obtenir un exemple d'organisation de vos configurations, consultez la section Exemple de format pour un dépôt non structuré.

Le format source hiérarchique (ou structuré) répartit les configurations en catégories distinctes pour vous aider à les organiser. Les différentes catégories sont les suivantes : la configuration système, les métadonnées du cluster, la configuration au niveau du cluster et la configuration de l'espace de noms. Pour en savoir plus sur le format de la source hiérarchique, consultez la page Structure du dépôt hiérarchique.

Le format non structuré est recommandé pour la plupart des utilisateurs. En outre, lorsque vous configurez des objets RepoSync, vous devez utiliser le format de source non structurée.

Fonctionnalités compatibles avec les formats non structurés et hiérarchiques

Le tableau suivant met en évidence les différences entre les formats non structurés et hiérarchiques :

Fonctionnalités Format non structuré (recommandé) Format hiérarchique
Utilisé comme format pour un objet RootSync ou comme source centrale de référence Compatible Compatible
Utilisé comme format pour un objet RepoSync Compatible Non compatible
ClusterSelector Compatible Compatible
NamespaceSelector Compatible Compatible
La commande nomos hydrate Compatible avec l'option --source-format=unstructured Compatible
La commande nomos init Non compatible Compatible
La commande nomos vet Compatible avec l'option --source-format=unstructured Compatible
Toutes les autres commandes nomos Compatible Compatible
Espaces de noms abstraits Non compatible Compatible
Repo objet Incompatible Compatible
Objets HierarchyConfig Incompatible Compatible

Quand ajouter des configurations à la source

Si vous créez un format non structuré, vous pouvez commencer à y ajouter des configurations dès qu'il est créé. Si vous créez un format hiérarchique, utilisez la commande nomos init pour initialiser la source fiable ou créez manuellement la structure de répertoires.

Les répertoires vides ne peuvent pas être validés dans un dépôt Git. Par conséquent, avant de configurer Config Sync, vous devez créer des configurations et les ajouter à votre dépôt.

Après avoir créé la source de référence et y avoir ajouté des configurations, utilisez la commande nomos vet pour vérifier la structure de votre source de référence, et vérifier la syntaxe et la validité de vos configurations.

Configurer Config Sync pour lire les données à partir de la source fiable

Une fois que vous avez créé une source de référence et y avez placé vos configurations, vous pouvez configurer Config Sync pour lire les données à partir de la source. Une fois cette étape terminée, Config Sync synchronise les configurations de votre source fiable avec vos clusters.

Vous configurez l'emplacement de la source de référence lorsque vous installez Config Sync et vous pouvez modifier la configuration de Config Sync ultérieurement. En plus de l'emplacement de la source fiable, vous pouvez spécifier une branche ou un sous-répertoire à surveiller, si la source présente des contenus autres que des configurations.

Si vous utilisez un format hiérarchique et que vous installez Config Sync manuellement avec kubectl, ne placez pas la configuration de l'opérateur dans le répertoire system/ ni dans aucun des autres répertoires réservés tels que cluster/ ou namespaces/. Si vous placez la configuration dans l'un des répertoires réservés, nomos vet échoue et journalise une erreur telle que KNV1033 : IllegalSystemResourcePlacementError, KNV1038 : IllegalKindInNamespacesError ou KNV1039 : IllegalKindInClusterError.

Vous pouvez autoriser des utilisateurs à accéder à une source d'informations fiables sur le déploiement d'une équipe produit donnée. Toutefois, lorsque vous accordez à une personne l'accès à une source fiable de déploiement, elle reçoit également le même RBAC que le rapprochement qui s'exécute pour cette source de référence.

Pour configurer l'authentification et l'autorisation entre Config Sync et la source fiable, consultez l'étape d'installation concernant la configuration du secret git-creds.

Ignorer les mutations d'objets

Si vous ne souhaitez pas que Config Sync conserve l'état de l'objet dans un cluster après son existence, vous pouvez ajouter l'annotation client.lifecycle.config.k8s.io/mutation: ignore à l'objet dans lequel vous souhaitez que Config Sync ignore les mutations.

Pour utiliser l'annotation, vous devez activer les API RootSync et RepoSync.

L'exemple suivant montre comment ajouter l'annotation à un objet :

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

Vous ne pouvez pas modifier manuellement cette annotation sur les objets gérés du cluster.

Étapes suivantes