Resolución de problemas
La mayoría de las sorpresas vienen del endurecimiento: las imágenes se ejecutan como nonroot sobre un sistema de archivos raíz de solo lectura y se etiquetan por versión, no con :latest. Aquí tienes cómo se ve cada caso y cómo manejarlo.
MANIFEST_UNKNOWN o “tag not found: latest”
Las imágenes no tienen etiqueta :latest. Una referencia sin etiqueta se resuelve a :latest y falla:
docker pull ghcr.io/quenchworks/images/redis # error: latest not founddocker pull ghcr.io/quenchworks/images/redis:8.8.0 # worksUsa siempre una etiqueta de versión (mostrada en la página de cada imagen) o un digest. Consulta Etiquetas y versiones.
cosign verify o verify-attestation devuelve 404
Las atestaciones se adjuntan al digest de una construcción específica. Verificar un digest obsoleto, o uno anterior a una reconstrucción, no encuentra nada. Verifica en su lugar la etiqueta de versión, que se resuelve al digest atestado actual:
cosign verify-attestation --type https://spdx.dev/Document/v2.3 ghcr.io/quenchworks/images/redis:8.8.0 \ --certificate-identity-regexp 'https://github.com/quenchworks/.+' \ --certificate-oidc-issuer https://token.actions.githubusercontent.comConsulta Verificar una firma y SBOM y procedencia.
El contenedor termina al escribir en su sistema de archivos
El sistema de archivos raíz es de solo lectura. Las aplicaciones que necesitan escribir deben escribir en un volumen o en /tmp (provisto como escribible). Los charts ya montan lo que la aplicación necesita; para rutas escribibles adicionales, añade un volumen en lugar de desactivar el ajuste de solo lectura:
extraVolumes: - name: scratch emptyDir: {}extraVolumeMounts: - name: scratch mountPath: /var/scratchPermiso denegado en un volumen montado
Los contenedores se ejecutan como nonroot (uid 1001 para la mayoría de las imágenes; el chart documenta cualquier excepción). Un PersistentVolume recién aprovisionado puede pertenecer a root, en el que el proceso nonroot no puede escribir. Establece fsGroup para que el volumen sea propiedad de grupo del usuario de ejecución:
podSecurityContext: fsGroup: 1001 # let the nonroot user own mounted volumesPod rechazado por Pod Security Admission
Las imágenes ya satisfacen el Pod Security Standard restricted: nonroot, sin escalada de privilegios, todas las capacidades eliminadas, seccomp RuntimeDefault, sistema de archivos raíz de solo lectura. Si un pod aún así es rechazado, la causa suele ser una anulación que pasaste (un securityContext personalizado, un montaje de host o una capacidad añadida). Elimina la anulación y deja que apliquen los valores predeterminados endurecidos de quench-common. Consulta Configuración.
Arquitectura incorrecta
Las imágenes se construyen para linux/amd64 y linux/arm64. La etiqueta de versión es un índice multi-arch, así que el runtime descarga la correcta automáticamente. Otras arquitecturas no se publican.
Helm no puede descargar el chart
Los charts se publican en GHCR como artefactos OCI públicos, así que no se necesita inicio de sesión para el registro oficial. Si los replicaste a un registro privado, ejecuta primero helm registry login contra él, y consulta Instalación air-gapped.