Esta página mostra como resolver problemas que ocorrem quando o Config Sync não consegue estabelecer uma conexão com sua fonte de verdade.
Problemas de autenticação
Se a autenticação falhar, o Config Sync não poderá se conectar à fonte da verdade. As seções a seguir mostram como resolver alguns problemas de autenticação.
Falha na verificação do certificado do servidor para servidores Git
As conexões com servidores Git particulares usam o TLS para verificar a autenticidade do servidor. Para fazer essa validação, é necessário fornecer um certificado que identifique a autoridade certificadora raiz e quaisquer autoridades de certificação intermediárias que certifiquem a identidade do servidor Git. Se a verificação do certificado do servidor Git falhar, isso significa que a cadeia de confiança não pode ser estabelecida.
Se você receber um erro indicando que a verificação do certificado do servidor falhou, um dos problemas a seguir pode ser a causa:
- O certificado da autoridade certificadora (CACert) não foi especificado. Para corrigir
esse problema, adicione o CACert como um secret e faça referência ao secret no
campo
spec.git.caCertSecretRef
dos seus objetosRootSync
ouRepoSync
. - O CACert está incompleto. Para corrigir esse problema, corrija o secret CACert para conter a cadeia completa de confiança, incluindo os certificados raiz e intermediários.
- O CACert é inválido. Para corrigir esse problema, faça o download da cadeia de certificados pelo link especificado pelo certificado apresentado pelo servidor e atualize o secret CACert.
Não foi possível montar a chave secreta do Git
Se você receber o seguinte erro quando o contêiner git-sync
tentar sincronizar
um repositório com um secret, ele não será ativado no
contêiner git-sync
:
KNV2004: unable to sync repo Error in the git-sync container: ERROR: can't configure SSH: can't access SSH key: stat /etc/git-secret/ssh: no such file or directory: lstat /repo/root/rev: no such file or directory
Esse erro pode ser causado pela mudança do tipo de autenticação do
repositório Git de none
, gcenode
ou gcpserviceaccount
para outros tipos que precisam de um
secret.
Para resolver esse problema, execute os seguintes comandos para reiniciar o Reconciler Manager e o Reconcilers:
# Stop the reconciler-manager Pod. The reconciler-manager Deployment spins
# up a new Pod which can pick up the latest `spec.git.auth`.
kubectl delete po -l app=reconciler-manager -n config-management-system
# Delete the reconciler Deployments. The reconciler-manager recreates the
# reconciler Deployments with correct volume mount.
kubectl delete deployment -l app=reconciler -n config-management-system
Problemas de configuração
Muitas vezes, problemas com a configuração podem fazer com que o Config Sync não se conecte à sua fonte de verdade. As seções abaixo explicam como identificar e resolver problemas comuns de configuração.
Nome de gráfico inválido
Ao sincronizar de um repositório do Helm, certifique-se de definir o valor correto para spec.helm.chart
. O nome do gráfico não contém o nome do repositório, a versão do gráfico ou .tgz
. Verifique o nome do gráfico com o comando helm
template
.
Diretório de configuração inválido
Verifique se há erros nas suas configurações, como um valor incorreto para policyDir
no
objeto ConfigManagement
ou spec.git.dir
ou spec.oci.dir
no objeto
RootSync
ou RepoSync
. O valor do diretório está incluído em todas as mensagens de erro KNV2004
que você receber. verifique o valor em relação ao
repositório Git ou à imagem OCI.
Ramificação do Git inválida
Verifique se há um erro nos registros do contêiner git-sync
, como Remote branch
BRANCH_NAME not found in upstream origin
ou warning: Could
not find remote branch BRANCH_NAME to clone.
.
A ramificação padrão está definida como master
, se não for especificada.
Credenciais Git, Helm ou OCI inválidas
Verifique se há um dos seguintes erros nos registros do Config Sync do contêiner
git-sync
, helm-sync
ou oci-sync
:
Could not read from remote repository. Ensure you have the correct access rights and the repository exists.
Invalid username or password. Authentication failed for ...
401 Unauthorized
Para um repositório Git, verifique se as credenciais Git e o secret git-creds
estão
configurados corretamente.
Para um repositório do Helm, verifique se as credenciais do Helm estão configuradas corretamente.
Para imagens OCI, verifique se as credenciais da OCI estão configuradas corretamente.
URL do repositório Git inválido
Verifique os registros do contêiner git-sync
para um erro como Repository not
found
Verifique se você está usando o formato de URL correto. Por exemplo, se você estiver usando um par de chaves SSH para autenticar o repositório do Git, verifique se o URL que você inseriu para o repositório do Git quando você configurar o Config Sync usa o protocolo SSH.
URL do repositório do Helm inválido
Verifique os registros do contêiner helm-sync
para um erro como ...not a
valid chart repository
Verifique o URL do repositório do Helm com o comando helm
template
.
URL do registro da OCI inválido
Um valor inválido no campo spec.oci.image
ou spec.oci.dir
de um objeto RootSync
ou RepoSync
pode causar problemas de conexão. Verifique se esses
valores estão corretos. Por exemplo, se você estiver sincronizando a partir de um registro OCI, o URL precisará começar com oci://
.
Também é possível verificar os registros do contêiner oci-sync
para mais informações.
Problemas na rede
Se você suspeitar que o problema está relacionado à rede do cluster, comece com estas etapas de solução de problemas.
Não foi possível resolver o host: github.com
Quando o Config Sync tenta se conectar ao seu repositório Git, ele usa o DNS para resolver o IP do nome do host especificado. Se o host não puder ser resolvido, isso geralmente indica um problema com o DNS ou a rede do cluster.
Para diagnosticar o problema, consulte Como solucionar problemas de DNS no GKE.
O repositório Git está inacessível no cluster
Às vezes, o contêiner git-sync
gera um erro nos registros indicando que
não é possível acessar o repositório. Por exemplo, ssh: connect to host
source.developers.google.com port 2022: Network is unreachable
. Para corrigir o
problema, ajuste o firewall ou a configuração de rede do cluster.
Alto número de solicitações de API de origem
O Config Sync usa uma estratégia de várias instâncias para escalonar e isolar locatários
e domínios de falha. Por isso, cada objeto RootSync
e RepoSync
recebe a própria
instância de reconciliação. Cada instância de reconciliador tem o próprio arquivo secundário
específico da origem, git-sync
, oci-sync
ou helm-sync
. Esses arquivos secundários sonham
a fonte da verdade. Quando você adiciona mais objetos RootSync
ou RepoSync
, isso causa
um aumento linear no número de solicitações de API feitas pelos reconciliadores que pesquisam
a fonte de informações. Portanto, se você tiver muitos objetos RootSync
e RepoSync
pesquisando a mesma fonte de verdade, às vezes isso pode causar uma carga significativa de tráfego no servidor de origem.
Considere uma das seguintes estratégias para atenuar esse problema:
- Combine vários objetos
RootSyncs
ouRepoSync
para reduzir o número de reconciliadores que fazem solicitações de API de origem. - Mude o tipo de origem do Git para OCI. Os repositórios OCI, como o Artifact Registry, costumam ter um escalonamento melhor do que a maioria dos servidores Git, porque podem ser escalonados horizontalmente sem precisar sincronizar entre as réplicas do servidor.
Outros problemas
Esta seção contém outros problemas diversos que não se enquadram nas seções anteriores.
Arquivo de bloqueio do Git persistente
Se você encontrar o seguinte erro de git-sync
, uma invocação git
anterior pode ter falhado e deixado um arquivo de bloqueio persistente no contêiner:
KNV2004: error in the git-sync container: ... fatal: Unable to create '/repo/source/.git/shallow.lock': File exists. ...
Para resolver esse problema, reinicie o pod de reconciliação afetado para atribuir um novo volume temporário:
kubectl delete pod -n config-management-system RECONCILER_NAME
A seguir
- Se ainda estiver com problemas, verifique se o seu é um problema conhecido.