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:
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 Syncconfigmanagement.gke.io/v1
econfigsync.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.
Ative os registros de auditoria das APIs Connect/Hub do GKE.
No console do Google Cloud, acesse a página Registros de auditoria do IAM.
Na tabela, marque a caixa de seleção APIs Connect/Hub do GKE.
Marque as seguintes caixas de seleção:
- Leitura de administradores
- Leitura de dados
- Gravação de dados
Clique em Save.
Acesse a página Análise de registros.
No campo Criador de consultas, adicione os seguintes filtros:
resource.type="audited_resource" resource.labels.service="gkehub.googleapis.com"
Selecione Executar consulta.
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
- Se precisar de mais ajuda, entre em contato com o Cloud Customer Care.