Monitorar objetos RootSync e RepoSync

Esta página mostra diferentes maneiras de monitorar seus objetos RootSync e RepoSync. Por exemplo, verifique se a confirmação mais recente em uma fonte de verdade foi aplicada a um cluster e reconciliada.

Ver confirmações sincronizadas

É possível verificar qual confirmação está sincronizada com o cluster verificando o campo .status.sync no objeto RootSync ou RepoSync.

  • Para visualizar as confirmações sincronizadas de um objeto RootSync, execute o seguinte comando:

    kubectl get rootsync ROOT_SYNC_NAME -n config-management-system
    

    Substitua ROOT_SYNC_NAME pelo nome do objeto RootSync.

  • Para visualizar as confirmações sincronizadas de um objeto RepoSync, execute o seguinte comando:

    kubectl get reposync REPO_SYNC_NAME -n REPO_SYNC_NAMESPACE
    

    Substitua:

    • REPO_SYNC_NAME: o nome do objeto RepoSync.
    • REPO_SYNC_NAMESPACE: o namespace em que você criou seu repositório de namespace.

A saída desses comandos mostra o valor da confirmação de origem e da confirmação sincronizada. Por exemplo, se você executar o comando para o RepoSync, verá uma saída semelhante a esta:

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

O valor na coluna RENDERINGCOMMIT é a confirmação processada pelo hydration-controller. Se nenhuma renderização for necessária, o valor será igual ao da coluna SOURCECOMMIT. O valor na coluna SOURCECOMMIT é a confirmação da fonte de verdade que precisa ser sincronizada com o cluster. O valor na coluna SYNCCOMMIT é a confirmação implantada no cluster. Se os dois valores nas colunas SOURCECOMMIT e SYNCCOMMIT forem os mesmos, a confirmação esperada foi implantada no cluster.

Confirmar se os recursos na confirmação foram reconciliados

Como os ResourceGroups capturam o status de reconciliação dos recursos gerenciados declarados na fonte de informações, é possível examiná-los para confirmar se os recursos da confirmação estão reconciliados.

O objeto ResourceGroup tem o mesmo namespace e nome que o objeto RootSync ou RepoSync. Por exemplo, para o objeto RootSync com o nome root-sync no namespace config-management-system, o objeto ResourceGroup correspondente também é root-sync no namespace config-management-system.

  • Para receber o objeto ResourceGroup de um objeto RootSync:

    kubectl get resourcegroup ROOT_SYNC_NAME -n config-management-system -o yaml
    
  • Para receber o objeto ResourceGroup de um objeto RepoSync:

    kubectl get resourcegroup REPO_SYNC_NAME -n REPO_SYNC_NAMESPACE -o yaml
    

    Substitua:

    • ROOT_SYNC_NAME: o nome do objeto ResourceGroup que você quer pesquisar.
    • REPO_SYNC_NAME: o nome do objeto ResourceGroup que você quer pesquisar.
    • REPO_SYNC_NAMESPACE: o nome do objeto ResourceGroup que você quer pesquisar.

Para confirmar se os recursos na confirmação foram reconciliados, procure o seguinte na saída:

  • O .status.observedGeneration é igual ao valor do campo .metadata.generation no objeto ResourceGroup.
  • As condições Stalled e Reconciling têm status como "False".
  • Cada item no campo .status.resourceStatuses tem o status Current.

Ver erros

Os objetos RootSync e RepoSync usam o campo status para rastrear erros encontrados ao sincronizar as configurações da fonte de verdade para um cluster.

  • Para ver o status de um objeto RootSync, execute o seguinte comando:

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

    Substitua ROOT_SYNC_NAME pelo nome do objeto RootSync.

  • Para ver o status de um objeto RepoSync, execute o seguinte comando:

    kubectl get reposync REPO_SYNC_NAME -n NAMESPACE -o yaml
    

    Substitua:

    • REPO_SYNC_NAME: o nome do objeto RepoSync.
    • NAMESPACE: o namespace em que você criou seu repositório de namespace.

Para saber mais sobre os subcampos no campo status, consulte Status dos objetos.

Ver detalhes do objeto

Para visualizar detalhes dos objetos RootSync e RepoSync e descobrir mais informações sobre possíveis erros, use o comando kubectl describe.

A saída desse comando inclui eventos, que podem ser especialmente úteis para depurar problemas, como contêineres com restrições de memória (OOMKilled), falhas de programação ou erros de extração de imagem.

