Beim Versuch, Bilder aus dem lokalen Docker-Register (Harbour) von K3s abzurufen, wird die Meldung „401 Unauthorized“ angezeigt

Beim Versuch, Bilder aus dem lokalen Docker-Register (Harbour) von K3s abzurufen, wird die Meldung „401 Unauthorized“ angezeigt

Aus beruflichen Gründen muss ich einen lokalen Docker-Proxy-Cache selbst hosten.Hafen. Also ging ich zu deren Dokumentation und installierte den Server und konfigurierte ihn richtig, indem ich über FQDN darauf zugriff und ein selbstsigniertes Zertifikat verwendete. Ich kann ihn docker loginvon externen Clients aus docker pullproblemlos verwenden.

Meine Idee ist, diesen Harbor-Server bereitzustellen fürContainerdDienst, der in einem K3S-Cluster ausgeführt wird, den ich habe. Von der Kontrollebene des Clusters (Hostname: control01) kann ich Bilder abrufen:

/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...

Ich konfiguriere das /etc/rancher/k3s/registries.yamlalso wie folgt:offizielles Dokument von 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

Ich habe es mit und ohne diesen configAbschnitt versucht, aber es wird mir immer Folgendes angezeigt:

pulling from host harbor.virtalus.com failed with status code [manifests 1.8.6]: 401 Unauthorized

Ich habe die letzten 4 Stunden damit verbracht, einige Threads zu GitHub-Problemen, das offizielle Dokument und mehrere Anleitungen zur Fehlerbehebung gelesen, weiß aber immer noch nicht, was ich falsch mache.

401 nicht Autorisiert

Antwort1

Die configsEinträge enthalten die Abschnitte authund tls, aber es scheint, dass der tlsAbschnitt aufgrund eines redundanten, falsch platzierten Registrierungseintrags nicht berücksichtigt wird

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

Entfernen Sie es einfach und lassen Sie mich wissen, ob das Problem dadurch behoben wird.

Zusätzlich können Sie als Randbemerkung das --debugFlag von verwenden docker, um weitere Details über den aufgetretenen Fehler zu erhalten.

verwandte Informationen