Champs RootSync et RepoSync

Cette page décrit les différents champs que vous pouvez voir dans vos objets RootSync et RepoSync. Vous pouvez créer un objet RootSync lorsque vous installez Config Sync à l'aide de kubectl. Si vous installez Config Sync à l'aide de Google Cloud Console ou de l'outil de ligne de commande gcloud, Config Sync crée automatiquement un objet RootSync. Vous créez un objet RepoSync lorsque vous configurez la synchronisation à partir de dépôts d'espaces de noms.

Il fournit également des détails sur l'objet ResourceGroup. Config Sync crée automatiquement cette ressource lorsque vous activez la synchronisation vers plusieurs dépôts. La synchronisation à partir de plusieurs dépôts est activée par défaut si vous utilisez Google Cloud Console ou l'outil de ligne de commande gcloud pour installer Config Sync avec la version 1.7.0 ou ultérieure.

Le schéma suivant montre comment Config Sync crée ces ressources :

Activation de l'opérateur

Une fois créé, le gestionnaire de rapprochement gère le cycle de vie du rapprochement racine et de chaque processus de rapprochement des espaces de noms :

Activation du rapprochement

Champs RootSync et RepoSync

Les CRD RootSync et RepoSync utilisent les mêmes champs, à l'exception de spec.sourceFormat. Pour les CRD RepoSync, spec.sourceFormat doit être unstructured et la valeur par défaut est également unstructured.

Configuration pour le dépôt Git

Clé Description
spec.git.auth Type de secret configuré pour l'accès au dépôt Git. La valeur doit être ssh, cookiefile, gcenode, gcpserviceaccount, token ou none. La validation de ce champ est sensible à la casse. Obligatoire.
spec.git.gcpServiceAccountEmail Compte de service Google Cloud utilisé pour annoter le compte de service Kubernetes du contrôleur RootSync ou RepoSync. Ce champ n'est utilisé que lorsque spec.git.auth est défini sur gcpserviceaccount.
spec.git.branch Branche du dépôt Git à partir de laquelle la synchronisation doit être effectuée. Valeur par défaut : master
spec.git.dir Chemin d'accès absolu du dépôt Git vers le répertoire racine contenant la configuration que vous souhaitez synchroniser. Valeur par défaut : répertoire racine (/) du dépôt.
spec.git.period Durée entre deux synchronisations consécutives. Valeur par défaut : 15s.
spec.git.repo URL du dépôt Git à partir de laquelle la synchronisation doit être effectuée. Obligatoire.
spec.git.revision Révision Git (tag, commit ou hachage) à récupérer. Valeur par défaut : HEAD
spec.git.secretRef.name Nom du secret permettant de se connecter à la source Git fiable.
spec.sourceFormat Format de votre dépôt Git
Pour les objets RootSync : peut être unstructured ou hierarchy. Valeur par défaut : hierarchy.
Pour les objets RepoSync : doit être unstructured. Par défaut : unstructured.
spec.git.noSSLVerify noSSLVerify spécifie s'il faut activer ou désactiver la validation du certificat SSL. Valeur par défaut : "false".
Si noSSLVerify est défini sur true, il indique à Git d'ignorer la validation du certificat SSL.
Ce champ est compatible avec Anthos Config Management version 1.8.2 et ultérieure.

Configuration du proxy pour le dépôt Git

Si les règles de sécurité de votre organisation vous obligent à acheminer le trafic via un proxy HTTP(S), vous pouvez utiliser l'URI du proxy pour configurer Config Sync de manière à communiquer avec votre hôte Git.

Clé Description
spec.git.proxy URL de proxy avec un schéma permettant de configurer l'accès au dépôt Git à l'aide d'un proxy. Par exemple, https://proxy.internal.business.co:443. Ce champ n'a d'effet que lorsque spec.git.auth est défini sur cookiefile, none ou token.

Configuration permettant de remplacer les limites de ressources d'un rapprochement racine ou de l'espace de noms

Clé Description
spec.override.resources Liste des remplacements de limites de ressources du conteneur. Facultatif.
Chaque élément de la liste contient trois champs :
  • containerName : ce champ peut être défini sur git-sync ou reconciler.
  • cpuLimit (facultatif)
  • memoryLimit (facultatif)

