Introdução à solução de problemas

Nós nos esforçamos para que a experiência do Config Sync funcione sempre para você, mas há situações em que você pode precisar da solução de problemas na sua configuração. Esta página apresenta algumas ferramentas e procedimentos comuns que podem ajudar a resolver problemas encontrados.

Se você tiver problemas com o Config Sync, também poderá ver problemas conhecidos do Config Sync e resolver problemas de mensagens de erro.

Entender a arquitetura do Config Sync

Ao resolver problemas no Config Sync, é útil entender os objetos e recursos criados por ele em um cluster e como eles se relacionam entre si. A maioria desses objetos e recursos é criada automaticamente ao instalar o Config Sync e não é necessário modificá-los. O diagrama a seguir mostra a arquitetura do Config Sync em um cluster e os recursos relacionados:

diagrama que mostra a relação entre os objetos e recursos do Config Sync

Quando o Config Sync é instalado em um cluster, ele adiciona o ConfigManagement Operator ao cluster. O operador cria ou gerencia os outros componentes necessários para que o Config Sync funcione. O operador consiste em uma definição de recurso personalizado do ConfigManagement e no recurso personalizado. Para ver um exemplo desse recurso, consulte Exemplo de objeto ConfigManagement. O operador cria e gerencia os seguintes recursos:

  • Gerenciador de reconciliação: cria e gerencia os reconciliadores raiz ou de namespace. Há também um reconciliador criado para cada objeto RootSync e RepoSync criados. O reconciliador RootSync ou RepoSync extrai configurações armazenadas na fonte de verdade, o que cria ou atualiza os recursos e objetos gerenciados pelo Config Sync no cluster.
  • Definição e recurso personalizado do RootSync ou RepoSync: configura o Config Sync para observar sua fonte de verdade e aplicar objetos dessa origem a um cluster para objetos RootSync ou um namespace em um cluster para objetos RepoSync. Para mais informações sobre esses recursos, consulte Campos RootSync e RepoSync.
  • Definição de controlador de ResourceGroup e recurso personalizado: usado pelo Config Sync para manter o inventário de objetos aplicados e gerenciados anteriormente. O Config Sync cria um objeto ResourceGroup para cada RootSync e RepoSync no cluster.

Quando você adiciona ou faz alterações na sua fonte de verdade, o Config Sync reconcilia os clusters continuamente com base nessas configurações.

Ver o status do Config Sync

O comando nomos status exibe dados agregados e erros para ajudar você a entender o que está acontecendo com a instalação do Config Sync. As informações a seguir estão disponíveis com nomos status:

  • Status da instalação por cluster
  • Erros de sincronização (na leitura do Git e na reconciliação das alterações)

Para usar nomos status, instale a ferramenta de linha de comando nomos.

Também é possível usar o comando gcloud alpha anthos config sync repo ou o painel do Config Sync para visualizar o status do Config Sync por repositório.

Usar indicadores de nível de serviço (SLIs)

Para receber notificações quando o Config Sync não estiver funcionando como esperado, use os SLIs do Config Sync.

Criar um relatório do bug

Se você tiver um problema com o Config Sync que requer ajuda do suporte do Google Cloud, forneça informações importantes de depuração usando o comando nomos bugreport. É possível usar esse comando para um ou vários repositórios.

nomos bugreport

Esse comando gera um arquivo zip com carimbo de data / hora com informações sobre o cluster do Kubernetes definido no contexto kubectl. O arquivo contém registros dos pods do Config Sync. Ele não contém informações dos recursos sincronizados com o Config Sync. Para mais informações sobre o conteúdo do arquivo ZIP, consulte conteúdos do nomos bugreport.

Usar o kubectl para examinar recursos

O Config Sync é composto de vários recursos personalizados que podem ser consultados usando comandos kubectl. Esses comandos ajudam você a entender o status de cada um dos objetos do Config Sync.

Você precisa conhecer as seguintes informações sobre os recursos do Kubernetes que o Config Sync gerencia:

  • config-management-system é o namespace que usamos para executar todos os principais componentes do sistema do Config Sync
  • configmanagement.gke.io/v1 e configsync.gke.io são os prefixos de versão que usamos para todos os recursos personalizados.

