Из-за работы мне нужно разместить локальный кэш Docker-прокси с помощьюГавань. Поэтому я перешел к их документации, установил сервер и настроил его должным образом, получив доступ через FQDN и используя самоподписанный сертификат. Я могу использовать его docker login
из внешних клиентов и docker pull
без проблем.
Моя идея заключается в том, чтобы обслуживать этот сервер Harborконтейнерdслужба, запущенная внутри кластера k3s, у меня есть. Из плоскости управления кластера (имя хоста: control01) я могу вытащить образы:
/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...
Итак, я настраиваю /etc/rancher/k3s/registries.yaml
следующим образомофициальный документ от 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
Я пробовал и с этим config
разделом, и без него, но он мне постоянно говорит:
pulling from host harbor.virtalus.com failed with status code [manifests 1.8.6]: 401 Unauthorized
Я потратил на это последние 4 часа, прочитал несколько тем по проблемам на GitHub, официальную документацию и несколько руководств по устранению неполадок, но так и не понял, что я делаю не так.
решение1
Записи configs
содержат разделы auth
и , tls
но, по-видимому, tls
раздел не учитывается из-за избыточной неправильно размещенной записи реестра.
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
Не стесняйтесь удалить его и дайте мне знать, если это решит проблему.
Кроме того, в качестве примечания вы можете использовать флаг --debug
, docker
чтобы получить более подробную информацию о возникшей ошибке.