プライベート Automation Hub でのコンテナーの管理
Automation Hub コンテナーレジストリーを使用してコンテナーイメージリポジトリーを管理する
概要
多様性を受け入れるオープンソースの強化
Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、Red Hat CTO である Chris Wright のメッセージ をご覧ください。
Red Hat ドキュメントへのフィードバック (英語のみ)
技術的な内容に関するフィードバックをお寄せいただきありがとうございます。皆様のご意見をお待ちしています。コメントの追加、Insights の提供、誤字の修正、および質問を行う必要がある場合は、ドキュメントで直接行うこともできます。
Red Hat アカウントがあり、カスタマーポータルにログインしている必要があります。
カスタマーポータルからドキュメントのフィードバックを送信するには、以下の手順を実施します。
- Multi-page HTML 形式を選択します。
- ドキュメントの右上にある Feedback ボタンをクリックします。
- フィードバックを提供するテキストのセクションを強調表示します。
- 強調表示されたテキストの横にある Add Feedback ダイアログをクリックします。
- ページの右側のテキストボックスにフィードバックを入力し、Submit をクリックします。
フィードバックを送信すると、自動的に問題の追跡が作成されます。Submit をクリックすると表示されるリンクを開き、問題の監視を開始するか、さらにコメントを追加します。
第1章 プライベート Automation Hub コンテナーレジストリーの管理
Automation Hub コンテナーレジストリーを使用して、Ansible Automation Platform インフラストラクチャーでコンテナーイメージリポジトリーを管理します。ハブは、個々のコンテナーリポジトリーにアクセスできるユーザーや、イメージのタグの変更、アクティビティーおよびイメージ層の表示、および各コンテナーリポジトリーに関連した追加情報を提供することを行うための機能を提供します。
1.1. コンテナーレジストリー
Automation Hub コンテナーレジストリーは、コンテナーイメージの保存と管理に使用されます。コンテナーイメージをビルド、または取得した後に、そのコンテナーイメージをプライベート Automation Hub のレジストリーの部分にプッシュしてコンテナーリポジトリーを作成できます。
次のステップ
- コンテナーイメージを Automation Hub のコンテナーレジストリーにプッシュします。
- レジストリー内のコンテナーリポジトリーにアクセスできるグループを作成します。
- 新規グループをコンテナーリポジトリーに追加します。
- コンテナーリポジトリーに README を追加して、ユーザーに情報や関連リンクを提供します。
第2章 プライベート Automation Hub でコンテナーリポジトリーのユーザーアクセスの設定
プライベート Automation Hub のコンテナーリポジトリーへのユーザーアクセスを設定し、Ansible Automation Platform でイメージにアクセスして管理できるパーミッションを提供します。
2.1. 前提条件
- グループを作成して、プライベート Automation Hub でパーミッションを割り当てることができるようになっている。
2.2. コンテナーレジストリーのグループパーミッション
ユーザーアクセスにより、ユーザーがプライベート Automation Hub で管理されているコンテナーと対話する方法を細かく制御できます。次の権限のリストを使用して、コンテナーレジストリーに対する適切な権限を持つグループを作成します。
表2.1 プライベート Automation Hub でコンテナーを管理するのに使用されるグループ権限のリスト
| パーミッション名 | 説明 |
|---|---|
| 新規コンテナーの作成 | ユーザーは新規コンテナーを作成できます。 |
| コンテナーの名前空間パーミッションの変更 | ユーザーは、コンテナーリポジトリーのパーミッションを変更できます。 |
| コンテナーの変更 | ユーザーはコンテナーの情報を変更できます。 |
| イメージタグの変更 | ユーザーはイメージタグを変更できます。 |
| プライベートコンテナーのプル | ユーザーはプライベートコンテナーからイメージをプルできます。 |
| 既存コンテナーへのプッシュ | 既存のコンテナーにイメージをプッシュすることができます。 |
| プライベートコンテナーの表示 | ユーザーは、プライベートとしてマークされているコンテナーを表示できます。 |
2.3. 新規グループの作成
ユーザーがシステム内の指定された機能にアクセスできるパーミッションを作成し、Automation Hub のグループに割り当てることができます。デフォルトでは、すべてのパーミッションが割り当てられており、Automation Hub のインストール時に作成された認証情報を使用して最初のログインで使用できる admins グループが Automation Hub にあります。
前提条件
- groups パーミッションがあり、グループ設定を作成および管理し、Automation Hub でアクセスすることができる。
手順
- ローカルの Automation Hub にログインします。
- User Access → Groups に移動します。
- Create をクリックします。
- Name を指定して Create をクリックします。
グループの編集ページで、パーミッションを割り当てたり、ユーザーを追加したりできるようになりました。
2.4. グループへのパーミッションの割り当て
ユーザーがシステム内の特定の機能にアクセスできるパーミッションを Automation Hub のグループに割り当てることができます。デフォルトでは、新規グループにパーミッションが割り当てられません。最初のグループ作成時にパーミッションを追加するか、既存のグループを編集してパーミッションを追加または削除できます。
前提条件
- Change group パーミッションがあり、Automation Hub でグループパーミッションを編集できる。
手順
- ローカルの Automation Hub にログインします。
- User Access → Roles に移動します。
- Add roles をクリックします。
- 名前フィールドをクリックし、ロール名を入力します。
- 説明フィールドをクリックして説明を入力します。
- Permissions セクションを完了します。
- パーミッションタイプのフィールドをクリックし、一覧に表示されるパーミッションを選択します。
- パーミッションの割り当てが完了したら、Save をクリックします。
- User Access → Groups に移動します。
- グループ名をクリックします。
- Access タブをクリックします。
- Add roles をクリックします。
- 手順 8 で作成したロールを選択します。
- Next をクリックして、選択したロールを確認します。
- Add をクリックしてロールの追加を完了します。
このグループは、割り当てられたパーミッションに関連付けられた Automation Hub の機能にアクセスできるようになりました。
関連情報
- 特定のパーミッションについての詳細は、コンテナーレジストリーのグループパーミッション を参照してください。
2.5. グループへのユーザーの追加
グループの作成時にユーザーを追加したり、既存のグループにユーザーを手動で追加したりできます。本セクションでは、既存のグループにユーザーを追加する方法を説明します。
前提条件
- groups パーミッションがあり、グループ設定を作成および管理し、Automation Hub でアクセスすることができる。
手順
- Automation Hub にログインします。
- User Access → Groups に移動します。
- グループ名をクリックします。
- Users タブに移動し、Add をクリックします。
- 一覧から追加するユーザーを選択し、Add をクリックします。
選択したユーザーをグループに追加しました。これらのユーザーは、グループに割り当てられた Automation Hub を使用するためのパーミッションを持つようになりました。
第3章 プライベート Automation Hub コンテナーレジストリーへの入力
デフォルトでは、プライベート Automation Hub にはコンテナーイメージが含まれません。コンテナーレジストリーを設定するには、コンテナーイメージレジストリーにコンテナーイメージをプッシュする必要があります。本セクションの手順では、Red Hat Ecosystem Catalog (registry.redhat.io) からイメージをプルし、プルしたイメージをタグ付けして、プライベート自動化コンテナーレジストリーにプッシュする方法を説明します。
イメージマニフェストとファイルシステム Blob は、registry.redhat.io と registry.access.redhat.com から直接提供されます。ただし、2023 年 5 月 1 日以降、ファイルシステム Blob は代わりに quay.io から提供されます。コンテナーイメージのプルに関する問題を回避するには、次のホスト名への送信接続を有効にする必要があります。
-
cdn.quay.io -
cdn01.quay.io -
cdn02.quay.io -
cdn03.quay.io
registry.redhat.io または registry.access.redhat.com への送信接続を特に有効にするすべてのファイアウォール設定にこの変更を加えます。
ファイアウォールルールを設定するときは、IP アドレスの代わりにホスト名を使用します。
この変更を行った後、引き続き registry.redhat.io および registry.access.redhat.com からイメージをプルできます。Red Hat コンテナーイメージのプルを続行するために、quay.io にログインする必要も、quay.io レジストリーと直接やりとりする必要もありません。
3.1. 前提条件
- 新しいコンテナーを作成して、プライベート Automation Hub にプッシュするパーミッションがある。
3.2. Automation Hub で使用するイメージの取得
コンテナーイメージをプライベート Automation Hub にプッシュする前に、まず既存のレジストリーからプルし、使用できるようにタグを付ける必要があります。以下の例では、Red Hat Ecosystem Catalog (registry.redhat.io) からイメージをプルする方法を説明します。
前提条件
registry.redhat.io からイメージをプルするパーミッションがある。
手順
registry.redhat.io 認証情報を使用して Podman にログインします。
$ podman login registry.redhat.io
- プロンプトにユーザー名およびパスワードを入力します。
コンテナーイメージをプルします。
$ podman pull registry.redhat.io/<container_image_name>:<tag>
検証
ローカルストレージ内のイメージを一覧表示します。
$ podman images
- 最近プルしたイメージが一覧に含まれていることを確認します。
- タグが正しいことを確認します。
関連情報
- イメージの登録および取得についての詳細は、Red Hat Ecosystem Catalog Help を参照してください。
3.3. Automation Hub で使用するイメージのタグ付け
レジストリーからイメージをプルしたら、プライベート Automation Hub コンテナーレジストリーで使用するようにタグを付けます。
前提条件
- 外部レジストリーからコンテナーイメージをプルしている。
- Automation Hub インスタンスの FQDN または IP アドレスがある。
手順
Automation Hub コンテナーリポジトリーを使用してローカルイメージにタグを付けます。
$ podman tag registry.redhat.io/<container_image_name>:<tag> <automation_hub_URL>/<container_image_name>
検証
ローカルストレージ内のイメージを一覧表示します。
$ podman images
- Automation Hub の情報で最近タグ付けされたイメージが一覧に含まれていることを確認します。
3.4. プライベート Automation Hub へのコンテナーイメージのプッシュ
タグ付けされたコンテナーイメージをプライベート Automation Hub にプッシュして新規コンテナーを作成し、コンテナーレジストリーにデータを入力できます。
前提条件
- 新規コンテナーを作成するパーミッションがある。
- Automation Hub インスタンスの FQDN または IP アドレスがある。
手順
Automation Hub の場所および認証情報を使用して Podman にログインします。
$ podman login -u=<username> -p=<password> <automation_hub_url>
コンテナーイメージを Automation Hub のコンテナーレジストリーにプッシュします。
$ podman push <automation_hub_url>/<container_image_name>
注記registry.redhat.io からの署名付きイメージが Automation Hub コンテナーレジストリーにプッシュされる場合は、
--remove-signaturesフラグが必要です。push操作は、アップロード中にイメージレイヤーを再圧縮します。これは、再現性が保証されておらず、クライアントの実装に依存します。これにより、イメージレイヤーダイジェストが変更され、プッシュ操作が失敗し、Error: Copying this image requires changing layer representation, which is not possible (image is signed or the destination specifies a digest)エラーが発生します。
検証
- Automation Hub にログインします。
- Container Registry に移動します。
- コンテナーリポジトリー一覧でコンテナーを見つけます。
第4章 コンテナーリポジトリーの設定
コンテナーリポジトリーを設定して説明の追加、README の追加、リポジトリーにアクセスできるグループの追加、およびタグイメージの追加を行うことができます。
4.1. 前提条件
- リポジトリーを変更する権限を持つ Private Automation Hub にログインしている。
4.2. コンテナーリポジトリーへの README の追加
コンテナーリポジトリーに README を追加して、コンテナーを操作する方法をユーザーに提供します。Automation Hub コンテナーリポジトリーは、README を作成するためのマークダウンをサポートします。デフォルトでは、README は空になります。
前提条件
- コンテナーを変更するパーミッションがある。
手順
- Execution Environments に移動します。
- コンテナーリポジトリーを選択します。
- Detail タブで、Add をクリックします。
- Raw Markdown テキストフィールドに、Markdown で README テキストを入力します。
- 完了したら、Save をクリックします。
README を追加したら、Edit をクリックし、ステップ 4 および 5 を繰り返すことで、いつでも編集できます。
4.3. コンテナーリポジトリーへのアクセスの提供
イメージを操作する必要があるユーザーにコンテナーリポジトリーへのアクセスを提供します。グループを追加すると、グループがコンテナーリポジトリーに対して持つことができるパーミッションを変更できます。このオプションを使用して、グループが割り当てられている内容に応じてパーミッションを拡張または制限できます。
前提条件
- コンテナーの名前空間のパーミッションを変更している。
手順
- Execution Environments に移動します。
- コンテナーリポジトリーを選択します。
- ウィンドウの右上にある Edit をクリックします。
Groups with access で、アクセス権を付与するグループ (単数または複数) を選択します。
- (必要に応じて) グループ名でドロップダウンを使用して、特定のグループのパーミッションを追加または削除します。
- Save をクリックします。
4.4. コンテナーイメージのタグ付け
Automation Hub コンテナーリポジトリーに保存されているイメージにタグを付けて、名前を追加します。イメージにタグが追加されない場合、Automation Hub の名前はデフォルトで latest に設定されます。
前提条件
- change image tags のパーミッションがある。
手順
- Execution Environments に移動します。
- コンテナーリポジトリーを選択します。
- Images タブをクリックします。
- More Actions アイコン ⋮ をクリックしてから、Manage tags をクリックします。
テキストフィールドに新しいタグを追加し、Add をクリックします。
- (必要に応じて) そのイメージのいずれのタグの x をクリックして、current tags を削除します。
- Save をクリックします。
検証
- Activity タブをクリックし、最新の変更を確認します。
4.5. Automation Controller での認証情報の作成
以前は、レジストリーをデプロイして実行環境イメージを格納する必要がありました。Ansible Automation Platform 2.0 以降では、コンテナーレジストリーがすでに稼働していると想定されます。したがって、実行環境イメージを格納するために任意のコンテナーレジストリーの認証情報を追加するだけで済みます。
パスワードまたはトークンで保護されるレジストリーからコンテナーイメージをプルするには、Automation Controller で認証情報を作成します。
手順
- Automation Controller に移動します。
- サイドメニューバーの Resources → Credentials をクリックします。
- Add をクリックして、新規の認証情報を作成します。
- 承認用の 名前、説明、および 組織 を入力します。
- 認証情報のタイプ を選択します。
- 認証用 URL を入力します。これはコンテナーレジストリーのアドレスです。
- コンテナーレジストリーへのログインに必要な ユーザー名 と パスワードまたはトークン を入力します。
- オプションで、Verify SSL を選択して、SSL の検証を有効にします。
- Save をクリックします。
第5章 コンテナーリポジトリーからのイメージのプル
Automation Hub コンテナーレジストリーからイメージを取得し、ローカルマシンにコピーを作成します。Automation Hub は、コンテナーリポジトリーの latest イメージごとに、podman pull コマンドを提供します。このコマンドを端末にコピーアンドペーストするか、podman pull を使用してイメージタグに基づいてイメージをコピーすることができます。
5.1. 前提条件
プライベートコンテナーリポジトリーを表示およびプルする権限がある。
5.2. イメージのプル
Automation Hub コンテナーレジストリーからイメージをプルして、ローカルマシンにコピーできます。Automation Hub は、コンテナーリポジトリーの latest イメージごとに、podman pull コマンドを提供します。
パスワードまたはトークンで保護されたレジストリーからコンテナーイメージをプルする必要がある場合は、イメージをプルする前に Automation Controller で認証情報を作成 する必要があります。
手順
- Execution Environments に移動します。
- コンテナーリポジトリーを選択します。
- Pull this image エントリーで、Copy to clipboard をクリックします。
- 端末でコマンドを貼り付けます。
検証
-
podman imagesを実行して、ローカルマシンにイメージを表示します。
5.3. コンテナーリポジトリーからのイメージの同期
Automation Hub コンテナーレジストリーからイメージをプルして、イメージをローカルマシンに同期できます。
前提条件
プライベートコンテナーリポジトリーを表示およびプルする権限がある。
手順
リモートコンテナーレジストリーからイメージを同期するには、リモートレジストリーを設定する必要があります。
- Execution Environments → Remote Registries に移動します。
- https://registry.redhat.io をレジストリーに追加します。
- 認証に必要な認証情報を追加します。
コンテナーレジストリーの中には、流量制御を積極的に行っているものもあります。Advanced Options で流量制御を設定することを推奨します。
- Execution Environments → Execution Environments に移動します。
- ページヘッダーの Add execution environment をクリックします。
- プルするレジストリーを選択します。"name" フィールドには、ローカルレジストリー上に表示されるイメージの名前が表示されます。
"Upstream name" フィールドは、リモートサーバー上のイメージの名前です。たとえば、アップストリーム名が "alpine" に設定され、“name” フィールドが "local/alpine" に設定されている場合、alpine イメージがリモートからダウンロードされ、local/alpine に名前が変更されます。
追加または除外するタグのリストを設定することを推奨します。イメージに多数のタグがあると、イメージの同期に時間がかかり、大量のディスク容量が使用されます。
関連情報
- レジストリーのリストについては、Red Hat コンテナーレジストリーの認証 を参照してください。
5.4. 関連情報
- イメージをプルする際に使用するオプションは、Podman とは ドキュメントを参照してください。
第6章 署名済みコンテナーの操作
6.1. コンテナー署名用のシステムのデプロイ
実行環境は、Ansible Automation Controller がジョブを実行するために使用するコンテナーイメージです。このコンテンツは、Private Automation Hub にダウンロードし、組織内で公開できます。
Automation Hub は現在、イメージ署名を実装しているため、ユーザーは EE コンテナーイメージのより優れたセキュリティーを活用できます。
Ansible Automation Platform ユーザーは、EE/コンテナーがすでに署名されているかどうか、または適切なツールを使用して自分で署名する方法および署名を検証する方法を確認できるようになりました。このセクションでは、コンテナー署名の準備ができるようにシステムをデプロイする方法について詳しく説明します。
手順
コンテナー署名のサポートを有効にして、システムをデプロイします。
_automation_hub: automationhub_create_default_container_signing_service: true automationhub_container_signing_service_key: _path/to/gpg.key_ automationhub_container_signing_service_script: _path/to/executable_- Automation Hub に移動します。
- ナビゲーションペインで、Signature Keys を選択します。
- container-default または container-anyname というタイトルのキーがあることを確認します。
container-default サービスは、Ansible Automation Platform インストーラーによって作成されます。
6.2. Automation Hub に対するリモートでのコンテナーの追加
Automation Hub にコンテナーを追加するには、次の 2 つの方法があります。
- リモートの作成
- 実行環境
手順
リモートレジストリーを追加するには、以下を行います。
- Automation Hub で、メインメニューペインの Execution Environments をクリックします。Execution Environments と Remote Registries の 2 つの選択肢が利用できるようになります。
- Remote Registries をクリックします。
メインウィンドウで Add Remote Registry をクリックします。
- Name フィールドに、コンテナーが存在するレジストリーの名前を入力します。
- URL フィールドに、コンテナーが存在するレジストリーの URL を入力します。
- Username フィールドに、必要に応じてユーザー名を入力します。
- Password フィールドに、必要に応じてパスワードを入力します。
- Save をクリックします。
6.3. 実行環境の追加
手順
- Execution Environments に移動します。
- 実行環境の名前を入力します。
- オプション: アップストリーム名を入力します。
- Registry で、ドロップダウンメニューからレジストリーの名前を選択します。
- Add tags to include フィールドにタグを入力します。フィールドを空白のままにすると、すべてのタグが渡されます。そのため、リポジトリー固有のタグを渡すことが重要です。
残りのフィールドはオプションです。
- 現在含まれているタグ
- 除外するタグの追加
- 現在除外されているタグ
- 説明
- アクセス権のあるグループ
- Save をクリックします。
- イメージを同期します。
6.4. ローカルからコンテナーイメージをプッシュする
手順
ターミナルから、Podman または現在使用中のコンテナークライアントにログインします。
> podman pull <__container-name__>
イメージがプルされたら、タグを追加します。
> podman tag <container-name> _<server-address>_/<container-name>:<tag name>
変更が行われた後、イメージに署名し、プッシュして戻します。
> podman push _<server-address>_/<container-name>:<tag name> --tls-verify=false --sign-by<reference to the gpg key on your local>
イメージが署名されていない場合は、現在の署名が埋め込まれている場合にのみプッシュできます。
イメージを署名せずに、プッシュします。
> podman push _<server-address>_/<container-name>:<tag name> --tls-verify=false
- Automation Hub に移動し、ウィンドウが開いていない場合は、Execution Environments をクリックします。
- Refresh アイコンをクリックして、ページを更新し、新しい実行環境を表示します。
- イメージの名前をクリックします。
詳細ページのイメージ名の下に、イメージが署名されているかどうかが表示されます。この場合は、Unsigned と表示されます。
Automation Hub からイメージに署名するには、以下を行います。
- イメージ名をクリックすると、詳細ページが開きます。
詳細ページの右上隅にある 3 つのドットをクリックします。利用可能な 3 つのオプションは以下のとおりです。
- コントローラーでの使用
- 削除
- 署名
- ドロップダウンメニューから、sign をクリックします。
署名サービスがイメージに署名します。イメージを署名すると、ステータスが署名済みに変わります。
6.5. 署名済みイメージでのポリシーの使用
Podman またはその他のイメージクライアントがポリシーを使用して、特定のポリシーをその署名に割り当てることにより、イメージの有効性を保証できます。
6.5.1. Podman を使用して、イメージが特定の署名によって署名されていることを確認する
署名が特定の署名によって署名されていることを確認する場合、署名はローカルにある必要があります。
手順
- ナビゲーションペインで、Signature Keys を選択します。
- 使用している署名の右側にある 3 つの点をクリックします。
- ドロップダウンメニューから Download key を選択します。新しいウィンドウが開きます。
- Name フィールドに、キーの名前を入力します。
- Save をクリックします。
6.6. 署名を検証するためのクライアントの設定
前提条件
- 署名を検証するには、クライアントに sudo 権限が設定されている必要があります。
手順
ターミナルタイプの場合:
> sudo <name of editor> __/etc/containers/policy.json__
ファイルは次のようになります。
{
"default": [{"type": "reject"}],
"transports": {
"docker": {
"quay.io": [{"type": "insecureAcceptAnything}],
"docker.io": [{"type": "insecureAcceptAnything}],
"_<server-address>_": [
{
"type": "signedBy",
"keyType": "GPGKeys",
"keyPath": "/tmp/containersig.txt"
}
これは、quay.io または docker.io のいずれからも検証が行われないことを示しています。これは、タイプが insecureAcceptAnything であり、デフォルトタイプの reject をオーバーライドするためです。ただし、パラメーター type が signedBy に設定されているため、<server-address> からの検証が行われます。
現在サポートされている唯一の keyType は GPG キーです。
<server-address>エントリーの下で、キーファイルの名前を反映するように、keyPath<1> を変更します。{ "default": [{"type": "reject"}], "transports": { "docker": { "quay.io": [{"type": "insecureAcceptAnything}], "docker.io": [{"type": "insecureAcceptAnything}], "_<server-address>_1": [ { "type": "signedBy", "keyType": "GPGKeys", "keyPath": "/tmp/<key file name", 1 "signedIdentity": { "type": "remapIdentity", "prefix": "_<server-address>_", "signedPrefix": "0.0.0.0:8002" }- ファイルを保存してから閉じます。
- Podman または任意のクライアントを使用して、ファイルをプルします。
> podman pull _<server-address>_/<container-name>:<tag name> --tls-verify=false
これにより、署名がエラーなしで検証されます。
第7章 コンテナーリポジトリーの削除
ローカルの Automation Hub からコンテナーリポジトリーを削除して、ディスク容量を管理します。Container Repository リストビューで、Red Hat Ansible Automation Platform インターフェイスからリポジトリーを削除できます。
7.1. コンテナーリポジトリーの削除
前提条件
- リポジトリーを管理する権限があります。
手順
- Execution Environments に移動します。
- 削除するコンテナーリポジトリーで、More Actions アイコン ⋮ をクリックしてから、Delete をクリックします。
- 確認メッセージが表示されたら、チェックボックスをクリックして Delete をクリックします。
検証
- Execution Environments リストビューに戻ります。コンテナーリポジトリーをリストから削除する必要があります。