Surveiller les objets RootSync et RepoSync

Cette page présente différentes manières de surveiller les objets RootSync et RepoSync. Par exemple, vous pouvez vérifier si votre dernier commit figurant dans une source d'informations est appliqué à un cluster et rapproché avec succès.

Afficher les commits synchronisés

Vous pouvez vérifier quel commit est synchronisé avec le cluster en consultant le champ .status.sync dans l'objet RootSync ou RepoSync.

  • Pour afficher les commits synchronisés pour un objet RootSync, exécutez la commande suivante:

    kubectl get rootsync ROOT_SYNC_NAME -n config-management-system
    

    Remplacez ROOT_SYNC_NAME par le nom de l'objet RootSync.

  • Pour afficher les commits synchronisés pour un objet RepoSync, exécutez la commande suivante:

    kubectl get reposync REPO_SYNC_NAME -n REPO_SYNC_NAMESPACE
    

    Remplacez les éléments suivants :

    • REPO_SYNC_NAME: nom de l'objet RepoSync.
    • REPO_SYNC_NAMESPACE: espace de noms dans lequel vous avez créé votre dépôt d'espace de noms.

La sortie de ces commandes indique la valeur du commit source et du commit synchronisé. Par exemple, si vous avez exécuté la commande pour RepoSync, vous obtenez une sortie semblable à la suivante :

NAME        RENDERINGCOMMIT                            SOURCECOMMIT                               SYNCCOMMIT
root-sync   66882815f0ef5517df27e864fb1315e97756ab72   66882815f0ef5517df27e864fb1315e97756ab72   66882815f0ef5517df27e864fb1315e97756ab72

La valeur de la colonne RENDERINGCOMMIT correspond au commit traité par hydration-controller. Si aucun rendu n'est nécessaire, la valeur est identique à celle de la colonne SOURCECOMMIT. La valeur de la colonne SOURCECOMMIT est le commit de la source fiable qui doit être synchronisé avec le cluster. La valeur de la colonne SYNCCOMMIT correspond au commit déployé sur le cluster. Si les valeurs des colonnes SOURCECOMMIT et SYNCCOMMIT sont identiques, le commit attendu a bien été déployé sur le cluster.

Vérifier que les ressources du commit sont rapprochées

Étant donné que les ResourceGroups capturent l'état du rapprochement des ressources gérées déclarées dans la source de référence, vous pouvez les examiner pour vérifier si les ressources du commit sont rapprochées.

L'objet ResourceGroup a le même espace de noms et le même nom que l'objet RootSync ou RepoSync. Par exemple, pour l'objet RootSync portant le nom root-sync dans l'espace de noms config-management-system, l'objet ResourceGroup correspondant est également root-sync dans l'espace de noms config-management-system.

  • Pour obtenir l'objet ResourceGroup d'un objet RootSync, procédez comme suit:

    kubectl get resourcegroup ROOT_SYNC_NAME -n config-management-system -o yaml
    
  • Pour obtenir l'objet ResourceGroup d'un objet RepoSync, procédez comme suit:

    kubectl get resourcegroup REPO_SYNC_NAME -n REPO_SYNC_NAMESPACE -o yaml
    

    Remplacez les éléments suivants :

    • ROOT_SYNC_NAME: nom de l'objet ResourceGroup que vous souhaitez rechercher.
    • REPO_SYNC_NAME: nom de l'objet ResourceGroup que vous souhaitez rechercher.
    • REPO_SYNC_NAMESPACE: nom de l'objet ResourceGroup que vous souhaitez rechercher.

Pour vérifier que les ressources du commit sont rapprochées, recherchez les éléments suivants dans le résultat:

  • .status.observedGeneration est égal à la valeur du champ .metadata.generation dans l'objet ResourceGroup.
  • Les conditions Stalled et Reconciling ont toutes deux status comme "False".
  • Chaque élément du champ .status.resourceStatuses affiche l'état Current.

Afficher les erreurs

Les objets RootSync et RepoSync utilisent le champ status pour suivre les erreurs rencontrées lors de la synchronisation des configurations de la source fiable vers un cluster.

  • Pour afficher l'état d'un objet RootSync, exécutez la commande suivante:

    kubectl get rootsync ROOT_SYNC_NAME -n config-management-system -o yaml
    

    Remplacez ROOT_SYNC_NAME par le nom de l'objet RootSync.

  • Pour afficher l'état d'un objet RepoSync, exécutez la commande suivante:

    kubectl get reposync REPO_SYNC_NAME -n NAMESPACE -o yaml
    

    Remplacez les éléments suivants :

    • REPO_SYNC_NAME: nom de l'objet RepoSync.
    • NAMESPACE: espace de noms dans lequel vous avez créé votre dépôt d'espace de noms.

Pour en savoir plus sur les sous-champs du champ status, consultez la section État des objets.

Afficher les détails de l'objet

Pour afficher les détails des objets RootSync et RepoSync, et pour obtenir des informations supplémentaires sur les erreurs potentielles, utilisez la commande kubectl describe.

Le résultat de cette commande inclut des événements, qui peuvent être particulièrement utiles pour déboguer des problèmes tels que les conteneurs confrontés à des contraintes de mémoire (OOMKilled), des échecs de programmation ou des erreurs d'extraction d'image.

