RootSync- und RepoSync-Felder

Auf dieser Seite werden die verschiedenen Felder beschrieben, die Sie in Ihren RootSync- und RepoSync-Objekten sehen können. Sie können ein RootSync-Objekt erstellen, wenn Sie Config Sync mit kubectl installieren. Wenn Sie Config Sync mit der Google Cloud Console oder dem gcloud-Befehlszeilentool installieren, erstellt Config Sync automatisch ein RootSync-Objekt. Sie erstellen ein RepoSync-Objekt, wenn Sie die Synchronisierung aus Namespace-Repositories konfigurieren.

Darüber hinaus sind Details zur ResourceGroup enthalten. Config Sync erstellt diese Ressource automatisch, wenn Sie die Synchronisierung in mehrere Repositories aktivieren. Die Synchronisierung aus mehreren Repositories ist standardmäßig aktiviert, wenn Sie Config Sync mit der Version 1.7.0 oder höher mit der Google Cloud Console oder mit dem gcloud-Befehlszeilentool installiert haben.

Das folgende Diagramm gibt einen Überblick darüber, wie Config Sync diese Ressourcen erstellt:

Diagramm: Aktivierung durch den Operator

Nach der Erstellung steuert der Abgleichsmanager den Lebenszyklus des Root-Abgleichers und die einzelnen Namespace-Abgleichsprozesse:

Diagramm: Abgleichaktivierung

RootSync- und RepoSync-Felder

RootSync- und RepoSync-CRDs verwenden die gleichen Felder mit Ausnahme von spec.sourceFormat. Bei RepoSync-CRDs muss spec.sourceFormat unstructured sein. Der Standardwert ist unstructured.

Konfiguration für das Git-Repository

Schlüssel Beschreibung
spec.git.auth Die Art des Secrets, das für den Zugriff auf das Git-Repository konfiguriert ist. Es muss sein: ssh, cookiefile, gcenode, gcpserviceaccount, token oder none. Bei der Validierung dieses Feldes wird zwischen Groß- und Kleinschreibung unterschieden. Erforderlich.
spec.git.gcpServiceAccountEmail Das Google Cloud-Dienstkonto, das zum Annotationen des Kubernetes-Dienstkontos des RootSync- oder RepoSync-Controllers verwendet wird. Dieses Feld wird nur verwendet, wenn spec.git.auth den Wert gcpserviceaccount hat.
spec.git.branch Zweig des Repositorys, von dem aus synchronisiert werden soll. Standardeinstellung: master.
spec.git.dir Absoluter Pfad im Git-Repository zu dem Stammverzeichnis mit der Konfiguration, die Sie synchronisieren möchten. Standardeinstellung: Stammverzeichnis (/) des Repositorys.
spec.git.period Der Zeitraum zwischen aufeinanderfolgenden Synchronisierungen. Standardeinstellung: 15s.
spec.git.repo Die Git-Repository-URL, von der aus synchronisiert werden soll. Erforderlich.
spec.git.revision Die Git-Revision (Tag, Commit oder Hash) zum Auschecken. Standardeinstellung: HEAD.
spec.git.secretRef.name Der Name des Secrets, das zum Herstellen einer Verbindung zur Git-„Source of Truth“ verwendet wird.
spec.sourceFormat Das Format Ihres Git-Repositorys
Für RootSync-Objekte: Kann unstructured oder hierarchy sein. Standardeinstellung: hierarchy.
Für RepoSync-Objekte muss es sein: unstructured. Standardeinstellung: unstructured.
spec.git.noSSLVerify noSSLVerify gibt an, ob die SSL-Zertifikatsüberprüfung aktiviert oder deaktiviert werden soll. Standardeinstellung: false.
Wenn noSSLVerify auf "true" gesetzt ist, wird Git angewiesen, die SSL-Zertifikatsprüfung zu überspringen.
Dieses Feld wird in Anthos Config Management Version 1.8.2 und höher unterstützt.

Proxykonfiguration für das Git-Repository

Wenn Sie gemäß den Sicherheitsrichtlinien Ihrer Organisation Traffic über einen HTTP(S)-Proxy weiterleiten müssen, können Sie Config Sync für die Kommunikation mit Ihrem Git-Host über den URI des Proxys konfigurieren.

