Solucionar problemas de conexión a la fuente de información veraz

En esta página se explica cómo resolver los problemas que se producen cuando Config Sync no puede establecer una conexión con tu fuente de información veraz.

Problemas de autenticación

Si falla la autenticación, Config Sync no podrá conectarse a la fuente de información veraz. En las siguientes secciones se explica cómo resolver algunos problemas de autenticación.

No se ha podido verificar el certificado del servidor de servidores Git

Las conexiones a servidores Git privados usan TLS para verificar la autenticidad del servidor. Para llevar a cabo esta validación, debes proporcionar un certificado que identifique a la autoridad de certificación raíz y a las autoridades de certificación intermedias que certifiquen la identidad del servidor Git. Si la verificación del certificado del servidor Git ha fallado, significa que no se puede establecer la cadena de confianza.

Si recibes un error que indica que no se ha podido verificar el certificado del servidor, puede deberse a uno de los siguientes problemas:

  • No se ha especificado el certificado de la autoridad de certificación (CACert). Para solucionar este problema, añade el CACert como secreto y haz referencia al secreto en el campo spec.git.caCertSecretRef de tus objetos RootSync o RepoSync.
  • El CACert está incompleto. Para solucionar este problema, corrija el secreto de CACert para que contenga la cadena de confianza completa, incluidos el certificado raíz y los certificados intermedios.
  • El certificado de CA no es válido. Para solucionar este problema, descarga la cadena de certificados desde el enlace especificado por el certificado presentado por el servidor y, a continuación, actualiza el secreto de CACert.

No se puede montar el secreto de Git

Si recibes el siguiente error cuando el contenedor git-sync intenta sincronizar un repositorio con un secreto, significa que el secreto de Git no se ha montado 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

El error puede deberse a que hayas cambiado el tipo de autenticación de tu repositorio de Git de none, gcenode o gcpserviceaccount a otros tipos que necesiten un secreto.

Para solucionar este problema, ejecuta los siguientes comandos para reiniciar ReconcilerManager y los reconciliadores:

# 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 provocar que Config Sync no pueda conectarse a tu fuente de información veraz. En las siguientes secciones se explica cómo identificar y resolver problemas de configuración habituales.

Nombre de gráfico no válido

Cuando sincronice desde un repositorio de Helm, asegúrese de definir 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 del gráfico con el comando helm template.

Directorio de configuración no válido

Compruebe si hay errores en sus configuraciones, 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 los mensajes de error de KNV2004 que recibas. Compara el valor con tu repositorio de Git o tu imagen de OCI.

Rama de Git no válida

Consulta los registros del contenedor git-sync para ver si hay algún 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 es master.

Credenciales de Git, Helm u OCI no válidas

Consulta los registros de Config Sync del contenedor git-sync, helm-sync o oci-sync para ver si se ha producido alguno 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

En el caso de un repositorio de Git, compruebe que las credenciales de Git y el secreto git-creds estén configurados correctamente.

En el caso de un repositorio de Helm, compruebe que las credenciales de Helm estén configuradas correctamente.

En el caso de las imágenes de OCI, compruebe que las credenciales de OCI se hayan configurado correctamente.

URL de repositorio de Git no válida

Consulta los registros del contenedor git-sync para ver si hay algún error, como Repository not found.

Comprueba 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 introduces para tu repositorio de Git al configurar Config Sync use el protocolo SSH.

URL de repositorio de Helm no válida

Consulta los registros del contenedor helm-sync para ver si hay algún error, como ...not a valid chart repository. Puedes verificar la URL de tu repositorio de Helm con el comando helm template.

URL de registro de OCI no válida

Si el valor de los campos spec.oci.image o spec.oci.dir de un objeto RootSync o RepoSync no es válido, pueden producirse problemas de conexión. Comprueba que estos valores sean correctos. Por ejemplo, si estás sincronizando desde un registro de OCI, la URL debe empezar por oci://.

También puedes consultar 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, empieza por estos pasos para solucionarlo.

No se ha podido resolver el host: github.com

Cuando Config Sync intenta conectarse a tu repositorio de Git, usa el DNS para resolver la IP del nombre de host especificado. Si no se puede resolver el host, suele indicar que hay un problema con el DNS o con la red del clúster.

Para diagnosticar el problema, consulta Solucionar problemas de Cloud DNS en GKE o Solucionar problemas de kube-dns en GKE, según el servicio que utilices como proveedor de DNS.

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

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

Número elevado de solicitudes a la API de origen

Config Sync usa una estrategia de varias instancias para escalar y aislar los tenants y los dominios de errores. Por este motivo, cada objeto RootSync y RepoSync tiene su propia instancia de reconciliador. Cada instancia de reconciliador tiene su propio sidecar específico de la fuente: git-sync, oci-sync o helm-sync. Estos sidecars consultan la fuente de información veraz. Cuando añades objetos RootSync o RepoSync adicionales, se produce un aumento lineal en el número de solicitudes de la API realizadas por los conciliadores que sondean la fuente de información veraz. Por lo tanto, si tienes muchos objetos RootSync y RepoSync que consultan la misma fuente de referencia, a veces puede provocar una carga de tráfico significativa en el servidor de origen.

Para mitigar este problema, puedes usar una de las siguientes estrategias:

  • Combina varios objetos RootSyncs o RepoSync para reducir el número de reconciliadores que hacen solicitudes a la API de origen.
  • Cambia el tipo de fuente de Git a OCI. Los repositorios de OCI, como Artifact Registry, suelen escalarse mejor que la mayoría de los servidores Git, ya que pueden escalarse horizontalmente sin necesidad de sincronizarse entre réplicas de servidores.

Siguientes pasos