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 die gleichen 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. Einige Kubernetes-Objekte wie Secrets enthalten jedoch 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 im Cluster manuell. 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 den Konfigurationsspeicher und die 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 so organisieren, wie es für Sie am bequemsten ist. 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 Funktionen 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 als zentrale Datenquelle 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 Konfigurationen zur Quelle hinzugefügt werden sollten

Wenn Sie ein unstrukturiertes Format erstellen, können Sie ihm Konfigurationen hinzufügen, sobald das Format erstellt ist. 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.

Für leere Verzeichnisse kann kein Commit für ein Git-Repository durchgeführt werden. Bevor Sie Config Sync konfigurieren, müssen Sie also Konfigurationen erstellen und dem Repository hinzufügen.

Nachdem Sie die „Source of Truth“ erstellt und Konfigurationen hinzugefügt haben, prüfen Sie mit dem Befehl nomos vet die Struktur der „Source of Truth“ sowie die Syntax und Gültigkeit der Konfigurationen.

Konfigurieren Sie Config Sync so, dass Daten aus der „Source of Truth“ gelesen werden

Nachdem Sie eine „Source of Truth“ erstellt und Ihre Konfigurationen darin eingefügt haben, können Sie Config Sync so konfigurieren, dass aus der Quelle gelesen wird. Nachdem 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 bzw. das beobachtet werden soll, wenn die Quelle andere Inhalte als Konfigurationen enthält.

Wenn Sie ein hierarchisches Format verwenden und Config Sync manuell mit kubectl installieren, sollten Sie die Konfiguration des Operators nicht im Verzeichnis system/ oder in einem der anderen reservierten Verzeichnisse wie cluster/ oder namespaces/ ablegen. 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 Bereitstellungsquelle eines bestimmten Produktteams gewähren. Wenn Sie einer Person jedoch Zugriff auf eine „Source of Truth“ für die Bereitstellung gewähren, erhält sie dieselbe 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 Secrets git-creds.

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.

Wenn Sie die Annotation verwenden möchten, müssen Sie die RootSync API 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