Supervisa objetos RootSync y RepoSync

En esta página, se muestran diferentes formas de supervisar los objetos RootSync y RepoSync. Por ejemplo, es posible que desees verificar si tu confirmación más reciente en una fuente de confianza se aplicó a un clúster y se concilió correctamente.

Visualiza confirmaciones sincronizadas

Para verificar qué confirmación se sincroniza con el clúster, verifica el campo .status.sync en el objeto RootSync o RepoSync.

  • Para ver las confirmaciones sincronizadas de un objeto RootSync, ejecuta el siguiente comando:

    kubectl get rootsync ROOT_SYNC_NAME -n config-management-system
    

    Reemplaza ROOT_SYNC_NAME por el nombre del objeto RootSync.

  • Para ver las confirmaciones sincronizadas de un objeto RepoSync, ejecuta el siguiente comando:

    kubectl get reposync REPO_SYNC_NAME -n REPO_SYNC_NAMESPACE
    

    Reemplaza lo siguiente:

    • REPO_SYNC_NAME: el nombre del objeto RepoSync.
    • REPO_SYNC_NAMESPACE: el espacio de nombres en el que creaste el repositorio del espacio de nombres.

El resultado de estos comandos te muestra el valor de la confirmación de origen y la confirmación sincronizada. Por ejemplo, si ejecutas el comando para RepoSync, verás un resultado similar al siguiente:

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

El valor en la columna RENDERINGCOMMIT es la confirmación que procesa hydration-controller. Si no se necesita ninguna renderización, el valor es el mismo que el de la columna SOURCECOMMIT. El valor en la columna SOURCECOMMIT es la confirmación de la fuente de información que se debe sincronizar con el clúster. El valor en la columna SYNCCOMMIT es la confirmación que se implementa en el clúster. Si los dos valores de las columnas SOURCECOMMIT y SYNCCOMMIT son los mismos, la confirmación esperada se implementó en el clúster.

Confirma que los recursos de la confirmación estén conciliados

Debido a que ResourceGroups captura el estado de conciliación de los recursos administrados declarados en la fuente de información, puedes examinarlos para confirmar si los recursos de la confirmación están conciliados.

El objeto ResourceGroup tiene el mismo espacio de nombres y el mismo nombre que el objeto RootSync o RepoSync. Por ejemplo, para el objeto RootSync con el nombre root-sync en el espacio de nombres config-management-system, el objeto ResourceGroup correspondiente también es root-sync en el espacio de nombres config-management-system.

  • Para obtener el objeto ResourceGroup de un objeto RootSync, sigue estos pasos:

    kubectl get resourcegroup ROOT_SYNC_NAME -n config-management-system -o yaml
    
  • Para obtener el objeto ResourceGroup de un objeto RepoSync, sigue estos pasos:

    kubectl get resourcegroup REPO_SYNC_NAME -n REPO_SYNC_NAMESPACE -o yaml
    

    Reemplaza lo siguiente:

    • ROOT_SYNC_NAME: el nombre del objeto ResourceGroup que deseas buscar.
    • REPO_SYNC_NAME: el nombre del objeto ResourceGroup que deseas buscar.
    • REPO_SYNC_NAMESPACE: el nombre del objeto ResourceGroup que deseas buscar.

Para confirmar que los recursos de la confirmación estén conciliados, busca lo siguiente en el resultado:

  • .status.observedGeneration es igual al valor del campo .metadata.generation en el objeto ResourceGroup.
  • La condición Stalled y la condición Reconciling tienen status como "False".
  • Cada elemento del campo .status.resourceStatuses tiene el estado Current.

Ver errores

Los objetos RootSync y RepoSync usan el campo status para hacer un seguimiento de los errores que se encuentran cuando se sincronizan las configuraciones de la fuente de información con un clúster.

  • Para ver el estado de un objeto RootSync, ejecuta el siguiente comando:

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

    Reemplaza ROOT_SYNC_NAME por el nombre del objeto RootSync.

  • Para ver el estado de un objeto RepoSync, ejecuta el siguiente comando:

    kubectl get reposync REPO_SYNC_NAME -n NAMESPACE -o yaml
    

    Reemplaza lo siguiente:

    • REPO_SYNC_NAME: el nombre del objeto RepoSync.
    • NAMESPACE: el espacio de nombres en el que creaste el repositorio del espacio de nombres.

Para obtener más información sobre los subcampos del campo status, consulta Estado de los objetos.

Vizualiza detalles del objeto

Para ver los detalles de los objetos RootSync y RepoSync y descubrir más información sobre posibles errores, usa el comando kubectl describe.

El resultado de este comando incluye eventos, que pueden ser particularmente útiles para depurar problemas, como contenedores con restricciones de memoria (OOMKilled), fallas de programación o errores de extracción de imágenes.

