Container Registry (ACR) のデリバリーチェーンは、単一のソースコードのプッシュから、リージョンをまたいだイメージのビルド、スキャン、レプリケーション、ディストリビューションといったイメージライフサイクル全体を自動化します。各ステージは監視および追跡が可能で、イメージがセキュリティスキャンに失敗した場合にチェーンを停止させるブロッキングルールを設定できます。
このトピックでは、5 つすべてのステージを設定したデリバリーチェーンを作成する方法について説明します。
前提条件
開始する前に、以下をご確認ください:
Container Registry Enterprise Edition (Advanced Edition) インスタンス。デリバリーチェーンは Advanced Edition のみでサポートされています。「Container Registry Enterprise Edition インスタンスの作成」をご参照ください。
そのインスタンス内に少なくとも 1 つのイメージを持つイメージリポジトリ。「リポジトリの作成とイメージのビルド」をご参照ください。
仕組み
各ステージは、その出力を次のステージに渡します:
イメージのビルド — ソースコードのプッシュによってトリガーされ、タグ付けされたイメージを生成します。
セキュリティスキャン — イメージをスキャンします。ブロッキングルールがトリガーされると、チェーンは停止し、後続のステージは実行されません。
イメージのレプリケーション — イメージをリージョンをまたいで 1 つ以上の宛先 Enterprise Edition インスタンスにコピーします。
ディストリビューショントリガー — Container Service for Kubernetes (ACK) クラスターに通知し、新しいイメージを使用して再デプロイさせます。
ステップ 1:デリバリーチェーンの作成と基本情報の設定
Container Registry コンソールにログインします。
上部のナビゲーションバーで、リージョンを選択します。
左側のナビゲーションウィンドウで、[インスタンス] をクリックします。
[インスタンス] ページで、対象の Enterprise Edition インスタンスをクリックします。
インスタンス管理ページの左側のナビゲーションウィンドウで、[デリバリーチェーン] > [チェーン] を選択します。
[チェーン] ページの左上隅にある [デリバリーチェーンの作成] をクリックします。
[基本情報] セクションで、次のパラメーターを設定します:
パラメーター 説明 名前 デリバリーチェーンの名前。 説明 任意。デリバリーチェーンの説明。 範囲 名前空間と、その名前空間内のイメージリポジトリを選択します。 すべて有効 オンにすると、選択した名前空間内のすべてのリポジトリが含まれます。オフにすると、除外するリポジトリを指定できます。
ステップ 2:イメージビルドルールの設定
ステップ 1 でオンプレミスのイメージリポジトリを選択した場合、イメージのビルドは利用できません。ステップ 3 に進んでください。
[チェーン] セクションで [イメージのビルド] をクリックし、次に [ビルドルールの追加] をクリックします。
[ビルド情報] ステップで、以下のパラメーターを設定し、[次へ] をクリックします。
パラメーター 説明 タイプ ソースコードリポジトリのタイプ。有効な値:[ブランチ]、[タグ]。 ブランチ/タグ ブランチ名またはタグ名を選択または入力します。正規表現がサポートされています。たとえば、 release-(?<imageTag>\w*)は、release-v1ブランチが更新されたときにビルドをトリガーし、イメージタグをv1に設定します。正規表現を指定すると、システムのみがビルドをトリガーでき、手動ビルドは無効になります。ビルドコンテキストディレクトリ Dockerfile を含むディレクトリへの相対パス。コードブランチのルートからの相対パスです。 Dockerfile ファイル名 Dockerfile の名前。デフォルト: Dockerfile。[タグ] ステップで、イメージタグの設定を行い、[保存] をクリックしてから [次へ] をクリックします。
[設定の追加] をクリックしてタグ設定を追加します。最大 3 つのイメージタグがサポートされています。
パラメーター 説明 イメージタグ ビルドされたイメージのタグ。例: latest。[ブランチ/タグ] で名前付きキャプチャグループを使用した場合、ここでキャプチャした値を参照できます。ビルド時間 任意。ソースコードのプッシュ時間 (UTC+8) をタグに追加します。フォーマット例: 20201015または202010151613。設定した場合、システムのみがビルドをトリガーできます。コミット ID 任意。最新のコミット ID の文字をタグに追加します。デフォルト:最初の 6 文字。スライダーで調整可能です。設定した場合、システムのみがビルドをトリガーできます。 [ビルド設定] ステップで、以下のパラメーターを設定し、[確認] をクリックします。
パラメーター 説明 ビルドアーキテクチャ ターゲットアーキテクチャ。複数選択すると、タグごとにアーキテクチャごとに 1 つのイメージが生成されます。 ビルドパラメーター ランタイムビルドパラメーターをキーと値のペアとして指定します。大文字と小文字が区別されます。最大 20 ペア。
このステップの出力: ステップ 1 で指定されたリポジトリに保存されたタグ付きイメージ。このイメージは、セキュリティスキャンステージの入力となります。
ステップ 3:イメージセキュリティスキャン用のブロッキングルールの設定
セキュリティスキャンは、イメージがレプリケーションまたはディストリビューションされる前に各イメージをチェックします。ブロッキングルールがトリガーされると、すべてのイメージに対してチェーンが停止します。
[チェーン] セクションで、[セキュリティスキャン] をクリックします。
[ノード設定] セクションで、以下を設定します:セキュリティエンジン — スキャンエンジンを選択します:ブロック戦略 — ルールがトリガーされたときのチェーンの応答を選択します:
オプション 説明 Security Center スキャンエンジン 脆弱性を検出し、Security Center で数回クリックするだけで修正できます。Security Center の Ultimate Edition が必要です。現在のリージョンで Security Center が有効化されていない場合、このオプションは表示されません。「Security Center の購入」をご参照ください。 Trivy スキャンエンジン Container Registry を介したワンクリックでの脆弱性修正はサポートされていません。 戦略 動作 ブロッキング ルールがトリガーされると、すべてのイメージの後続ステージをすべて停止します。[深刻度] と [脆弱性] のしきい値を指定し、元のイメージの処理 (削除またはバックアップ) を設定します。 非ブロッキング スキャン結果に関係なく、後続のすべてのステージが進行します。
このステップの出力: 戦略が [非ブロッキング] であるか、ルールがトリガーされなかった場合、イメージはレプリケーションステージに進みます。[ブロッキング] がトリガーされた場合、チェーンはここで終了します。
ステップ 4:イメージレプリケーションルールの設定
イメージがセキュリティスキャンに合格すると、レプリケーションによって他のリージョンにある宛先の Enterprise Edition インスタンスに自動的にコピーされます。
[チェーン] セクションで [同期のトリガー] をクリックし、次に [ルールの作成] をクリックします。
[ルールの作成] ダイアログボックスで、ルール名を入力し、宛先インスタンスを指定します:[次へ] をクリックします。
リージョンと既存の Enterprise Edition インスタンスを宛先として選択します。
適切なインスタンスが存在しない場合は、[インスタンスの作成] をクリックします。「Container Registry Enterprise Edition インスタンスの作成」をご参照ください。
インターネットアクセスが無効になっている場合でも、イメージは異なるリージョンで自動的にレプリケーションできます。
[レプリケーション情報] ウィザードで、レプリケーションの範囲を設定し、[ルールの作成] をクリックします。
パラメーター 説明 レプリケーションレベル レプリケーションの範囲です。有効な値: 名前空間(名前空間内のすべてのリポジトリ)、リポジトリ(特定のリポジトリ)。 送信元アドレス レプリケーション元となる名前空間およびリポジトリです。レプリケーション対象のイメージタグをフィルターする正規表現を入力します。デフォルト値:すべてのタグ。リポジトリフィールドは、レプリケーションレベルがリポジトリに設定されている場合のみ利用可能です。
このステップの出力: イメージは設定されたすべての宛先インスタンスで利用可能になり、ディストリビューションの準備が整います。
ステップ 5:ディストリビューショントリガーの設定
ディストリビューショントリガーは、ご利用の ACK クラスターに通知し、新しいイメージをプルしてアプリケーションを自動的に再デプロイさせます。
[チェーン] セクションで [トリガー] をクリックし、次に [作成] をクリックします。
[トリガーの作成] ダイアログボックスで、次のパラメーターを設定し、[確認] をクリックします。
パラメーター 説明 名前 トリガーの名前。 トリガー URL コールバック URL。この URL は、ご利用の ACK クラスターの設定から取得します。 トリガー ディストリビューションをトリガーするタイミング。有効な値:[すべて] (すべてのイメージ更新がディストリビューションをトリガー)、[正規表現による] (正規表現に一致するタグを持つイメージのみ)、[タグによる] (指定されたリスト内のタグを持つイメージのみ)。 [デリバリーチェーンの作成] ページで、[作成] をクリックします。
結果
デリバリーチェーンが [チェーン] ページに表示されます。
実行をモニターするには、ご利用の Enterprise Edition インスタンスにログインし、[レコード] ページに移動します。そこで、各ステージのステータスと結果を確認できます。実行が成功した後、更新されたイメージがご利用の ACK クラスターにデプロイされていることを確認します。
次のステップ
チェーンをトリガーするには、設定されたブランチまたはタグにソースコードの変更をプッシュします。
スキャン結果を表示するには、[レコード] ページに移動し、セキュリティスキャンステージの出力を確認します。
宛先インスタンスを追加するには、追加するリージョンごとにステップ 4 を繰り返します。