Si aucune valeur de remplacement n'est définie pour une limite de ressource, la limite de ressources par défaut est utilisée.

Configuration du nombre de commits Git à récupérer

Clé Description
spec.override.gitSyncDepth gitSyncDepth vous permet de remplacer le nombre de commits Git à récupérer.
Doit être inférieur ou égal à 0.
Config Sync effectue un clone complet si ce champ est égal à 0, et un clone superficiel si ce champ est supérieur à 0.
Si ce champ n'est pas renseigné, Config Sync le configure automatiquement.

État des objets

Clé Description
status.observedGeneration Génération (metadata.generation) de la spécification d'une ressource RootSync ou RepoSync qui a été observée et exécutée en dernier par Config Sync. Cette valeur peut être comparée à metadata.generation, qui est un entier, et mise à jour lors de la mutation de spécifications par le serveur d'API.
status.reconciler Nom du processus de rapprochement correspondant à la ressource de synchronisation.
status.source.gitStatus.repo URL du dépôt Git en cours de synchronisation.
status.source.gitStatus.revision Révision Git (tag, commit ou hachage) en cours de récupération.
status.source.gitStatus.branch Branche du dépôt Git en cours de récupération.
status.source.gitStatus.dir Chemin d'accès absolu du dépôt Git vers le répertoire racine contenant la configuration vers laquelle vous effectuez la synchronisation.
status.source.commit Hachage du commit le plus récent affiché dans le dépôt.
status.source.errors Liste des erreurs survenues lors de la lecture à partir du dépôt.
status.sync.commit Hachage du commit le plus récent qui a été synchronisé avec le cluster. Cette valeur est mise à jour même lorsqu'un commit n'est que partiellement synchronisé en raison d'une erreur.
status.sync.errors Liste des erreurs survenues lors de l'application des ressources à partir de la modification indiquée par status.sync.commit.
status.conditions Dernières observations disponibles de l'état actuel du RootSync.

Champs ResourceGroup

Pour chaque dépôt Git synchronisé avec le cluster, l'état de rapprochement de toutes les ressources est agrégé dans une ressource appelée ResourceGroup. Config Sync génère automatiquement la ressource personnalisée ResourceGroup (RS). Vous n'avez pas besoin de le déclarer et la modification des RS ResourceGroup générées par Config Sync peut entraîner un échec inattendu de Config Sync.

Champs de spécification et d'état

Clé Description
spec.resources Liste des identifiants (groupe, genre, espace de noms, nom) pour les ressources appliquées au cluster à partir du dépôt Git spécifié dans un RS RepoSync ou un RS RootSync. Facultatif.
Chaque élément de la liste contient quatre champs : group, kind, namespace et name.

Champs d'état

Clé Description
status.observedGeneration Génération (metadata.generation) de la spécification d'une ressource RootSync ou RepoSync qui a été observée et exécutée en dernier par le contrôleur ResourceGroup. Cette valeur peut être comparée à metadata.generation, qui est un entier, et mise à jour lors de la mutation de spécifications par le serveur d'API.
status.conditions Dernières conditions observées pour la ressource ResourceGroup actuelle. Les conditions sont de deux types : Reconciling et Stalled. Lorsque la condition de type Reconciling est définie sur "true", cela signifie que la ressource ResourceGroup est en cours de rapprochement. Lorsque la condition de type Stalled est définie sur "true", cela signifie que le rapprochement est bloqué. Lorsque les deux valeurs sont définies sur "false", cela signifie que la ressource ResourceGroup actuelle est rapprochée et que l'état est à jour.
status.resourceStatuses Liste des états des ressources incluses dans ".spec.resources". Chaque élément contient l'identifiant (groupe, genre, espace de noms ou nom) et l'état d'une ressource. L'état est défini sur l'une des valeurs suivantes : InProgress, Current, Failed, Terminating, NotFound ou Unknown.

Exemples de RS

Les sections suivantes présentent des exemples de RS RootSync et Reposync.

RS RootSync

Le RS suivant a été généré à l'aide de kubectl describe rootsync root-sync -n config-management-system.

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:     config-sync-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>

RS RepoSync

Le RS suivant a été généré à l'aide de kubectl describe reposync repo-sync -n config-management-system.

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>

Étape suivante