Soluciona problemas de conexión a la fuente de información

En esta página, se muestra cómo resolver problemas que ocurren cuando el Sincronizador de configuración no puede establecer una conexión con tu fuente de confianza.

Problemas de autenticación

Si la autenticación falla, el Sincronizador de configuración no puede conectarse a la fuente de información. En las siguientes secciones, se muestra cómo resolver algunos problemas de autenticación.

No se pudo verificar el certificado del servidor para los servidores Git

Las conexiones a los servidores privados de Git usan TLS para verificar la autenticidad del servidor. Para realizar esta validación, debes proporcionar un certificado que identifique la autoridad certificadora raíz y cualquier autoridad certificadora intermedia que certifique la identidad del servidor Git. Si la verificación del certificado del servidor Git falla, significa que no se puede establecer la cadena de confianza.

Si recibes un error que indica que la verificación del certificado del servidor falló, es posible que la causa sea uno de los siguientes problemas:

  • No se especificó el certificado de autoridad certificadora (CACert). Para solucionar este problema, agrega el CACert como secreto y haz referencia a este en el campo spec.git.caCertSecretRef de tus objetos RootSync o RepoSync.
  • El CACert está incompleto. Para solucionar este problema, corrige el Secret de CACert para que contenga la cadena completa de confianza, incluidos la raíz y cualquier certificado intermedio.
  • El CACert no es válido. Para solucionar este problema, descarga la cadena de certificados desde el vínculo que especifica el certificado que presenta el servidor y, luego, actualiza el secreto de CACert.

No se puede activar el Secret de Git

Si recibes el siguiente error cuando el contenedor git-sync intenta sincronizar un repositorio con un Secret, entonces el Secret de Git no se activó correctamente en el contenedor 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

Esto puede deberse a que cambiaste el tipo de autenticación del repositorio de Git de none, gcenode o gcpserviceaccount a otros tipos que necesiten un Secret.

Para resolver este problema, ejecuta los siguientes comandos a fin de reiniciar Reconciler Manager y los conciliadores:

# 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 configuración

A menudo, los problemas con la configuración pueden hacer que el Sincronizador de configuración no pueda conectarse a tu fuente de información. En las siguientes secciones, se explica cómo identificar y resolver problemas de configuración comunes.

El nombre del gráfico no es válido

Cuando sincronices desde un repositorio de Helm, asegúrate de configurar el valor correcto para spec.helm.chart. El nombre del gráfico no contiene el nombre del repositorio, la versión del gráfico ni .tgz. Puedes verificar el nombre de tu gráfico con el comando helm template.

Directorio de configuración no válido

Verifica la configuración en busca de errores, como un valor incorrecto para policyDir en el objeto ConfigManagement o spec.git.dir o spec.oci.dir en el objeto RootSync o RepoSync. El valor del directorio se incluye en cualquier mensaje de error de KNV2004 que recibas. Verifica el valor con tu repositorio de Git o con la imagen de OCI.

La rama de Git no es válida

Verifica los registros del contenedor git-sync para detectar un error, como Remote branch BRANCH_NAME not found in upstream origin o warning: Could not find remote branch BRANCH_NAME to clone.. Si no se especifica, la rama predeterminada se establece en master.

Las credenciales de Git, OCI o Helm no son válidas

Verifica los registros del Sincronizador de configuración para el contenedor git-sync, helm-sync o oci-sync en busca de uno de los siguientes errores:

  • 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 un repositorio de Git, verifica que las credenciales de Git y el secreto git-creds estén configurados de forma correcta.

Para un repositorio de Helm, verifica que las credenciales de Helm estén configuradas de forma correcta.

Para las imágenes de OCI, verifica que las credenciales de OCI estén configuradas de forma correcta.

La URL del repositorio de Git no es válida

Verifica los registros del contenedor git-sync para ver si hay un error como Repository not found.

Verifica que estés usando el formato de URL correcto. Por ejemplo, si usas un par de claves SSH para autenticarte en el repositorio de Git, asegúrate de que la URL que ingresas para tu repositorio de Git cuando configures el Sincronizador de configuración use el protocolo SSH.

La URL del repositorio de Helm no es válida

Verifica los registros del contenedor helm-sync para ver si hay un error como ...not a valid chart repository. Puedes verificar la URL del repositorio de Helm con el comando helm template.

La URL del registro de OCI no es válida

Un valor no válido en el campo spec.oci.image o spec.oci.dir de un objeto RootSync o RepoSync puede causar problemas de conexión. Comprueba que estos valores sean correctos. Por ejemplo, si realizas la sincronización desde un registro OCI, la URL debe comenzar con oci://.

También puedes revisar los registros del contenedor oci-sync para obtener más información.

Problemas de red

Si sospechas que el problema está relacionado con la red de tu clúster, comienza con estos pasos para solucionar problemas.

No se pudo resolver el host: github.com

Cuando el Sincronizador de configuración intenta conectarse a tu repositorio de Git, usa DNS para resolver la IP del nombre de host especificado. Si no se puede resolver el host, esto suele indicar un problema con las redes del DNS o del clúster.

Para diagnosticar el problema, consulta Solución de problemas de DNS en GKE.

No se puede acceder al repositorio de Git desde el clúster.

A veces, el contenedor git-sync arroja un error en sus registros que indica que no puede llegar al repositorio. Por ejemplo, ssh: connect to host source.developers.google.com port 2022: Network is unreachable Para solucionar el problema, ajusta el firewall o la configuración de red del clúster.

Gran cantidad de solicitudes a la API de origen

El Sincronizador de configuración usa una estrategia de instancias múltiples para escalar y aislar instancias y dominios con fallas. Debido a esto, cada objeto RootSync y RepoSync obtiene su propia instancia de conciliador. Cada instancia de conciliador tiene su propio archivo adicional específico de la fuente, git-sync, oci-sync o helm-sync. Estos sidecars sondean la fuente de información. Cuando agregas objetos RootSync o RepoSync adicionales, se produce un aumento lineal en la cantidad de solicitudes a la API que realizan los conciliadores que sondean la fuente de información. Por lo tanto, si tienes muchos objetos RootSync y RepoSync que sondean la misma fuente de información, a veces esto puede generar una carga de tráfico significativa en el servidor de origen.

Considera una de las siguientes estrategias para mitigar este problema:

  • Combina varios objetos RootSyncs o RepoSync para reducir la cantidad de conciliadores que realizan solicitudes a la API de origen.
  • Cambia tu tipo de fuente de Git a OCI. Los repositorios de OCI, como Artifact Registry, tienden a escalar mejor que la mayoría de los servidores de Git, ya que pueden escalar de forma horizontal sin necesidad de sincronizar entre réplicas del servidor.

¿Qué sigue?