操作シナリオ
Tencent Container Registry(TCR)は、柔軟なトリガー(Webhook)機能の設定および利用に対応しています。インスタンス内に適切なトリガーを設定することで、既存の開発プロセスや CI/CD プラットフォームと迅速に連携し、イメージ更新によるアプリケーションデプロイの自動トリガーなどのコンテナ DevOps シナリオを実現できます。
トリガー機能では、ユーザーがトリガールールをカスタマイズして作成でき、トリガーログの表示にも対応しています。トリガーアクションは、コンテナイメージおよび Helm Chart のプッシュ、プル、削除操作をサポートします。トリガールールは、柔軟な正規表現フィルタリング、インスタンス内のネームスペースの指定、およびイメージリポジトリとバージョンに対する正規表現フィルタリングルールの設定をサポートし、一部のリポジトリまたは特殊な命名形式のイメージバージョンのみでトリガーを起動できるようにします。カスタムヘッダー機能では、Key:Value の形式でターゲット URL にアクセスする際のヘッダーを設定でき、認証などのシナリオに利用できます。
前提条件
TCR エンタープライズ版インスタンスのトリガーを作成・管理する前に、以下の準備作業を完了する必要があります:
操作手順
トリガーの作成
1. TCR コンソールにログインし、左側のナビゲーションバーでトリガーを選択します。
「トリガー」ページで現在のインスタンス内のトリガールール一覧を確認できます。インスタンスを切り替える場合は、ページ上部の「インスタンス名」ドロップダウンリストから選択してください。 2. 新規作成をクリックし、表示される「トリガーの新規作成」ウィンドウで、以下の指示に従ってルールを設定します。下図に示すとおりです:
名称:インスタンスのルール名です。英小文字、数字、および(-、.、_)の 3 種類の記号をサポートし、英数字で始まる必要があります。本記事では webhook-demo を例として使用します。
説明:ルールの説明です。中国語に対応しています。
トリガーアクション:現在、イメージのプッシュ、イメージの削除、Helm Chart のアップロード、Helm Chart の削除の 4 種類のトリガーアクションをサポートしています。トリガーの実行時、送信される webhook リクエストには該当するトリガーアクション情報が含まれます。
トリガールール:
トリガーインスタンス:トリガーが属するインスタンスで、現在選択中のインスタンスであり、変更できません。
ネームスペース:トリガーが有効になるネームスペースです。リストが空の場合は、まずこのインスタンス内でネームスペースを作成してください。 リポジトリ名:トリガーが有効になるリポジトリ名です。イメージリポジトリおよび Helm Chart リポジトリに対して正規表現マッチングを実行できます。 バージョンタグ:トリガーが有効になるタグです。正規表現マッチングをサポートしています。すべてのバージョンでトリガーを発生させる場合は、入力する必要はありません。 URL:トリガーが起動された後にリクエストを送信するターゲット URL、つまりユーザーが設定した Webhook サーバーのアクセスアドレスです。トリガーはこの URL に POST リクエストを送信し、リクエストボディにはトリガーアクション、トリガールールなどの情報が含まれます。
ヘッダー:トリガーが POST リクエストを送信する際に、Key:Value 形式で付与可能なヘッダー情報を入力できます。例えば、Authentication: xxxxxxx です。
3. 確定をクリックすると、トリガールールを作成できます。
トリガールールの管理
作成に成功すると、「トリガー」ページで作成済みのトリガールールを確認できます。以下の操作でトリガールールを管理できます。下図に示すとおりです: トリガーログの表示:トリガールール名、またはトリガールール名の右側にあるトリガーログをクリックすると、そのルールのトリガーログを確認できます。詳細については、トリガーログの表示を参照してください。 ルールステータスの変更:はルールが有効であることを示し、はルールが無効であることを示します。新規作成されたトリガールールはデフォルトで有効状態です。ご自身で調整できます。 設定:トリガールールを再設定します。すべてのパラメータを設定できます。
削除:このトリガールールを削除します。
トリガーログの表示
指定したトリガールール名、またはトリガールール名の右側にあるトリガーログをクリックすると、そのルールのトリガーログを確認できます。下図に示すとおりです: 含まれる情報は以下の通りです:
タスク ID:インスタンス内で一意のトリガータスク ID です。
トリガーアクション:このトリガーを発生させたトリガーアクションです。例えば、イメージのプッシュです。
トリガーリポジトリ:このトリガーアクションを発生させたリポジトリリソースです。
ステータス:トリガーが webhook リクエストを実行した際の成功ステータスです。
作成時間:このトリガーの起動時間、つまり webhook リクエストを送信した日時です。
関連情報
Webhook リクエスト形式リファレンス
ユーザーがルールに一致するリソースに対して対応するアクションを実行すると、例えば指定したイメージリポジトリに新しいイメージをプッシュすると、対応するトリガーが起動され、ルールに設定された URL に HTTP POST リクエストを送信します。リクエストボディにはトリガーアクション、リポジトリパスなどの情報が含まれます。以下は、イメージのプッシュによってトリガーされ、解析されたリクエストボディの情報です。Webhook サーバー側の開発の参考として利用できます。
{
"type": "pushImage",
"occur_at": 1589106605,
"event_data": {
"resources": [
{
"digest": "sha256:89a42c3ba15f09a3fbe39856bddacdf9e94cd03df7403cad4fc105xxxx268fc9",
"tag": "v1.10.0",
"resource_url": "xxx-bj.tencentcloudcr.com/public/nginx:v1.10.0"
}
],
"repository": {
"date_created": 1587119137,
"name": "nginx",
"namespace": "public",
"repo_full_name": "public/nginx",
"repo_type": "public"
}
},
"operator": "332133xxxx"
}
正規表現を使用したルールの新規作成
正規表現マッチングルール
以下は、「リポジトリ名」と「バージョンタグ」を入力する際に、正規表現がサポートするマッチングルールです。
*:パス区切り文字(/)を含まない任意の長さの文字列すべてにマッチします。
**:パス区切り文字(/)を含む、任意の長さの文字列すべてにマッチします。
注意:
** は完全な相対パスとして使用する必要があります。/path** を使用する場合、その動作は /path* と同等であり、path を名称プレフィックスとする第 1 レベルリポジトリのみにマッチします。path 配下のすべてのリポジトリにマッチさせるには /path/** を使用し、path を名称プレフィックスとするすべてのリポジトリにマッチさせるには /path*/** を使用します。
?:'/' 以外の任意の 1 文字にマッチします。
{alt1, alt2, …}:複数の正規表現に同時にマッチします。
典型的なシナリオ
選択したネームスペース内のすべてのリポジトリにマッチ | ** または未入力 |
選択したネームスペース内で、名称プレフィックスが path であるすべての第 1 レベルリポジトリにマッチ | /path* |
選択したネームスペース内で、名称プレフィックスが path1 および path2 であるすべての第 1 レベルリポジトリにマッチ | /{path1, path2}* |
選択したネームスペース内の path1 および path2 ディレクトリ配下のすべてのリポジトリにマッチ | /{path1, path2}/** |
選択したネームスペース内で、名称プレフィックスが path1 および path2 であるすべてのリポジトリにマッチ | /{path1, path2}*/** |
選択したリポジトリ内の 1.x のバージョンタグすべてにマッチ | 1.? |
選択したリポジトリ内で、名称プレフィックスが env1 および env2 であるすべてのバージョンタグにマッチ | {env1, env2} |