Risolvere i problemi di connessione alla fonte attendibile

Questa pagina mostra come risolvere i problemi che si verificano quando Config Sync non riesce a stabilire una connessione con la tua fonte di attendibilità.

Problemi di autenticazione

Se l'autenticazione non va a buon fine, Config Sync non può connettersi alla fonte attendibile. Le sezioni seguenti mostrano come risolvere alcuni problemi di autenticazione.

Verifica del certificato server non riuscita per i server Git

Le connessioni ai server Git privati utilizzano TLS per verificare l'autenticità del server. Per eseguire questa convalida, devi fornire un certificato che identifichi l'autorità di certificazione principale e le eventuali autorità di certificazione intermedie che certificano l'identità del server Git. Se la verifica del certificato del server Git non va a buon fine, significa che non è possibile stabilire la catena di attendibilità.

Se ricevi un errore che indica che la verifica del certificato del server non è riuscita, la causa potrebbe essere uno dei seguenti:

  • Il certificato dell'autorità di certificazione (CACert) non è specificato. Per risolvere il problema, aggiungi il CACert come secret e fai riferimento al secret nel campo spec.git.caCertSecretRef degli oggetti RootSync o RepoSync.
  • Il CACert è incompleto. Per risolvere questo problema, correggi il secret del CACert in modo che contenga l'intera catena di attendibilità, inclusi il certificato radice e gli eventuali certificati intermedi.
  • Il CACert non è valido. Per risolvere il problema, scarica la catena di certificati dal link specificato dal certificato presentato dal server, quindi aggiorna il secret CACert.

Impossibile montare il secret Git

Se viene visualizzato il seguente errore quando il container git-sync tenta di sincronizzare un repository con un secret, significa che il secret Git non è stato montato correttamente nel container 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

L'errore potrebbe essere causato dal passaggio del tipo di autenticazione del repository Git da none, gcenode o gcpserviceaccount ad altri tipi che richiedono un secret.

Per risolvere questo problema, esegui questi comandi per riavviare il Gestore riconciliatori e i Reconciler:

# 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

Problemi di configurazione

Spesso, a causa di problemi di configurazione, Config Sync non riesce a connettersi alla tua origine dati. Le seguenti sezioni spiegano come identificare e risolvere i problemi di configurazione più comuni.

Nome grafico non valido

Quando esegui la sincronizzazione da un repository Helm, assicurati di impostare il valore corretto per spec.helm.chart. Il nome del grafico non contiene il nome del repository, la versione del grafico o .tgz. Puoi verificare il nome del grafico con il comando helm template.

Directory di configurazione non valida

Verifica che le tue configurazioni non contengano errori, ad esempio un valore non corretto per policyDir nell'oggetto ConfigManagement oppure spec.git.dir o spec.oci.dir nell'oggetto RootSync o RepoSync. Il valore della directory è incluso in tutti i messaggi di errore KNV2004 che ricevi; verifica il valore nel repository Git o nell'immagine OCI.

Ramo Git non valido

Verifica la presenza di un errore come Remote branch BRANCH_NAME not found in upstream origin o warning: Could not find remote branch BRANCH_NAME to clone. nei log del container git-sync. Se non specificato, il ramo predefinito è impostato su master.

Credenziali Git, Helm o OCI non valide

Controlla che nei log di Config Sync del container git-sync, helm-sync o oci-sync sia presente uno dei seguenti errori:

  • 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

Per un repository Git, verifica che le credenziali Git e il secret git-creds siano configurati correttamente.

Per un repository Helm, verifica che le credenziali Helm siano configurate correttamente.

Per le immagini OCI, verifica che le credenziali OCI siano configurate correttamente.

URL del repository Git non valido

Verifica se nei log del container git-sync è presente un errore come Repository not found.

Verifica che il formato dell'URL in uso sia corretto. Ad esempio, se utilizzi una coppia di chiavi SSH per eseguire l'autenticazione nel repository Git, assicurati che l'URL inserito per il repository Git durante la configurazione di Config Sync utilizzi il protocollo SSH.

URL del repository Helm non valido

Verifica se nei log del container helm-sync è presente un errore come ...not a valid chart repository. Puoi verificare l'URL del repository Helm con il comando helm template.

URL del registro OCI non valido

Un valore non valido nel campo spec.oci.image o spec.oci.dir di un oggetto RootSync o RepoSync può causare problemi di connessione. Verifica che questi valori siano corretti. Ad esempio, se esegui la sincronizzazione da un registro OCI, l'URL deve iniziare con oci://.

Per ulteriori informazioni, puoi anche controllare i log del container oci-sync.

Problemi di rete

Se sospetti che il problema sia correlato alla rete del cluster, inizia con questi passaggi per la risoluzione dei problemi.

Impossibile risolvere l'host: github.com

Quando Config Sync tenta di connettersi al tuo repository Git, utilizza il DNS per risolvere l'IP del nome host specificato. Se l'host non può essere risolto, questo di solito indica un problema con il DNS o il cluster di rete.

Per diagnosticare il problema, consulta Risoluzione dei problemi relativi al DNS in GKE.

Il repository Git non è raggiungibile dall'interno del cluster

A volte, il container git-sync restituisce un errore nei log che indica che non può raggiungere il repository. Ad esempio, ssh: connect to host source.developers.google.com port 2022: Network is unreachable. Per risolvere il problema, modifica il firewall o la configurazione di rete del cluster.

Numero elevato di richieste API di origine

Config Sync utilizza una strategia di multi-instancing per scalare e isolare i tenant e i domini di errore. Per questo motivo, ogni oggetto RootSync e RepoSync riceve la propria istanza di riconciliazione. Ogni istanza del riconciliatore ha il proprio sidecar specifico della sorgente, git-sync, oci-sync o helm-sync. Questi file collaterali indagano sulla fonte della verità. L'aggiunta di altri oggetti RootSync o RepoSync comporta un aumento lineare del numero di richieste API effettuate dai riconciliatori che eseguono il polling della fonte di dati. Pertanto, se hai molti oggetti RootSync e RepoSync che eseguono il polling della stessa fonte di dati, a volte ciò può causare un carico di traffico significativo sul server di origine.

Per mitigare il problema, prendi in considerazione una delle seguenti strategie:

  • Combina più oggetti RootSyncs o RepoSync per ridurre il numero di riconciliatori che effettuano richieste all'API di origine.
  • Cambia il tipo di origine da Git in OCI. I repository OCI, come Artifact Registry, tendono a scalare meglio della maggior parte dei server Git, perché possono scalare orizzontalmente senza la necessità di sincronizzare tra le repliche del server.

Passaggi successivi

  • Se i problemi persistono, controlla se il tuo problema è un problema noto.