このページでは、Harbor リポジトリを管理およびメンテナンスする管理者またはデベロッパー向けに、タグ保持ルールを作成して管理する方法について説明します。Harbor タグ保持ルールは、Harbor リポジトリ内のイメージタグを自動的に管理および最適化する一連のポリシーです。
タグ保持ルールを使用して、次の操作を行います。
- ストレージ容量を解放する: 不要なデータが蓄積されないように、特定の期間アーティファクトを保持するルールを定義するか、未使用のイメージタグを手動で削除します。
- クリーンなリポジトリを維持する: 最新のタグまたは関連性の高いタグのみを保持して、整理と検出可能性を向上させます。
- タグ管理の自動化: 手動削除を回避し、イメージ リポジトリのメンテナンスを効率化します。
タグ保持ルールを使用すると、不要になったイメージタグを自動的に削除して、リポジトリ内のイメージを管理できます。保持ルールは、3 つの連続したステップでタグをフィルタリングし、保持するイメージと削除するイメージを決定します。
- リポジトリ: リポジトリの名前を入力します。Harbor は、まずリポジトリ フィルタを適用し、リポジトリ名に一致するリポジトリに保持ルールを適用します。
*repo、repo*、**などのワイルドカードを使用できます。詳細については、ワイルドカード パターンでフィルタを適用するをご覧ください。たとえば、リポジトリ フィルタを**に設定すると、プロジェクト内のすべてのリポジトリが対象になります。 - 保持する数量: タグの最大数を入力するか、タグを保持する最大期間を指定します。たとえば、各リポジトリで最近プルされた 10 個のアーティファクトを保持するように保持ポリシーを設定できます。
- 保持するタグ: 保持するイメージタグの名前を入力します。Harbor は、入力テキストに一致するイメージタグに保持ルールを適用します。チェックボックスを使用して、タグなしアーティファクトをタグ保持の対象となるアーティファクトのセットの一部としてキャプチャするか、その名前のないタグをキャプチャするかを選択します。
*tag、tag*、**などのワイルドカードを使用できます。詳細については、ワイルドカード パターンでフィルタを適用するをご覧ください。
始める前に
タグ保持ルールを作成する前に、次のものが必要です。
- Harbor のロールベース アクセス制御の
ProjectAdminロールを持つアカウント。詳細については、API と Harbor インスタンス内のアクセスを構成するをご覧ください。 - 既存の Harbor リポジトリ。
タグ保持ルールを作成する
Harbor 保持タグルールは、特定の順序とロジックに従います。Harbor タグの保持ルールを作成する際は、次の原則に従ってください。
- プロジェクトではなく、リポジトリのタグ保持ルールを定義します。リポジトリの保持ルールを定義するときに、保持するタグを指定します。
- タグを明示的に削除するルールは定義しないでください。ルールを設定すると、保持対象として指定されていないリポジトリ内のタグはすべて破棄されます。
- ルール間では
ORアルゴリズムが使用されます。
Harbor コンソールを使用してタグ保持ルールを作成します。
- プロジェクト管理者権限を持つアカウントで Harbor コンソールにログインします。
- [プロジェクト] に移動して、プロジェクトを選択します。
- プロジェクト ウィンドウで、[ポリシー] タブをクリックし、[タグの保持] をクリックします。
- [Add Rule] をクリックします。
[リポジトリ] メニューで、[一致] または [除外] を選択します。
[一致] を選択すると、Harbor は指定したリポジトリにルールを適用します。[除外] を選択すると、Harbor は、指定したリポジトリを除く、プロジェクト内のすべてのリポジトリにルールを適用します。
[リポジトリ] ボックスに、ルールを適用するリポジトリの名前を入力します。テキスト入力の例を次に示します。
example_repo_1などのリポジトリ名。example_repo_1,example_repo_2,example_repo_3などのリポジトリ名のカンマ区切りのリスト。example_*、*_3、*_repo_*などのワイルドカードを含むリポジトリ名の一部。- プロジェクト内のすべてのリポジトリにルールを適用するには、ワイルドカード
**を使用します。 - 詳細については、ワイルドカード パターンを使用してフィルタを適用するをご覧ください。
[アーティファクト数または日数別] メニューで、保持するタグの数またはタグを保持する期間を選択します。次のいずれかを選択します。
- 最新の # 個のアーティファクトを保持する: 特定の数のアーティファクトを保持し、最新のアーティファクトを優先します。アーティファクトに年齢制限は適用されません。
- 最近プルされた # 個のアーティファクトを保持する: 特定の数のアーティファクトを保持し、最近プルされたアーティファクトを優先します。アーティファクトに年齢制限は適用されません。
- 過去 # 日以内に push されたアーティファクトを保持する: 指定した期間内に push されたアーティファクトを保持します。アーティファクトの数に上限はありません。
- 過去 # 日以内に pull されたアーティファクトを保持する: 指定した期間内に pull されたアーティファクトを保持します。アーティファクトの数に上限はありません。
- 常に保持: このルールに一致するアーティファクトを常に保持します。
[タグ] メニューで、[一致] または [除外] を選択します。
[一致] を選択すると、Harbor は指定したタグにルールを適用します。[除外] を選択すると、Harbor は、指定したタグを除く、リポジトリ内のすべてのタグにルールを適用します。
[タグ] ボックスに、ルールを適用するタグの名前を入力します。
テキスト入力の例を次に示します。
- タグ名(
example_tag_1など)。 example_tag_1,example_tag_2,example_tag_3などのタグ名のカンマ区切りのリスト。example_*、*_3、*_tag_*などのワイルドカードを含むタグ名の部分一致。- プロジェクト内のすべてのタグにルールを適用するには、ワイルドカード
**を使用します。 - 詳細については、ワイルドカード パターンを使用してフィルタを適用するをご覧ください。
- タグ名(
ルールを保存するには、[追加] をクリックします。
省略可: ルールを追加するには、[ルールを追加] をクリックします。プロジェクトごとに最大 15 個のルールを追加できます。
省略可: [スケジュール] メニューで、[編集] をクリックし、ルールの実行頻度を選択します。[カスタム] を選択した場合は、cron ジョブ コマンドを入力してルールをスケジュールします。複数のルールを定義すると、Harbor はすべてのルールにスケジュールを適用します。異なる時間に実行するように異なるルールをスケジュールすることはできません。
定義したルールをテストするには、[ドライラン] をクリックします。
ルールをすぐに実行するには、[今すぐ実行] をクリックします。
ワイルドカード パターンでフィルタを適用する
Harbor はダブルスター パターン マッチングを使用します。ワイルドカード パターンは、文字列内の 1 つ以上の文字に一致させるか、それらを表すために使用される特殊文字またはシーケンスです。タグ保持ルールの作成時に、リポジトリ名またはタグ名にフィルタを適用する場合は、ワイルドカード パターンを使用します。ワイルドカードには次の機能があります。
- 1 つ以上の文字を明示的に指定せずに表します。
一般的なワイルドカードは次のように使用します。
*: 0 個以上の文字に一致します。?: 任意の 1 文字に一致します。
たとえば、
file*はfileで始まるすべてのファイル名に一致します。柔軟な照合が可能になります。これは、正確な文字がわからない場合に便利です。
タグ保持ルールを指定する場合は、次のサポートされているワイルドカード パターンを使用します。
| パターン | 説明 |
|---|---|
* |
パス区切り文字以外の任意の文字列に一致します。 |
** |
0 個以上のディレクトリに一致します。 |
? |
パス区切り文字以外の任意の 1 文字に一致します。 |
[class] |
パス区切り文字以外の任意の 1 文字を文字クラスと照合します。詳細については、文字クラスを使用してフィルタを適用するをご覧ください。 |
{alt1,...} |
カンマ区切りの代替案のいずれかが一致する場合、文字のシーケンスに一致します。 |
doublestar パターン マッチングの詳細については、https://github.com/bmatcuk/doublestar をご覧ください。
文字クラスでフィルタを適用する
文字クラスとワイルドカードはどちらもパターン マッチングに使用されます。タグ保持ルールの作成時に、リポジトリ名またはタグ名にフィルタを適用する場合は、文字クラスを使用します。文字クラスは、ワイルドカード パターンと比較して次の機能を提供します。
- 特定の位置で一致する可能性のある特定の文字のセットを定義します。
- 集合を角かっこ(
[])で囲みます。たとえば、[aeiou]は任意の 1 つの母音に一致します。 - 許可する文字を明示的にリストするため、より正確な照合が可能になります。
次の文字クラスを使用して、リポジトリをフィルタし、保持ルールを構成します。
| クラス | 説明 |
|---|---|
[abc] |
セット内の任意の 1 文字に一致します。 |
[a-z] |
範囲内の任意の 1 文字に一致します。 |
[^class] |
クラスに一致しない任意の 1 文字に一致します。 |
[!class] |
クラスを否定します。 |
既存のタグ保持ルールを更新する
既存のルールを変更するには、ルールの横にある [操作] メニューを使用して、ルールを無効化、編集、削除します。
Harbor コンソールを使用して、既存のタグ保持ルールを変更します。
- プロジェクト管理者権限を持つアカウントで Harbor インターフェースにログインします。
- [プロジェクト] に移動して、プロジェクトを選択します。
- プロジェクト ウィンドウで、[ポリシー] タブをクリックし、[タグの保持] をクリックします。
既存のルールを変更するには、[アクション] メニューを使用して、次のいずれかのオプションを選択します。
- 無効: ルールを無効にします。このルールは後で再度有効にできます。
- 編集: 既存のルールの設定を更新します。
- 削除: ルールを完全に削除します。