Para um formato mais legível, converta a saída para YAML anexando -o yaml aos comandos a seguir. Esse formato é especialmente útil quando você precisa examinar parâmetros específicos, anotações ou especificações de recursos.

  • Para visualizar detalhes de um objeto RootSync, execute o seguinte comando:

    kubectl describe rootsync ROOT_SYNC_NAME -n config-management-system
    

    Substitua ROOT_SYNC_NAME pelo nome do objeto RootSync.

  • Para visualizar detalhes de um objeto RepoSync, execute o seguinte comando:

    kubectl describe reposync REPO_SYNC_NAME -n NAMESPACE
    

    Substitua:

    • REPO_SYNC_NAME: o nome do objeto RepoSync.
    • NAMESPACE: o namespace em que você criou seu repositório de namespace.

Ver se um recurso está pronto

Para saber se os recursos sincronizados com o cluster estão prontos, visualize o status da reconciliação. Por exemplo, a visualização do status de reconciliação pode mostrar se uma implantação sincronizada está pronta para veicular o tráfego.

Para uma fonte de verdade sincronizada com o cluster, os status de reconciliação de todos os recursos são agregados em um recurso chamado ResourceGroup. Para cada objeto RootSync ou RepoSync, um ResourceGroup é gerado para capturar o conjunto de recursos aplicados ao cluster e agregar os status deles.

  • Para ver o status de reconciliação do objeto RootSync, execute o seguinte comando:

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

    Substitua ROOT_SYNC_NAME pelo nome do objeto RootSync.

  • Para ver o status de reconciliação do objeto RepoSync, execute o seguinte comando:

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

    Substitua:

    • REPO_SYNC_NAME: o nome do objeto RepoSync.
    • NAMESPACE: o namespace em que você criou seu repositório de namespace.

Na saída, você verá todos os status de recursos de ResourceGroup. Por exemplo, a saída a seguir mostra que uma implantação chamada nginx-deployment está pronta:

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

Mostrar registros

Para cada objeto RootSync e RepoSync que você cria, o Config Sync cria uma implantação de reconciliação para executar a sincronização. Nesta seção, explicamos como exibir os registros desses reconciliadores. A visualização dos registros pode ajudar na depuração de um problema fornecendo informações adicionais sobre progresso, avisos e erros além do que está disponível no status do objeto RootSync e RepoSync.

  • Para ver os registros do reconciliador RootSync ou RepoSync, execute o seguinte comando:

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

    Substitua:

    • RECONCILER_NAME: o nome do reconciliador do objeto RootSync ou RepoSync.

      • Para RootSync, o nome do reconciliador será root-reconciler-ROOT_SYNC_NAME ou root-reconciler se o nome de RootSync for root-sync.

      • Para RepoSync, o nome do reconciliador será ns-reconciler-NAMESPACE-REPO_SYNC_NAME-REPO_SYNC_NAME_LENGTH ou ns-reconciler-NAMESPACE se o nome de RepoSync for repo-sync, em que NAMESPACE é o namespace em que você criou o objeto RepoSync.

    • CONTAINER_NAME: o nome do contêiner precisa ser um destes valores: reconciler, git-sync, hydration-controller, oci-sync ou helm-sync. Para saber mais sobre esses contêineres, consulte Reconciliando contêineres.

Configurar o nível de registro do reconciliador do RootSync ou RepoSync

Para incluir mais informações nos registros de contêiner, configure o nível de verbosidade do registro. Por padrão, a maioria dos contêineres tem um valor padrão de 0 para o nível de detalhes do registro. As exceções são os contêineres git-sync e otel-agent que têm um valor padrão de 5.

Ao alterar o nível de detalhes do registro, lembre-se de que aumentar esse nível resulta em custos mais altos de geração de registros, porque há um maior volume de dados gravados.

Para alterar o nível de detalhes do registro, use o campo .spec.override.logLevels, conforme mostrado no exemplo a seguir:

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

O valor no campo containerName precisa ser um dos seguintes: reconciler, git-sync, hydration-controller, oci-sync ou helm-sync.

Para confirmar se o detalhamento do registro está configurado, execute o seguinte comando:

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

O nível de detalhes do registro pode ser encontrado como um dos args em spec.template.spec.containers[] e se parece com -v=0, em que 0 é o nível de detalhes do registro atual. Neste exemplo, um valor de detalhamento do registro de 0 registraria apenas eventos críticos.