Schlüssel Beschreibung
spec.git.proxy Die Proxy-URL mit Schema zum Konfigurieren des Zugriffs auf das Git-Repository mithilfe eines Proxys. z. B. https://proxy.internal.business.co:443. Dieses Feld hat nur Auswirkungen, wenn spec.git.auth cookiefile oder none ist.

Konfiguration zum Überschreiben der Ressourcenlimits eines Root- oder Namespace-Abgleichers

Schlüssel Beschreibung
spec.override.resources Die Liste der Überschreibungen für Containerressourcenlimits. Optional.
Jedes Element in der Liste enthält drei Felder:
  • containerName: Dieses Feld kann entweder git-sync oder reconciler sein.
  • cpuLimit (optional)
  • memoryLimit (optional)

Wenn kein Überschreibungswert für ein Ressourcenlimit angegeben ist, wird das Standardressourcenlimit verwendet.

Konfiguration für die Anzahl der abzurufenden Git-Commits

Schlüssel Beschreibung
spec.override.gitSyncDepth Mit gitSyncDepth können Sie die Anzahl der abzurufenden Git-Commits überschreiben.
Darf nicht kleiner als 0 sein.
Config Sync führt einen vollständigen Klon aus, wenn das Feld 0 ist, und einen "oberflächlichen" Klon, wenn das Feld größer als 0 ist.
Wenn dieses Feld nicht angegeben ist, wird es von Config Sync automatisch konfiguriert.

Status der Objekte

Schlüssel Beschreibung
status.observedGeneration Die Generation (metadata.generation) der Spezifikation einer RootSync- oder RepoSync-Ressource, die zuletzt von Config Sync beobachtet und bearbeitet wurde. Dieser Wert kann mit metadata.generation verglichen werden, einer Ganzzahl, die bei einer Spezifikationsmutation vom API-Server aktualisiert wird.
status.reconciler Name des Abgleichvorgangs, der der Synchronisierungsressource entspricht.
status.source.gitStatus.repo Git-Repository-URL, die synchronisiert wird.
status.source.gitStatus.revision Abzurufende Git-Revision (Tag, Commit oder Hash).
status.source.gitStatus.branch Git-Zweig des abgerufenen Repositorys.
status.source.gitStatus.dir Absoluter Pfad im Git-Repository zum Stammverzeichnis, das die Konfiguration enthält, mit der Sie synchronisieren.
status.source.commit Hash des zuletzt im Repository vorhandenen Commits.
status.source.errors Eine Liste aller Fehler, die beim Lesen aus dem Repository aufgetreten sind.
status.sync.commit Hash des letzten Commits, der mit dem Cluster synchronisiert wurde. Dieser Wert wird auch dann aktualisiert, wenn ein Commit aufgrund eines Fehlers nur teilweise synchronisiert wird.
status.sync.errors Eine Liste aller Fehler, die beim Anwenden der Ressourcen aus der durch status.sync.commit angegebenen Änderung aufgetreten sind.
status.conditions Die neuesten verfügbaren Beobachtungen zum aktuellen Status von RootSync.

ResourceGroup-Felder

Für ein Git-Repository, das mit dem Cluster synchronisiert wird, wird der Abgleichsstatus aller Ressourcen in einer Ressource namens ResourceGroup zusammengefasst. Config Sync generiert automatisch die benutzerdefinierte Ressource "ResourceGroup" (CR). Sie müssen diese nicht deklarieren und Änderungen an den von Config Sync generierten Ressourcengruppen-CRs können zu unerwarteten Fehlern von Config Sync führen.

Spezifikationen und Statusfelder

Schlüssel Beschreibung
spec.resources Die Liste der Kennungen (Gruppe, Art, Namespace, Name) für Ressourcen, die aus dem Git-Repository auf den Cluster angewendet werden, der in einer RepoSync-CR oder einer RootSync-CR angegeben ist. Optional.
Jedes Element in der Liste enthält vier Felder: group, kind, namespace und name.

Statusfelder

