Debido al trabajo, necesito autohospedar un caché proxy de Docker local usandoPuerto. Entonces fui a su documento, instalé el servidor y lo configuré correctamente, accediendo a él a través de FQDN y usando un certificado autofirmado. Puedo usarlo docker login
desde clientes externos y docker pull
sin problema.
Mi idea es servir este servidor Harbor alcontenedorservicio que se ejecuta dentro de un clúster k3s que tengo. Desde el plano de control del clúster (nombre de host: control01) puedo extraer imágenes:
/usr/local/bin/ctr -a /run/k3s/containerd/containerd.sock image pull
harbor.virtalus.com/dockerhubproxy/library/ubuntu:20.04
harbor.virtalus.com/dockerhubproxy/library/ubuntu:20.04: resolved |++++++++++++++++++++++++++++++++++++++|
index-sha256:4e9ed8dc49c4c21888f4053e59d7ef0959f57e77d0fbe47ba0063fddd6b70f2c: done |++++++++++++++++++++++++++++++++++++++|
manifest-sha256:7b3e30a1f373b0621681f13b92feb928129c1c38977481ee788a793fcae64fb9: exists |++++++++++++++++++++++++++++++++++++++|
layer-sha256:8e5c1b329fe39c318c0d49821b339fb94a215c5dc0a2898c8030b5a4d091bcba: exists |++++++++++++++++++++++++++++++++++++++|
config-sha256:1a437e363abfa47bfe4b3f5906b7444d12346102d944ebddd537e47a62fc6f52: exists |++++++++++++++++++++++++++++++++++++++|
elapsed: 10.3s total: 1.4 Ki (137.0 B/s)
unpacking linux/amd64 sha256:4e9ed8dc49c4c21888f4053e59d7ef0959f57e77d0fbe47ba0063fddd6b70f2c...
Entonces configuro el /etc/rancher/k3s/registries.yaml
de la siguiente maneradocumento oficial de Rancher:
cat << EOF > /etc/rancher/k3s/registries.yaml
mirrors:
"*":
endpoint:
- "https://harbor.virtalus.com"
configs:
"https://harbor.virtalus.com":
auth:
username: admin
password: Harbor12345
tls:
cert_file: /root/harbor.virtalus.com.cert
key_file: /root/harbor.virtalus.com.key
ca_file: /root/ca.crt
insecure_skip_verify: true
EOF
Lo he probado con y sin la config
sección pero sigue diciéndome:
pulling from host harbor.virtalus.com failed with status code [manifests 1.8.6]: 401 Unauthorized
He pasado las últimas 4 horas en esto, he leído algunos hilos de problemas de github, el documento oficial y varias guías de solución de problemas, pero todavía no sé qué estoy haciendo mal.
Respuesta1
Las configs
entradas contienen las secciones auth
y tls
pero parece que la tls
sección no se tiene en cuenta debido a una entrada de registro redundante y extraviada.
cat << EOF > /etc/rancher/k3s/registries.yaml
mirrors:
"*":
endpoint:
- "https://harbor.virtalus.com"
configs:
"https://harbor.virtalus.com":
auth:
username: admin
password: Harbor12345
"https://harbor.virtalus.com":
tls:
cert_file: /root/harbor.virtalus.com.cert
key_file: /root/harbor.virtalus.com.key
ca_file: /root/ca.crt
insecure_skip_verify: true
EOF
No dudes en eliminarlo y avísame si eso resuelve el problema.
Además, como nota al margen, es posible que desee utilizar la --debug
marca de docker
para obtener más detalles sobre el error encontrado.