システム アーティファクトを変更する

システム アーティファクトは、Google Distributed Cloud(GDC)エアギャップ アプライアンス システムをサポートし、GDC デプロイを管理します。GDC 限定公開 Artifact Registry には、システム アーティファクトが保存されます。システム アーティファクトには、次のようなさまざまな形式があります(ただしこれらに限定されません)。

  • Anthos、KubeVirt、GDC マネージド サービスのコンテナ イメージ
  • オペレーティング システム(OS)イメージ
  • ファームウェアの形式
  • ゴールデン仮想マシン(VM)テンプレート
  • Helm チャート

Artifact Registry は、インストール、アップグレード、リソースのライフサイクルなど、さまざまな GDC システム オペレーションに安全かつスケーラブルで改ざん防止された方法で参加します。

始める前に

システム アーティファクトを変更するには、診断アクセス権を取得する必要があります。診断アクセスは、お客様が問題に遭遇したときに安全にサポートするために必要な特権アクセス モードです。このアクセス権を付与するには、チケットを作成する必要があります。

Docker イメージをアップロードする

システム アーティファクトを変更するには、新しい Docker イメージをアップロードする必要があります。アップロード方法は、コンテナ イメージを push する次の 2 つのレジストリのどちらかによって異なります。

以降のセクションでは、2 つのレジストリ タイプのアップロード手順について説明します。

ブートストラップ マシンの Artifact Registry

ブートストラップ マシンの Artifact Registry にコンテナ イメージをアップロードするには、次の操作を行います。

  1. 重大な問題が修正された変更済みの Docker イメージがあることを確認します。

  2. 新しいイメージをエアギャップ環境のブートストラップ ノードに転送します。

  3. ブートストラップ ノードにログインします。

  4. ブートストラップ時にブートストラップ マシンで Artifact Registry のアドレスを見つけて、REGISTRY_IP 環境変数として設定します。

    REGISTRY=$(kubectl get harborcluster harbor -n harbor-system -o=jsonpath='{.spec.externalURL}')
    
    REGISTRY_IP=${REGISTRY#https://}
    
  5. Artifact Registry にアクセスするための認証情報を取得します。次のコマンドを使用して、管理者アカウントとパスワードを取得します。

    ADMIN_PASS=$(kubectl -n harbor-system get secret harbor-admin \
        -o jsonpath="{.data.secret}" | base64 -d)
    
  6. Artifact Registry にログインします。

    docker login $REGISTRY_IP -u admin -p $ADMIN_PASS
    

    Artifact Registry へのログインが成功したことを確認する Login Succeeded メッセージが出力されます。

  7. 新しいイメージにタグを付けます。

    docker image tag CONTAINER_IMAGE_URL \
        $REGISTRY_IP/PROJECT_NAME/IMAGE_NAME:TAG
    

    次のように置き換えます。

    • CONTAINER_IMAGE_URL: ローカル コンテナ イメージ URL(gcr.io/repository/image:tag など)。
    • PROJECT_NAME: Artifact Registry プロジェクト名。
    • IMAGE_NAME: コンテナ イメージの名前。
    • TAG: コンテナ イメージタグ。
  8. 新しいイメージを Artifact Registry に push します。

    docker image push $REGISTRY_IP/PROJECT_NAME/IMAGE_NAME:TAG
    

管理クラスタの Artifact Registry

コンテナ イメージを管理クラスタの Artifact Registry にアップロードする手順は次のとおりです。

  1. 重大な問題が修正された変更済みの Docker イメージがあることを確認します。

  2. 新しいイメージを、ルート kubeconfig ファイルを使用してエアギャップ環境の管理クラスタにルートアクセス権を持つノードに転送します。

  3. 管理クラスタの kubeconfig ファイルパスを環境変数としてエクスポートします。

    export ADMIN_CLUSTER_KUBECONFIG=KUBECONFIG_FILE_PATH
    

    KUBECONFIG_FILE_PATH は、kubeconfig ファイルのパスに置き換えます。

  4. クラスタ内の Artifact Registry アドレスを見つけて、REGISTRY_IP 環境変数として設定します。

    REGISTRY=$(kubectl --kubeconfig $ADMIN_CLUSTER_KUBECONFIG get harborcluster harbor -n harbor-system -o=jsonpath='{.spec.externalURL}')
    
    REGISTRY_IP=${REGISTRY#https://}
    
  5. REGISTRY_IP10.200.0.36:10443 などの有効な URL が含まれていることを確認します。

    echo ${REGISTRY_IP}
    
  6. 認証局(CA)証明書が存在するかどうかを確認します。

    ls -al /etc/docker/certs.d/${REGISTRY_IP}/ca.crt
    

    証明書が存在しない場合は、作成して構成します。

    mkdir -p /etc/docker/certs.d/${REGISTRY_IP}/
    
    chmod 755  /etc/docker/certs.d/${REGISTRY_IP}/
    
    echo $(kubectl get secret harbor-cert-secret -n istio-system -o jsonpath='{.data.ca\.crt}' --kubeconfig $ADMIN_CLUSTER_KUBECONFIG) | openssl base64 -A -d >  /etc/docker/certs.d/${REGISTRY_IP}/ca.crt
    
    chmod 755  /etc/docker/certs.d/${REGISTRY_IP}/ca.crt
    
  7. Artifact Registry にアクセスするための認証情報を取得します。次のコマンドを使用して、管理者アカウントとパスワードを取得します。

    ADMIN_PASS=$(kubectl --kubeconfig $ADMIN_CLUSTER_KUBECONFIG \
        -n harbor-system get secret harbor-admin \
        -o jsonpath="{.data.secret}" | base64 -d)
    
  8. Artifact Registry にログインします。

    docker login $REGISTRY_IP -u admin -p $ADMIN_PASS
    

    Artifact Registry へのログインが成功したことを確認する Login Succeeded メッセージが出力されます。

  9. 新しいイメージにタグを付けます。

    docker image tag CONTAINER_IMAGE_URL \
        $REGISTRY_IP/PROJECT_NAME/IMAGE_NAME:TAG
    

    次のように置き換えます。

    • CONTAINER_IMAGE_URL: ローカル コンテナ イメージ URL(gcr.io/repository/image:tag など)。
    • PROJECT_NAME: Artifact Registry プロジェクト名。
    • IMAGE_NAME: コンテナ イメージの名前。
    • TAG: コンテナ イメージタグ。
  10. 新しいイメージを Artifact Registry に push します。

    docker image push $REGISTRY_IP/PROJECT_NAME/IMAGE_NAME:TAG