Konfigurationen zu einer "Source of Truth" hinzufügen

Auf dieser Seite wird erläutert, wie Sie in einer Source of Truth gespeicherte Konfigurationen hinzufügen und organisieren.

Konfigurationen

Config Sync wurde für Clusteroperatoren entwickelt, die viele Cluster verwalten. Wenn Sie Config Sync für die Verwaltung von Namespaces, Roles, RoleBindings, ResourceQuotas und anderen wichtigen Kubernetes-Objekten in Ihrer gesamten Flotte verwenden, können Sie gewährleisten, dass Ihre Cluster die geltenden Unternehmens- und Compliancestandards erfüllen.

Wenn Config Sync diese Ressourcen verwaltet, werden Ihre registrierten Cluster mithilfe von Konfigurationen synchron gehalten. Eine Konfiguration ist eine YAML- oder JSON-Datei, die in einer "Source of Truth" gespeichert ist. Config Sync unterstützt Git-Repositories, OCI-Images und Helm-Diagramme als "Source of Truth". Konfigurationen enthalten dieselben Konfigurationsdetails, die Sie mit dem Befehl kubectl apply manuell auf einen Cluster anwenden können. Sie können eine Konfiguration für jedes Kubernetes-Objekt erstellen, das in einem Cluster vorhanden sein kann. Warnung: Einige Kubernetes-Objekte, z. B. Secrets, enthalten vertrauliche Informationen, die möglicherweise nicht in einer "Source of Truth" gespeichert werden sollten. Sie sich gut überlegen, ob Sie diese Objekttypen mit Config Sync verwalten möchten.

Sie können Config Sync auch mit Config Connector verwenden, um Konfigurationen für Google Cloud-Ressourcen zu synchronisieren. Weitere Informationen zur Arbeit mit Config Connector finden Sie unter Google Cloud-Ressourcen mit Config Connector verwalten. Sie können die Installation von Config Sync und Config Connector vereinfachen, indem Sie Config Controller einrichten.

Beschränkungen

Sie können ein unveränderliches Feld in einer Konfiguration nicht ändern, indem Sie den Wert in der "Source of Truth" ändern. Wenn Sie ein unveränderliches Feld aktualisieren müssen, löschen Sie das Objekt manuell im Cluster. Config Sync kann das Objekt dann mit dem neuen Feldwert neu erstellen.

Organisation von Konfigurationen auswählen

Config Sync verwendet eine "Source of Truth" für die Konfigurationsspeicherung und -versionsverwaltung. Es gibt zwei verschiedene Formate, die Sie als „Source of Truth“ auswählen können: unstrukturiert und hierarchisch.

Mit dem unstrukturierten Quellformat können Sie Konfigurationen auf beliebige Weise organisieren. Dieses Format kann besonders nützlich sein, wenn Sie Konfigurationen mit einem Tool wie Kustomize, kpt oder Helm organisieren oder generieren. Ein Beispiel für die Organisation Ihrer Konfigurationen finden Sie unter Beispielformat für ein unstrukturiertes Repository.

Das hierarchische oder strukturierte Quellformat unterteilt Konfigurationen in verschiedene Kategorien, damit Sie die Konfigurationen organisieren können. Die Kategorien sind Systemkonfiguration, Clustermetadaten, Clusterebene und Namespace-Konfiguration. Weitere Informationen zum hierarchischen Quellformat finden Sie unter Struktur des hierarchischen Repositorys.

Für die meisten Nutzer ist das unstrukturierte Format empfehlenswert. Außerdem müssen Sie beim Konfigurieren von RepoSync-Objekten das unstrukturierte Quellformat verwenden.

Unterstützte Features für unstrukturierte und hierarchische Formate

In der folgenden Tabelle werden die Unterschiede zwischen den unstrukturierten und hierarchischen Formaten hervorgehoben:

