このページでは、コンテナ イメージを Harbor にアップロードし、そのイメージを GDC Sandbox インスタンスにデプロイするプロセスについて説明します。
準備
インスタンスに接続するの手順に沿って、Linux コマンドライン アクセスを使用してインスタンスに接続します。リモート デスクトップ経由でゲートウェイに接続するか、Linux マシンで
sshuttle
を実行できます。次の手順で使用する環境変数を設定します。
export TENANT_PROJECT=TENANT_PROJECT # Intended deployment project for the container workflow. export HARBOR_INSTANCE_NAME=HARBOR_INSTANCE_NAME # Harbor Container Registry instance name. export HARBOR_PROJECT=HARBOR_PROJECT # Container registry project name for your images. export AO_USER=AO_USER # Your user name in the instance, e.g.: fop-my-user@example.com. export INSTANCE_URL=${HARBOR_INSTANCE_NAME}-${TENANT_PROJECT}.org-1.zone1.google.gdch.test. export DOCKER_CONFIG_PATH=DOCKER_CONFIG_PATH # Path to docker config file e.g.: /root/.docker/config.json.
Harbor レジストリ インスタンスを作成するには、Harbor レジストリ インスタンスを作成するの手順に沿って操作します。または、事前に作成された Sandbox Harbor インスタンスを使用することもできます。GDC Sandbox のデフォルトの
user-project
には、すでにデプロイされている Harbor インスタンスuser-haas-instance
が付属しており、開発に使用できます。export HARBOR_INSTANCE_NAME=user-haas-instance export TENANT_PROJECT=user-project export INSTANCE_URL=${HARBOR_INSTANCE_NAME}-${TENANT_PROJECT}.org-1.zone1.google.gdch.test
Harbor に画像をアップロードする
Harbor プロジェクトを作成するの手順に沿って、Harbor プロジェクトを作成します。
例:
gdcloud harbor harbor-projects create HARBOR_PROJECT \ --project=TENANT_PROJECT \ --instance=HARBOR_INSTANCE_NAME
Docker にログインします。CLI シークレットを使用して Docker または Helm にログインするから始めます。
コンテナ イメージをダウンロードまたはビルドし、Google Distributed Cloud のエアギャップ手順に沿って イメージを push して Harbor に push します。
たとえば、Gitlab から pull して Harbor に push するワークフローは次のようになります。
ログインして Gitlab コンテナ レジストリから pull します。
export GITLAB_ID=GITLAB_ID export GITLAB_PROJECT_NAME=GITLAB_PROJECT_NAME export GITLAB_IMAGE_PATH=registry.gitlab.com/GITLAB_ID/GITLAB_PROJECT_NAME docker login registry.gitlab.com docker pull ${GITLAB_IMAGE_PATH}
Gitlab イメージを Harbor に push します。
export TAG=demo-image docker tag ${TAG} ${GITLAB_IMAGE_PATH} docker push ${INSTANCE_URL}/${HARBOR_PROJECT}/${TAG}
ロールの付与
シークレットとデプロイを作成する権限をユーザーに付与します。
secret-admin
ロールを追加して、ユーザーにシークレットを作成する権限を付与します。gdcloud projects add-iam-policy-binding PROJECT \ --member="user:${AO_USER}" \ --role=secret-admin
namespace-admin
ロールを追加して、コンテナ ワークロードをデプロイする権限をユーザーに付与します。gdcloud projects add-iam-policy-binding PROJECT \ --member="user:${AO_USER}" \ --role=namespace-admin
コンテナ アプリをデプロイする
Kubernetes イメージ pull Secret を作成するに進んで、Secret を作成してアプリをデプロイします。