Unstrukturiertes Repository verwenden

Wenn Sie ein unstrukturiertes Repository erstellen, können Sie Ihr Repository beliebig organisieren, ohne die Standardstruktur des Repository-Verzeichnisses zu befolgen. Anthos Config Management synchronisiert denselben Satz von Kubernetes-Objekten mit Ihrem Cluster wie im standardmäßigen, hierarchischen Repository.

Auf diese Weise können Sie Ihre vorhandene Kubernetes-Konfiguration mit Ihrem Anthos Config Management-Repository synchronisieren. Wenn Sie beispielsweise ein Helm-Diagramm mit Ihrem Cluster synchronisieren möchten, können Sie helm template ausführen und das gerenderte Manifest in Ihr Repository übertragen.

Beschränkungen

Unstrukturierte Repositories unterstützen nicht alle Funktionen von Anthos Config Management. In diesem Abschnitt werden die Hauptunterschiede zwischen hierarchischen und unstrukturierten Repositories beschrieben.

Nicht unterstützte Objekte

Sie können die Kubernetes-Objekte Repo und HierarchyConfig nicht in einem unstrukturierten Repository verwenden.

Namespace-bezogene Objekte

Abstrakte Namespaces werden in unstrukturierten Repositories nicht unterstützt.

In einem unstrukturierten Repository müssen alle Namespace-bezogenen Objekte entweder die Annotation metadata.namespace oder die Annotation NamespaceSelector deklarieren. Die Angabe beider Annotationen ist ungültig. Wenn in Namespace-bezogenen Ressourcen metadata.namespace oder die Annotation NamespaceSelector nicht deklariert wird, verwendet Anthos Config Management den Standard-Namespace des Clusters. Weitere Informationen zur Semantik von NamespaceSelector finden Sie unter Selektoren.

Selektoren

Sie können ClusterSelectors und NamespaceSelectors in einem unstrukturierten Repository deklarieren.

In einem unstrukturierten Repository funktionieren ClusterSelectors normal.

In einem unstrukturierten Repository werden Objekte, die die Annotation NamespaceSelector deklarieren, auf alle Namespaces angewendet, die die Bedingungen des NamespaceSelector erfüllen. Bevor Sie ein unstrukturiertes Repository mit Objekten erstellen, die zuvor in einem hierarchischen Repository verwendet wurden, sollten Sie prüfen, ob Ihre NamespaceSelectors nicht auf zusätzliche Ressourcen angewendet werden.

Unstrukturiertes Repository konfigurieren

Wenn Sie ein unstrukturiertes Repository konfigurieren möchten, setzen Sie den Wert von spec.sourceFormat in config-management.yaml auf unstructured.

Mit config-management.yaml wird im Folgenden beispielsweise die Continuous Integration-Pipeline eingerichtet.

# config-management.yaml

apiVersion: configmanagement.gke.io/v1
kind: ConfigManagement
metadata:
  name: config-management
spec:
  # clusterName is required and must be unique among all managed clusters
  clusterName: my-cluster
  git:
    syncRepo: https://github.com/GoogleCloudPlatform/csp-config-management/ 
    syncBranch: 1.0.0
    secretType: ssh
    policyDir: ci-pipeline-unstructured
  sourceFormat: unstructured

Weitere Informationen

Siehe das Beispiel eines unstrukturierten Repositorys in der Continuous Integration Pipeline.