Pour un format plus lisible, convertissez la sortie au format YAML en ajoutant -o yaml aux commandes suivantes. Ce format est particulièrement utile lorsque vous devez examiner des paramètres, des annotations ou des spécifications de ressources spécifiques.

  • Pour afficher les détails d'un objet RootSync, exécutez la commande suivante:

    kubectl describe rootsync ROOT_SYNC_NAME -n config-management-system
    

    Remplacez ROOT_SYNC_NAME par le nom de l'objet RootSync.

  • Pour afficher les détails d'un objet RepoSync, exécutez la commande suivante:

    kubectl describe reposync REPO_SYNC_NAME -n NAMESPACE
    

    Remplacez les éléments suivants :

    • REPO_SYNC_NAME: nom de l'objet RepoSync.
    • NAMESPACE: espace de noms dans lequel vous avez créé votre dépôt d'espace de noms.

Voir si une ressource est prête

Pour savoir si les ressources synchronisées avec le cluster sont prêtes, affichez l'état de rapprochement. Par exemple, l'affichage de l'état de rapprochement peut vous indiquer si un déploiement synchronisé est prêt à diffuser du trafic.

Pour une source de référence synchronisée avec le cluster, les états de rapprochement de toutes les ressources sont agrégés dans une ressource appelée ResourceGroup. Pour chaque objet RootSync ou RepoSync, un ResourceGroup est généré pour capturer l'ensemble des ressources appliquées au cluster et agréger leurs états.

  • Pour afficher l'état de rapprochement de l'objet RootSync, exécutez la commande suivante:

    kubectl get resourcegroup.kpt.dev ROOT_SYNC_NAME -n config-management-system -o yaml
    

    Remplacez ROOT_SYNC_NAME par le nom de l'objet RootSync.

  • Pour afficher l'état de rapprochement de l'objet RepoSync, exécutez la commande suivante:

    kubectl get resourcegroup.kpt.dev REPO_SYNC_NAME -n NAMESPACE -o yaml
    

    Remplacez les éléments suivants :

    • REPO_SYNC_NAME: nom de l'objet RepoSync.
    • NAMESPACE: espace de noms dans lequel vous avez créé votre dépôt d'espace de noms.

Dans le résultat, vous pouvez voir tous les états de la ressource ResourceGroup. Par exemple, le résultat suivant indique qu'un déploiement nommé nginx-deployment est prêt :

resourceStatuses:
- group: apps
  kind: Deployment
  name: nginx-deployment
  namespace: default
  status: Current

Voir les journaux

Pour chaque objet RootSync et RepoSync que vous créez, Config Sync crée un déploiement de rapprochement pour effectuer la synchronisation. Cette section explique comment afficher les journaux de ces rapprochements. Consulter les journaux peut être utile lors du débogage d'un problème en fournissant des informations supplémentaires sur la progression, les avertissements et les erreurs en plus de ce qui est disponible dans les états d'objet RootSync et RepoSync.

  • Pour afficher les journaux du rapprochement RootSync ou RepoSync, exécutez la commande suivante:

    kubectl logs -n config-management-system deployment/RECONCILER_NAME CONTAINER_NAME
    

    Remplacez les éléments suivants :

    • RECONCILER_NAME: nom du rapprochement de l'objet RootSync ou RepoSync.

      • Pour RootSync, le nom du rapprochement est root-reconciler-ROOT_SYNC_NAME ou root-reconciler si le nom de RootSync est root-sync.

      • Pour RepoSync, le nom du rapprochement est ns-reconciler-NAMESPACE-REPO_SYNC_NAME-REPO_SYNC_NAME_LENGTH ou ns-reconciler-NAMESPACE si le nom de RepoSync est repo-sync, où NAMESPACE est l'espace de noms dans lequel vous avez créé votre objet RepoSync.

    • CONTAINER_NAME: le nom du conteneur doit correspondre à l'une des valeurs suivantes: reconciler, git-sync, hydration-controller, oci-sync ou helm-sync. Pour en savoir plus sur ces conteneurs, consultez la section Rapprocher des conteneurs.

Configurer le niveau de journalisation du rapprochement RootSync ou RepoSync

Pour inclure plus d'informations dans les journaux du conteneur, configurez la verbosité des journaux. La plupart des conteneurs ont la valeur par défaut 0 pour la verbosité des journaux. Les exceptions à cette règle sont les conteneurs git-sync et otel-agent dont la valeur par défaut est 5.

Lorsque vous modifiez le niveau de verbosité des journaux, n'oubliez pas que l'augmentation de la verbosité des journaux entraîne des coûts de journalisation plus élevés, car le volume de données enregistrées est plus important.

Pour modifier le niveau de verbosité du journal, utilisez le champ .spec.override.logLevels comme indiqué dans l'exemple suivant:

apiVersion: configsync.gke.io/v1beta1
kind: RootSync
metadata:
  name: root-sync
  namespace: config-management-system
spec:
  override:
    logLevels:
    - containerName: "reconciler"
      logLevel: 0
    - containerName: "git-sync"
       logLevel: 10

La valeur du champ containerName doit être l'une des suivantes : reconciler, git-sync, hydration-controller, oci-sync ou helm-sync.

Pour vérifier que le niveau de détail des journaux est configuré, exécutez la commande suivante:

kubectl get deployment.apps/root-reconciler -n config-management-system -o yaml

La verbosité du journal peut être trouvée comme l'un des args dans spec.template.spec.containers[] et ressemble à -v=0, où 0 correspond à la verbosité actuelle du journal. Dans cet exemple, une valeur de verbosité du journal de 0 ne consignerait que les événements critiques.