Schlüssel Beschreibung
status.observedGeneration Die Generation (metadata.generation) der Spezifikation einer RootSync- oder RepoSync-Ressource, die zuletzt vom ResourceGroup-Controller beobachtet und bearbeitet wurde. Dieser Wert kann mit metadata.generation verglichen werden, einer Ganzzahl, die bei einer Spezifikationsmutation vom API-Server aktualisiert wird.
status.conditions Die zuletzt beobachteten Bedingungen für die aktuelle ResourceGroup. Die Bedingungen haben zwei verschiedene Typen: Reconciling und Stalled. Wenn die Bedingung des Typs Reconciling „true“ ist, bedeutet dies, dass die aktuelle ResourceGroup abgeglichen wird. Wenn die Bedingung des Typs Stalled „true“ ist, bedeutet dies, dass der Abgleich angehalten wurde. Wenn beide "false" sind, wird die aktuelle ResourceGroup abgeglichen und der Status ist auf dem neuesten Stand.
status.resourceStatuses Die Liste der Status für Ressourcen, die in ".spec.resources" enthalten sind. Jedes Element enthält die ID (Gruppe, Art, Namespace oder Name) und den Status einer Ressource. Der Status ist einer der folgenden: InProgress, Current, Failed, Terminating, NotFound oder Unknown.

Beispiel-CRs

Die folgenden Abschnitte zeigen Beispiele für RootSync- und Reposync-CRs.

RootSync-CR

Die folgende CR wurde mit kubectl describe rootsync root-sync -n config-management-system generiert.

Name:         root-sync
Namespace:    config-management-system
Labels:       <none>
Annotations:  configmanagement.gke.io/managed-by-hub: true
              configmanagement.gke.io/update-time: 1623779339
API Version:  configsync.gke.io/v1beta1
Kind:         RootSync
Metadata:
  Creation Timestamp:  2021-06-15T17:49:35Z
  Generation:          1
  Managed Fields:
    API Version:  configsync.gke.io/v1beta1
    Fields Type:  FieldsV1
    fieldsV1:
      f:metadata:
        f:annotations:
          .:
          f:configmanagement.gke.io/managed-by-hub:
          f:configmanagement.gke.io/update-time:
      f:spec:
        .:
        f:git:
          .:
          f:auth:
          f:branch:
          f:dir:
          f:period:
          f:repo:
          f:secretRef:
        f:sourceFormat:
    Manager:      Google-GKEHub-Controllers-ACM
    Operation:    Update
    Time:         2021-06-15T17:49:35Z
    API Version:  configsync.gke.io/v1alpha1
    Fields Type:  FieldsV1
    fieldsV1:
      f:status:
        .:
        f:conditions:
        f:observedGeneration:
        f:reconciler:
        f:source:
          .:
          f:gitStatus:
        f:sync:
    Manager:      reconciler-manager
    Operation:    Update
    Time:         2021-06-15T17:49:47Z
    API Version:  configsync.gke.io/v1alpha1
    Fields Type:  FieldsV1
    fieldsV1:
      f:status:
        f:source:
          f:commit:
          f:gitStatus:
            f:branch:
            f:dir:
            f:repo:
            f:revision:
        f:sync:
          f:commit:
          f:lastUpdate:
    Manager:         reconciler
    Operation:       Update
    Time:            2021-06-15T17:51:28Z
  Resource Version:  4850
  Self Link:         /apis/configsync.gke.io/v1beta1/namespaces/config-management-system/rootsyncs/root-sync
  UID:               3fd2ea19-7e16-4c69-a3a1-90b9d90677eb
Spec:
  Git:
    Auth:    none
    Branch:  init
    Dir:     quickstart/multirepo/root
    Period:  0s
    Repo:    https://github.com/GoogleCloudPlatform/anthos-config-management-samples
    Secret Ref:
  Source Format:  unstructured
Status:
  Conditions:
    Last Transition Time:  2021-06-15T17:50:15Z
    Last Update Time:      2021-06-15T17:50:15Z
    Status:                False
    Type:                  Reconciling
  Observed Generation:     1
  Reconciler:              root-reconciler
  Source:
    Commit:  a9b7593b2df5f64b1ae5e5eb2d9cafa619029589
    Git Status:
      Branch:    init
      Dir:       quickstart/multirepo/root
      Repo:      https://github.com/GoogleCloudPlatform/anthos-config-management-samples
      Revision:  HEAD
  Sync:
    Commit:       a9b7593b2df5f64b1ae5e5eb2d9cafa619029589
    Last Update:  2021-06-15T17:51:28Z
Events:           <none>

RepoSync-CR

Die folgende CR wurde mit kubectl describe reposync repo-sync -n config-management-system generiert.