Para obtener un formato más legible, agrega -o yaml a los siguientes comandos para convertir el resultado a YAML. Este formato es especialmente útil cuando necesitas examinar parámetros, anotaciones o especificaciones de recursos específicos.

  • Para ver los detalles de un objeto RootSync, ejecuta el siguiente comando:

    kubectl describe rootsync ROOT_SYNC_NAME -n config-management-system
    

    Reemplaza ROOT_SYNC_NAME por el nombre del objeto RootSync.

  • Para ver los detalles de un objeto RepoSync, ejecuta el siguiente comando:

    kubectl describe reposync REPO_SYNC_NAME -n NAMESPACE
    

    Reemplaza lo siguiente:

    • REPO_SYNC_NAME: el nombre del objeto RepoSync.
    • NAMESPACE: el espacio de nombres en el que creaste el repositorio del espacio de nombres.

Visualiza si un recurso está listo

Para saber si los recursos sincronizados con el clúster están listos, consulta el estado de conciliación. Por ejemplo, si ves el estado de conciliación, puedes ver si una implementación sincronizada está lista para entregar tráfico.

Para una fuente de información sincronizada con el clúster, los estados de conciliación de todos los recursos se agregan en un recurso llamado ResourceGroup. Para cada objeto RootSync o RepoSync, se genera un ResourceGroup para capturar el conjunto de recursos aplicados al clúster y los estados agregados.

  • Para ver el estado de conciliación del objeto RootSync, ejecuta el siguiente comando:

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

    Reemplaza ROOT_SYNC_NAME por el nombre del objeto RootSync.

  • Para ver el estado de conciliación del objeto RepoSync, ejecuta el siguiente comando:

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

    Reemplaza lo siguiente:

    • REPO_SYNC_NAME: el nombre del objeto RepoSync.
    • NAMESPACE: el espacio de nombres en el que creaste el repositorio del espacio de nombres.

En el resultado, verás todos los estados de los recursos de ResourceGroup. Por ejemplo, el siguiente resultado muestra que una implementación llamada nginx-deployment está lista:

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

Ver registros

Para cada objeto RootSync y RepoSync que crees, el Sincronizador de configuración crea una Deployment de conciliador para realizar la sincronización. En esta sección, se explica cómo ver los registros de estos agentes de conciliación. Ver los registros puede ayudar a depurar un problema, ya que proporciona información adicional sobre el progreso, las advertencias y los errores más allá de lo que está disponible en el estado de los objetos RootSync y RepoSync.

  • Para ver los registros del conciliador de RootSync o RepoSync, ejecuta el siguiente comando:

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

    Reemplaza lo siguiente:

    • RECONCILER_NAME: Es el nombre del agente de conciliación del objeto RootSync o RepoSync.

      • Para RootSync, el nombre del agente de conciliación es root-reconciler-ROOT_SYNC_NAME o root-reconciler si el nombre de RootSync es root-sync.

      • Para RepoSync, el nombre del conciliador es ns-reconciler-NAMESPACE-REPO_SYNC_NAME-REPO_SYNC_NAME_LENGTH o ns-reconciler-NAMESPACE si el nombre de RepoSync es repo-sync, en el que NAMESPACE es el espacio de nombres en el que creaste tu objeto RepoSync.

    • CONTAINER_NAME: El nombre del contenedor debe ser uno de los siguientes valores: reconciler, git-sync, hydration-controller, oci-sync o helm-sync. Para obtener más información sobre estos contenedores, consulta Contenedores de Reconciler.

Configura el nivel de registro del conciliador RootSync o RepoSync

Para incluir más información en los registros del contenedor, configura la verbosidad de los registros. De forma predeterminada, la mayoría de los contenedores tienen un valor predeterminado de 0 para la verbosidad de los registros. Las excepciones a esto son los contenedores git-sync y otel-agent, que tienen un valor predeterminado de 5.

Cuando cambies la verbosidad de los registros, ten en cuenta que aumentarla genera costos de registro más altos, ya que se registra un mayor volumen de datos.

Para cambiar la verbosidad del registro de cambios, usa el campo .spec.override.logLevels como se muestra en el siguiente ejemplo:

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

El valor del campo containerName debe ser uno de los siguientes: reconciler, git-sync, hydration-controller, oci-sync o helm-sync.

Para confirmar que la verbosidad de los registros esté configurada, ejecuta el siguiente comando:

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

La verbosidad del registro se puede encontrar como uno de los args dentro de spec.template.spec.containers[] y se ve como -v=0, donde 0 es la verbosidad del registro actual. En este ejemplo, un valor de verbosidad de registro de 0 solo registraría los eventos críticos.