Afficher les journaux de Config Sync

Config Sync respecte les mêmes conventions de journalisation que Kubernetes. Par défaut, la verbosité de la journalisation est définie sur 2.

Sur chaque cluster enregistré, plusieurs objets Deployment sont exécutés dans des pods au sein de l'objet Namespace config-management-system. Chacun de ces objets Deployment représente un sous-système distinct, qui est indiqué par le nom de l'objet.

  • git-importer : importe dans le cluster les configurations trouvées dans le dépôt sous la forme d'objets CustomResourceDefinition (CRD).
  • monitor : expose les points de terminaison pour la surveillance et les métriques.
  • syncer : vérifie que la configuration du cluster est synchronisée avec les objets CRD créés par git-importer.

Même si les tâches sont réparties par objet Deployment, vous ne pouvez pas interroger les journaux d'un de ces objets. Toutefois, vous avez la possibilité d'utiliser un sélecteur de libellés. Chaque objet Deployment est associé à un sélecteur de libellés app=[Deployment name].

Utilisez le sélecteur de libellés d'un objet Deployment pour afficher les journaux de ce dernier. L'exemple suivant montre les journaux de l'objet Deployment syncer.

kubectl logs --namespace config-management-system -l app=syncer

Le pod git-importer comporte deux conteneurs distincts, importer et git-sync. Pour afficher les journaux d'un seul de ces conteneurs, utilisez l'option -c pour le spécifier. L'exemple suivant montre les journaux du conteneur importer :

kubectl logs --namespace=config-management-system \
  -l app=git-importer \
  -c importer

Modifier la verbosité de la journalisation

La verbosité par défaut de la journalisation est définie sur 2. Si vous devez l'augmenter pour le débogage, procédez comme suit :

  1. Modifiez l'objet Deployment config-management-operator :

    kubectl edit deployment -n=kube-system config-management-operator
    

    Dans l'éditeur interactif, définissez la valeur replicas sur 0. Cela empêche Config Sync Operator d'annuler les modifications que vous apportez ci-dessous.

  2. Obtenez la liste de tous les objets Deployment associés à Config Sync. Les noms des objets Deployment et le nombre de ces objets peuvent changer.

    kubectl get deployments -n=config-management-system
    
  3. Modifiez chaque objet Deployment que vous déboguez ou surveillez. Remplacez syncer par le nom de l'objet Deployment que vous souhaitez modifier.

    kubectl edit deployment syncer
    
  4. Après avoir modifié tous les objets Deployment appropriés, modifiez à nouveau l'objet config-management-operator et définissez la valeur replicas sur 1.

    kubectl get deployments -n=config-management-system
    

Une fois le débogage terminé, vous souhaiterez peut-être ramener à 2 la verbosité de la journalisation afin de conserver de l'espace disque sur les nœuds. Pour ce faire, réexécutez la procédure en définissant la valeur sur 2.

Identifier le commit Git ayant mis à jour un objet

Lorsque Config Sync Operator applique une modification à un objet Kubernetes en raison d'une mise à jour du dépôt, le hachage associé au commit Git est stocké dans l'annotation configmanagement.gke.io/sync-token. Pour afficher ce hachage, utilisez la commande kubectl get :

kubectl get clusterrolebinding namespace-readers -oyaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"rbac.authorization.k8s.io/v1","kind":"ClusterRoleBinding","metadata":{"annotations":{"configmanagement.gke.io/managed":"enabled","configmanagement.gke.io/cluster-name":"config-management-cluster","configmanagement.gke.io/source-path":"cluster/namespace-reader-clusterrolebinding.yaml","configmanagement.gke.io/sync-token":"5edf7fda0cfccc351adfa2811954c80c812c26c5"},"creationTimestamp":null,"name":"namespace-readers"},"roleRef":{"apiGroup":"rbac.authorization.k8s.io","kind":"ClusterRole","name":"namespace-reader"},"subjects":[{"apiGroup":"rbac.authorization.k8s.io","kind":"User","name":"cheryl@foo-corp.com"}]}
    configmanagement.gke.io/managed: enabled
    configmanagement.gke.io/cluster-name: config-management-cluster
    configmanagement.gke.io/source-path: cluster/namespace-reader-clusterrolebinding.yaml
    configmanagement.gke.io/sync-token: 5edf7fda0cfccc351adfa2811954c80c812c26c5
  creationTimestamp: 2019-02-11T19:39:37Z
  name: namespace-readers
  resourceVersion: "6301538"
  selfLink: /apis/rbac.authorization.k8s.io/v1/clusterrolebindings/namespace-readers
  uid: c45257a4-2e34-11e9-8a5e-42010a800134
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: namespace-reader
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: User
  name: cheryl@foo-corp.com

Vous pouvez ensuite utiliser des commandes telles que git show [HASH] pour afficher des informations sur le commit.

Étapes suivantes