Name:         repo-sync
Namespace:    gamestore
Labels:       app.kubernetes.io/managed-by=configmanagement.gke.io
              configsync.gke.io/declared-version=v1alpha1
Annotations:  config.k8s.io/owning-inventory: config-management-system_root-sync
              configmanagement.gke.io/cluster-name: cs-cluster-1
              configmanagement.gke.io/managed: enabled
              configmanagement.gke.io/source-path: quickstart/multirepo/root/reposync-gamestore.yaml
              configmanagement.gke.io/token: a9b7593b2df5f64b1ae5e5eb2d9cafa619029589
              configsync.gke.io/declared-fields: {"f:spec":{}}
              configsync.gke.io/git-context:
                {"repo":"https://github.com/GoogleCloudPlatform/anthos-config-management-samples","branch":"init","rev":"HEAD"}
              configsync.gke.io/manager: :root
              configsync.gke.io/resource-id: configsync.gke.io_reposync_gamestore_repo-sync
API Version:  configsync.gke.io/v1beta1
Kind:         RepoSync
Metadata:
  Creation Timestamp:  2021-06-15T17:51:27Z
  Generation:          1
  Managed Fields:
    API Version:  configsync.gke.io/v1alpha1
    Fields Type:  FieldsV1
    fieldsV1:
      f:metadata:
        f:annotations:
          f:config.k8s.io/owning-inventory:
          f:configmanagement.gke.io/cluster-name:
          f:configmanagement.gke.io/managed:
          f:configmanagement.gke.io/source-path:
          f:configmanagement.gke.io/token:
          f:configsync.gke.io/declared-fields:
          f:configsync.gke.io/git-context:
          f:configsync.gke.io/manager:
          f:configsync.gke.io/resource-id:
        f:labels:
          f:app.kubernetes.io/managed-by:
          f:configsync.gke.io/declared-version:
      f:spec:
        f:git:
          f:auth:
          f:branch:
          f:dir:
          f:repo:
        f:sourceFormat:
    Manager:      configsync.gke.io
    Operation:    Apply
    Time:         2021-06-15T17:51:27Z
    API Version:  configsync.gke.io/v1alpha1
    Fields Type:  FieldsV1
    fieldsV1:
      f:status:
        f:source:
          f:commit:
          f:gitStatus:
            f:branch:
            f:dir:
            f:repo:
            f:revision:
        f:sync:
          f:commit:
          f:lastUpdate:
    Manager:      reconciler
    Operation:    Update
    Time:         2021-06-15T17:51:53Z
    API Version:  configsync.gke.io/v1alpha1
    Fields Type:  FieldsV1
    fieldsV1:
      f:spec:
        f:git:
          f:period:
          f:secretRef:
      f:status:
        .:
        f:conditions:
        f:observedGeneration:
        f:reconciler:
        f:source:
          .:
          f:gitStatus:
        f:sync:
    Manager:         reconciler-manager
    Operation:       Update
    Time:            2021-06-15T17:51:53Z
  Resource Version:  5216
  Self Link:         /apis/configsync.gke.io/v1beta1/namespaces/gamestore/reposyncs/repo-sync
  UID:               80d0a0d3-4ec6-4ccd-9a9d-4e2ddf0b7bbd
Spec:
  Git:
    Auth:         none
    Branch:       init
    Dir:          quickstart/multirepo/namespaces/gamestore
    Repo:         https://github.com/GoogleCloudPlatform/anthos-config-management-samples
  Source Format:  unstructured
Status:
  Conditions:
    Last Transition Time:  2021-06-15T17:51:56Z
    Last Update Time:      2021-06-15T17:51:56Z
    Status:                False
    Type:                  Reconciling
  Observed Generation:     1
  Reconciler:              ns-reconciler-gamestore
  Source:
    Commit:  a9b7593b2df5f64b1ae5e5eb2d9cafa619029589
    Git Status:
      Branch:    init
      Dir:       quickstart/multirepo/namespaces/gamestore
      Repo:      https://github.com/GoogleCloudPlatform/anthos-config-management-samples
      Revision:  HEAD
  Sync:
    Commit:       a9b7593b2df5f64b1ae5e5eb2d9cafa619029589
    Last Update:  2021-06-15T17:51:53Z
Events:           <none>

Nächste Schritte