システム アーティファクトは、Google Distributed Cloud(GDC)エアギャップ アプライアンス システムをサポートし、GDC デプロイを管理します。GDC 限定公開 Artifact Registry には、システム アーティファクトが保存されます。システム アーティファクトには、次のようなさまざまな形式があります(ただしこれらに限定されません)。
- Anthos、KubeVirt、GDC マネージド サービスのコンテナ イメージ
- オペレーティング システム(OS)イメージ
- ファームウェアの形式
- ゴールデン仮想マシン(VM)テンプレート
- Helm チャート
Artifact Registry は、インストール、アップグレード、リソースのライフサイクルなど、さまざまな GDC システム オペレーションに安全かつスケーラブルで改ざん防止された方法で参加します。
始める前に
システム アーティファクトを変更するには、診断アクセス権を取得する必要があります。診断アクセスは、お客様が問題に遭遇したときに安全にサポートするために必要な特権アクセス モードです。このアクセス権を付与するには、チケットを作成する必要があります。
Docker イメージをアップロードする
システム アーティファクトを変更するには、新しい Docker イメージをアップロードする必要があります。アップロード方法は、コンテナ イメージを push する次の 2 つのレジストリのどちらかによって異なります。
- コンテナ イメージをブートストラップ マシンの Artifact Registry にアップロードします。
- 管理クラスタの Artifact Registry にコンテナ イメージをアップロードします。
以降のセクションでは、2 つのレジストリ タイプのアップロード手順について説明します。
ブートストラップ マシンの Artifact Registry
ブートストラップ マシンの Artifact Registry にコンテナ イメージをアップロードするには、次の操作を行います。
重大な問題が修正された変更済みの Docker イメージがあることを確認します。
新しいイメージをエアギャップ環境のブートストラップ ノードに転送します。
ブートストラップ ノードにログインします。
ブートストラップ時にブートストラップ マシンで Artifact Registry のアドレスを見つけて、REGISTRY_IP 環境変数として設定します。
REGISTRY=$(kubectl get harborcluster harbor -n harbor-system -o=jsonpath='{.spec.externalURL}') REGISTRY_IP=${REGISTRY#https://}Artifact Registry にアクセスするための認証情報を取得します。次のコマンドを使用して、管理者アカウントとパスワードを取得します。
ADMIN_PASS=$(kubectl -n harbor-system get secret harbor-admin \ -o jsonpath="{.data.secret}" | base64 -d)Artifact Registry にログインします。
docker login $REGISTRY_IP -u admin -p $ADMIN_PASSArtifact Registry へのログインが成功したことを確認する
Login Succeededメッセージが出力されます。新しいイメージにタグを付けます。
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: コンテナ イメージタグ。
- CONTAINER_IMAGE_URL: ローカル コンテナ イメージ URL(
新しいイメージを Artifact Registry に push します。
docker image push $REGISTRY_IP/PROJECT_NAME/IMAGE_NAME:TAG
管理クラスタの Artifact Registry
コンテナ イメージを管理クラスタの Artifact Registry にアップロードする手順は次のとおりです。
重大な問題が修正された変更済みの Docker イメージがあることを確認します。
新しいイメージを、ルート
kubeconfigファイルを使用してエアギャップ環境の管理クラスタにルートアクセス権を持つノードに転送します。管理クラスタの
kubeconfigファイルパスを環境変数としてエクスポートします。export ADMIN_CLUSTER_KUBECONFIG=KUBECONFIG_FILE_PATHKUBECONFIG_FILE_PATH は、
kubeconfigファイルのパスに置き換えます。クラスタ内の Artifact Registry アドレスを見つけて、REGISTRY_IP 環境変数として設定します。
REGISTRY=$(kubectl --kubeconfig $ADMIN_CLUSTER_KUBECONFIG get harborcluster harbor -n harbor-system -o=jsonpath='{.spec.externalURL}') REGISTRY_IP=${REGISTRY#https://}REGISTRY_IP に
10.200.0.36:10443などの有効な URL が含まれていることを確認します。echo ${REGISTRY_IP}認証局(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.crtArtifact Registry にアクセスするための認証情報を取得します。次のコマンドを使用して、管理者アカウントとパスワードを取得します。
ADMIN_PASS=$(kubectl --kubeconfig $ADMIN_CLUSTER_KUBECONFIG \ -n harbor-system get secret harbor-admin \ -o jsonpath="{.data.secret}" | base64 -d)Artifact Registry にログインします。
docker login $REGISTRY_IP -u admin -p $ADMIN_PASSArtifact Registry へのログインが成功したことを確認する
Login Succeededメッセージが出力されます。新しいイメージにタグを付けます。
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: コンテナ イメージタグ。
- CONTAINER_IMAGE_URL: ローカル コンテナ イメージ URL(
新しいイメージを Artifact Registry に push します。
docker image push $REGISTRY_IP/PROJECT_NAME/IMAGE_NAME:TAG