Monitorize objetos RootSync e RepoSync

Esta página mostra-lhe diferentes formas de monitorizar os objetos RootSync e RepoSync. Por exemplo, pode querer validar se a confirmação mais recente numa fonte de verdade é aplicada a um cluster e reconciliada com êxito.

Veja os commits sincronizados

Pode verificar qual a confirmação sincronizada com o cluster verificando o campo .status.sync no objeto RootSync ou RepoSync.

  • Para ver as confirmações sincronizadas de um RootSyncobjeto, execute o seguinte comando:

    kubectl get rootsync ROOT_SYNC_NAME -n config-management-system
    

    Substitua ROOT_SYNC_NAME pelo nome do objeto RootSync.

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

    kubectl get reposync REPO_SYNC_NAME -n REPO_SYNC_NAMESPACE
    

    Substitua o seguinte:

    • REPO_SYNC_NAME: o nome do objeto RepoSync.
    • REPO_SYNC_NAMESPACE: o espaço de nomes no qual criou o repositório do espaço de nomes.

O resultado destes comandos mostra o valor da confirmação de origem e da confirmação sincronizada. Por exemplo, se executou o comando para o RepoSync, vê um resultado semelhante ao seguinte:

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

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

Confirme se os recursos na confirmação estão reconciliados

Uma vez que os ResourceGroups captam o estado de conciliação dos recursos geridos declarados na fonte de dados fidedignos, pode examiná-los para confirmar se os recursos na confirmação estão reconciliados.

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

  • Para obter o objeto ResourceGroup de um RootSyncobjeto:

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

    kubectl get resourcegroup REPO_SYNC_NAME -n REPO_SYNC_NAMESPACE -o yaml
    

    Substitua o seguinte:

    • ROOT_SYNC_NAME: o nome do objeto ResourceGroup que quer procurar.
    • REPO_SYNC_NAME: o nome do objeto ResourceGroup que quer procurar.
    • REPO_SYNC_NAMESPACE: o nome do objeto ResourceGroup que quer procurar.

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

  • O valor .status.observedGeneration é igual ao valor do campo .metadata.generation no objeto ResourceGroup.
  • A condição Stalled tem um valor de status de "False".
  • Cada item em .status.resourceStatuses tem um actuation de Succeeded, um reconcile de Succeeded e um status de Current.

Ver erros

Os objetos RootSynce RepoSync usam o campo status para acompanhar os erros encontrados ao sincronizar as configurações da fonte de verdade com um cluster.

  • Para ver o estado de um RootSyncobjeto, 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 estado de um objeto RepoSync, execute o seguinte comando:

    kubectl get reposync REPO_SYNC_NAME -n NAMESPACE -o yaml
    

    Substitua o seguinte:

    • REPO_SYNC_NAME: o nome do objeto RepoSync.
    • NAMESPACE: o espaço de nomes no qual criou o repositório do espaço de nomes.

Para saber mais acerca dos subcampos no campo status, consulte o artigo Estado dos objetos.

Veja os detalhes do objeto

Para ver detalhes dos objetos RootSync e RepoSync e descobrir mais informações sobre potenciais erros, use o comando kubectl describe.

O resultado deste comando inclui eventos, que podem ser particularmente úteis para depurar problemas como contentores com restrições de memória (OOMKilled), falhas de agendamento ou erros de obtenção de imagens.

Para um formato mais legível, converta o resultado em YAML anexando -o yaml aos seguintes comandos. Este formato é especialmente útil quando precisa de examinar parâmetros, anotações ou especificações de recursos específicos.

  • Para ver os 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 ver os detalhes de um objeto RepoSync, execute o seguinte comando:

    kubectl describe reposync REPO_SYNC_NAME -n NAMESPACE
    

    Substitua o seguinte:

    • REPO_SYNC_NAME: o nome do objeto RepoSync.
    • NAMESPACE: o espaço de nomes no qual criou o repositório do espaço de nomes.

Veja se um recurso está pronto

Para saber se os recursos sincronizados com o cluster estão prontos, veja o estado de reconciliação. Por exemplo, a visualização do estado de conciliação pode mostrar se uma implementação sincronizada está pronta para publicar tráfego.

Para uma fonte de informação sincronizada com o cluster, os estados de conciliação de todos os recursos são agregados num recurso denominado ResourceGroup. Para cada objeto RootSync ou RepoSync, é gerado um ResourceGroup para captar o conjunto de recursos aplicados ao cluster e agregar os respetivos estados.

  • Para ver o estado de conciliaçã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 estado de conciliação do objeto RepoSync, execute o seguinte comando:

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

    Substitua o seguinte:

    • REPO_SYNC_NAME: o nome do objeto RepoSync.
    • NAMESPACE: o espaço de nomes no qual criou o repositório do espaço de nomes.

Na saída, vê todos os estados dos recursos ResourceGroup. Por exemplo, a seguinte saída mostra que uma implementação denominada nginx-deployment está pronta:

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

Ver registos

Para cada objeto RootSync e RepoSync que criar, o Config Sync cria uma implementação do reconciliador para fazer a sincronização. Esta secção explica como ver os registos destes reconciliadores. A visualização dos registos pode ajudar na depuração de um problema, fornecendo informações adicionais sobre o progresso, os avisos e os erros, além do que está disponível no estado do objeto RootSync e RepoSync.

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

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

    Substitua o seguinte:

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

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

      • Para RepoSync, o nome do reconciliador é 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 espaço de nomes no qual criou o objeto RepoSync.

    • CONTAINER_NAME: o nome do contentor tem de ser um dos seguintes valores: reconciler, git-sync, hydration-controller, oci-sync ou helm-sync. Para saber mais acerca destes contentores, consulte o artigo Contentores do reconciliador.

Configure o nível de registo do reconciliador RootSync ou RepoSync

Para incluir mais informações nos registos do contentor, configure a verbosidade dos registos. Por predefinição, a maioria dos contentores tem um valor predefinido de 0 para log verbosity. As exceções são os contentores git-sync e otel-agent que têm um valor predefinido de 5.

Quando alterar a verbosidade do registo, tenha em atenção que o aumento da verbosidade do registo resulta em custos de registo mais elevados, uma vez que é registado um maior volume de dados.

Para alterar a verbosidade do registo, use o campo .spec.override.logLevels, como mostrado no exemplo seguinte:

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 tem de ser um dos seguintes: reconciler, git-sync, hydration-controller, oci-sync ou helm-sync.

Para confirmar que o nível de detalhe dos registos está configurado, execute o seguinte comando:

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

A verbosidade do registo pode ser encontrada como um dos args dentro de spec.template.spec.containers[] e tem o seguinte aspeto: -v=0, em que 0 é a verbosidade do registo atual. Neste exemplo, um valor de detalhe do registo de 0 registaria apenas eventos críticos.