Features Unstrukturiertes Format (empfohlen) Hierarchisches Format
Wird als Format für ein RootSync-Objekt oder die zentrale "Source of Truth" verwendet Unterstützt Unterstützt
Wird als Format für ein RepoSync-Objekt verwendet Unterstützt Nicht unterstützt
ClusterSelector Unterstützt Unterstützt
NamespaceSelector Unterstützt Unterstützt
Befehl nomos hydrate Unterstützt mit dem Flag --source-format=unstructured Unterstützt
Befehl nomos init Nicht unterstützt Unterstützt
Befehl nomos vet Unterstützt mit dem Flag --source-format=unstructured Unterstützt
Alle anderen nomos-Befehle Unterstützt Unterstützt
Abstrakte Namespaces Nicht unterstützt Unterstützt
Repo objects Nicht unterstützt Unterstützt
HierarchyConfig-Objekte Nicht unterstützt Unterstützt

Wann Sie der Quelle Konfigurationen hinzufügen sollten

Wenn Sie ein unstrukturiertes Format erstellen, können Sie sofort Konfigurationen hinzufügen. Wenn Sie ein hierarchisches Format erstellen, verwenden Sie den Befehl nomos init, um die „Source of Truth“ zu initialisieren, oder erstellen Sie die Verzeichnisstruktur manuell.

Leere Verzeichnisse können nicht an ein Git-Repository übergeben werden. Erstellen Sie daher vor der Konfiguration von Config Sync Konfigurationen und fügen Sie sie Ihrem Repository hinzu.

Nachdem Sie die "Source of Truth" erstellt und Konfigurationen hinzugefügt haben, prüfen Sie mit dem Befehl nomos vet die Struktur dieser "Source of Truth" und die Syntax und Gültigkeit von Ihre Konfigurationen.

Config Sync zum Lesen aus der "Source of Truth" konfigurieren

Nachdem Sie eine "Source of Truth" erstellt und Ihre Konfigurationen darin eingefügt haben, können Sie Config Sync für das Lesen aus der Quelle konfigurieren. Wenn Sie diesen Schritt abgeschlossen haben, synchronisiert Config Sync Konfigurationen aus Ihrer "Source of Truth" mit Ihren Clustern.

Sie konfigurieren den Speicherort der "Source of Truth" bei der Installation von Config Sync und können die Konfiguration von Config Sync später bearbeiten. Zusätzlich zum Speicherort der "Source of Truth" können Sie einen Zweig oder ein Unterverzeichnis angeben, das überwacht werden soll, wenn die Quelle andere Inhalte als Konfigurationen enthält.

Wenn Sie ein hierarchisches Format verwenden und Config Sync manuell mit kubectl installieren, legen Sie die Konfiguration des Operators nicht im Verzeichnis system/ ab und auch in keinem der anderen reservierten Verzeichnisse wie cluster/ oder namespaces/. Wenn Sie die Konfiguration in einem der reservierten Verzeichnisse platzieren, schlägt nomos vet fehl und protokolliert einen Fehler wie KNV1033: IllegalSystemResourcePlacementError, KNV1038: IllegalKindInNamespacesError oder KNV1039: IllegalKindInClusterError.

Sie können Nutzern Zugriff auf die "Source of Truth" eines bestimmten Produktteams für die Bereitstellung gewähren. Wenn Sie einer Person jedoch Zugriff auf eine „Source of Truth“ für die Bereitstellung gewähren, erhält diese Person auch denselben RBAC wie der Abgleicher, der für diese "Source of Truth" ausgeführt wird.

Informationen zum Konfigurieren der Authentifizierung und Autorisierung zwischen Config Sync und der "Source of Truth" finden Sie im Installationsschritt zum Konfigurieren des git-creds-Secrets.

Objektmutationen ignorieren

Wenn Sie nicht möchten, dass Config Sync den Status des Objekts in einem Cluster behält, nachdem es vorhanden ist, können Sie dem Objekt die Annotation client.lifecycle.config.k8s.io/mutation: ignore hinzufügen, dass Config Sync Mutationen ignorieren soll.

Um die Annotation zu verwenden, müssen Sie die RootSync- und RepoSync APIs aktivieren.

Das folgende Beispiel zeigt, wie Sie die Annotation einem Objekt hinzufügen:

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

Sie können diese Annotation nicht manuell für verwaltete Objekte im Cluster ändern.

Nächste Schritte