このページでは、Google Distributed Cloud(GDC)エアギャップ アプライアンスでシステム アーティファクトを変更する方法について説明します。
GDC でシステム アーティファクトを変更して、デプロイを管理および調整します。
始める前に
システム アーティファクトを変更するには、診断アクセス権を取得し、必要な ID とアクセスロールへのアクセス権が必要です。
- 診断アクセスは、お客様が問題に遭遇したときに安全にサポートするために必要な特権アクセス モードです。このアクセス権を付与するには、チケットを作成する必要があります。
- システム Artifact Registry デバッガ: すべての Harbor リソースに対する読み取り / 書き込みアクセス権があります。セキュリティ管理者に、システム アーティファクト レジストリ デバッガ(
sar-debugger)クラスタロールを付与するよう依頼します。 - システム Artifact Registry harbor-system シークレット Debugger:
harbor-systemNamespace でデバッガ アクセス権を持っています。セキュリティ管理者に、システム アーティファクト レジストリ harbor-system シークレット デバッガ(sar-harbor-system-secret-debugger)ロールを付与するよう依頼します。
Docker イメージをアップロードする
システム アーティファクトを変更するには、新しい Docker イメージをアップロードする必要があります。アップロード方法は、コンテナ イメージを push する次の 2 つのレジストリのどちらかによって異なります。
- コンテナ イメージをブートストラップ マシンの Artifact Registry にアップロードします。
- コンテナ イメージを組織インフラストラクチャ クラスタの Artifact Registry にアップロードします。
以降のセクションでは、2 つのレジストリ タイプのアップロード手順を示します。
ブートストラップ マシンにコンテナ イメージをアップロードする
ブートストラップ マシンでコンテナ イメージを Artifact Registry にアップロードするには、次の操作を行います。
重大な問題が修正された変更済みの Docker イメージがあることを確認します。
新しいイメージを GDC 環境のブートストラップ ノードに転送します。
ブートストラップ ノードにログインします。
ブートストラップ時にブートストラップ マシンで 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: コンテナ イメージタグ。
新しいイメージを Artifact Registry に push します。
docker image push $REGISTRY_IP/PROJECT_NAME/IMAGE_NAME:TAG
コンテナ イメージを組織のインフラストラクチャ クラスタにアップロードする
org インフラストラクチャ クラスタの Artifact Registry にコンテナ イメージをアップロードする手順は次のとおりです。
重大な問題が修正された変更済みの Docker イメージがあることを確認します。
新しいイメージを、ルート
kubeconfigファイルを使用してルートアクセス権を持つノードに転送し、エアギャップ環境の組織インフラストラクチャ クラスタに転送します。組織インフラストラクチャ クラスタ
kubeconfigパスを環境変数としてエクスポートします。export ORG_INFRA_KUBECONFIG=KUBECONFIG_FILE_PATHKUBECONFIG_FILE_PATHは、kubeconfigファイルのパスに置き換えます。クラスタ内の Artifact Registry アドレスを見つけて、
REGISTRY_IP環境変数として設定します。REGISTRY=$(kubectl --kubeconfig $ORG_INFRA_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 $ORG_INFRA_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 $ORG_INFRA_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: コンテナ イメージタグ。
新しいイメージを Artifact Registry に push します。
docker image push $REGISTRY_IP/PROJECT_NAME/IMAGE_NAME:TAG
システム アーティファクトを変更する
gdcloud artifacts コマンドを使用して、GDC のシステム アーティファクトを変更します。ソフトウェア パッケージの置き換え、構成の調整、パッチの適用などのアクションを実行して、デプロイを更新、カスタマイズ、保護します。
次の操作を行います。
aptパッケージを管理します。- OCI パッケージからイメージをビルドして抽出します。
- 利用可能なルート OCI イメージのバージョンを一覧表示します。
- 既存のパッケージにパッチを適用します。
- レジストリとの間で OCI パッケージを pull および push します。
- OCI バンドルの構造を表示します。
- OCI バンドルを解凍します。
詳細については、gdcloud artifacts をご覧ください。