k3s からローカル Docker レジストリ (harbor) からイメージをプルしようとすると 401 Unauthorized が発生する

k3s からローカル Docker レジストリ (harbor) からイメージをプルしようとすると 401 Unauthorized が発生する

仕事の都合で、ローカルのDockerプロキシキャッシュを自分でホストする必要があります。docker loginそこで、ドキュメントを参照してサーバーをインストールし、適切に構成し、FQDN 経由でアクセスし、自己署名証明書を使用しました。外部クライアントからdocker pull問題なく使用できます。

私のアイデアは、このハーバーサーバーをコンテナ私が所有する 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 の問題スレッド、公式ドキュメント、およびいくつかのトラブルシューティング ガイドを読みましたが、まだ何が間違っているのかわかりません。

401 権限がありません

答え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

関連情報