Harbor ルート CA を信頼するように Docker を構成する

Harbor インスタンスは、組織の信頼できるルート認証局(CA)によって発行された Transport Layer Security(TLS)証明書を使用します。これにより、Docker クライアントと Harbor レジストリ間の接続が暗号化され、イメージが不正アクセスから保護されます。

始める前に

コンテナ イメージを管理する前に、次の手順を行う必要があります。

  1. https://docs.docker.com/engine/install/ubuntu/ の手順に沿って、Docker をまだインストールしていない場合はインストールします。Docker は Cloud Shell に含まれています。
  2. Docker がレジストリを操作するには特権アクセスが必要です。Linux や Windows では、Docker コマンドを実行するユーザーを Docker セキュリティ グループに追加します。Docker Desktop は、root ユーザーとして仮想マシンで実行されるため、この手順は MacOS では不要です。

    1. Linux の場合は、ユーザーを追加します。

        sudo usermod -a -G docker USER
      
    2. Windows の場合:

        net localgroup docker-users DOMAIN\USER /add
      

      USER は、追加するユーザー名に置き換えます。

Harbor ルート CA を信頼するように Docker を構成する

Docker クライアントを使用して Harbor インスタンスと通信する場合は、組織のルート CA を信頼するようにローカル Docker クライアントを構成する必要があります。

ルート CA を信頼するように Docker クライアントを構成するには、組織の管理者にルート CA の .crt ファイルをリクエストし、組織のルート CA を次の場所にコピーします。

/etc/docker/certs.d/HARBOR_INSTANCE_URL/ca.crt

HARBOR_INSTANCE_URL は、Harbor インスタンスの URL に置き換えます。例: harbor-1.org-1.zone1.google.gdc.test

このコマンドを使用すると、Docker クライアントが Harbor インスタンスとの HTTPS 接続を確立できます。

または、gdcloud CLI を使用して組織内の任意のユーザー クラスタにログインし、クラスタに保存されているウェブ CA をコピーします。

  export REGISTRY=HARBOR_INSTANCE_URL
  mkdir -p /etc/docker/certs.d/${REGISTRY} && \echo $(kubectl get secret org-web-ca -n istio-system -o
  jsonpath='{.data.ca\.crt}') | openssl base64 -A -d >
  /etc/docker/certs.d/${REGISTRY}/ca.crt

HARBOR_INSTANCE_URL は、Harbor インスタンスの URL に置き換えます。例: harbor-1.org-1.zone1.google.gdc.test

構成が失敗すると、次のエラー メッセージが表示されます。

Error response from daemon: Get "https://<HARBOR_INSTANCE_URL>": x509: certificate signed by unknown authority

この問題を解決する手順を繰り返し、必要に応じて GDC エンジニアリングにエスカレーションします。