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 objetosRootSync
oRepoSync
. - 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
oRepoSync
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
Si sigues teniendo problemas, comprueba si el problema que tienes es un problema conocido.
Si no encuentras una solución a tu problema en la documentación, consulta la sección Obtener asistencia para obtener más ayuda, incluidos consejos sobre los siguientes temas:
- Abrir un caso de asistencia poniéndose en contacto con el equipo de Atención al Cliente de Cloud.
- Recibir asistencia de la comunidad haciendo preguntas en Stack Overflow.
Si usas kpt o Kustomize, usa la etiqueta
kpt
okustomize
para buscar problemas similares. - Abrir errores o solicitudes de funciones mediante el sistema de seguimiento de problemas público en GitHub.