Veja uma lista completa dos recursos personalizados executando o seguinte comando:

kubectl api-resources | grep -E "configmanagement.gke.io|configsync.gke.io"

Recursos personalizados individuais podem ser consumidos ao executar: kubectl get RESOURCE -o yaml.

Por exemplo, a saída do comando a seguir permite verificar o status de um objeto RootSync:

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

Também é possível usar o comando gcloud alpha anthos config sync resources ou o painel do Config Sync para visualizar os recursos que ele gerencia.

As seções a seguir mostram exemplos de como os comandos kubectl podem ajudar a resolver problemas do Config Sync.

Verificar a anotação token de um objeto

É possível saber quando um objeto do Kubernetes gerenciado foi atualizado pela última vez pelo Config Sync. Cada objeto gerenciado é anotado com o hash da confirmação do Git com relação à última modificação e o caminho para a configuração que a continha.

kubectl get clusterrolebinding namespace-readers
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  annotations:
    configmanagement.gke.io/source-path: cluster/namespace-reader-clusterrolebinding.yaml
    configmanagement.gke.io/token: bbb6a1e2f3db692b17201da028daff0d38797771
  name: namespace-readers
...

Para mais informações, consulte rótulos e anotações.

Verificar o status do objeto de uma configuração

O Config Sync define dois objetos do Kubernetes personalizados: ClusterConfig e NamespaceConfig. Esses objetos definem um campo de status que contém informações sobre a alteração aplicada mais recentemente ao config e os erros que ocorreram. Por exemplo, se houver um erro em um namespace chamado shipping-dev, verifique o status do NamespaceConfig correspondente:

kubectl get namespaceconfig shipping-dev -o yaml

Ver os objetos RootSync e RepoSync

Ao instalar o Config Sync usando kubectl, você cria um objeto RootSync que contém detalhes sobre a configuração do seu repositório raiz. Ao instalar o Config Sync usando o Console do Google Cloud ou a Google Cloud CLI, o Config Sync cria automaticamente um objeto RootSync para você. Ao configurar a sincronização de vários repositórios, você cria objetos RepoSync que contêm informações de configuração sobre os repositórios de namespace.

A análise desses objetos pode revelar informações valiosas sobre o estado do Config Sync. Para saber mais, consulte Monitorar objetos RootSync e RepoSync.

Usar registros de auditoria

Os registros de auditoria podem ser uma ferramenta útil para depuração.

Se você instalou o Config Sync usando o console do Google Cloud ou a Google Cloud CLI, conclua as etapas a seguir para usar os registros de auditoria para investigar o Config Sync.

  1. Ative os registros de auditoria das APIs Connect/Hub do GKE.

    1. No console do Google Cloud, acesse a página Registros de auditoria do IAM.

      Acessar a página "Registros de auditoria"

    2. Na tabela, marque a caixa de seleção APIs Connect/Hub do GKE.

    3. Marque as seguintes caixas de seleção:

      • Leitura de administradores
      • Leitura de dados
      • Gravação de dados
    4. Clique em Save.

  2. Acesse a página Análise de registros.

    Acessar a página Explorador de registros

  3. No campo Criador de consultas, adicione os seguintes filtros:

      resource.type="audited_resource" resource.labels.service="gkehub.googleapis.com"
    
  4. Selecione Executar consulta.

  5. Na seção Resultados da consulta, selecione entradas para saber mais sobre os eventos.

Configurar o nível de registro do reconciliador

Os registros de contêiner (por exemplo, os registros reconciler ou git-sync) em um reconciliador RootSync ou RepoSync podem conter informações úteis para depurar o Config Sync. Para incluir mais informações nos registros, configure o detalhamento de registro definindo .spec.override.logLevels, como no seguinte exemplo:

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

O valor em 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 detalhamento de registro pode ser encontrado como um dos args em spec.template.spec.containers[] e é semelhante a -v=0, em que 0 é o nível atual.

A seguir