レジストリー
OpenShift Dedicated はイメージをソースコードからビルドし、デプロイし、ライフサイクルを管理できます。
概要
第1章 OpenShift イメージレジストリーの概要
OpenShift Dedicated はイメージをソースコードからビルドし、デプロイし、ライフサイクルを管理できます。また、イメージをローカルで管理するために OpenShift Dedicated 環境にデプロイできる、内部の統合コンテナーイメージレジストリーを提供します。この概要には、OpenShift イメージレジストリーに重点を置いた、OpenShift Dedicated で一般的に使用されるレジストリーの関連情報およびリンクが含まれます。
1.1. OpenShift イメージレジストリーの共通用語集
この用語集では、レジストリーコンテンツで使用される一般的な用語を定義しています。
- コンテナー
- ソフトウェアとそのすべての依存関係を設定する軽量で実行可能なイメージ。コンテナーはオペレーティングシステムを仮想化するため、データセンター、パブリッククラウドまたはプライベートクラウド、ローカルホストでコンテナーを実行できます。
- Image Registry Operator
-
Image Registry Operator は
openshift-image-registry
namespace で実行され、その場所のレジストリーインスタンスを管理します。 - イメージリポジトリー
- イメージリポジトリーは、関連するコンテナーイメージおよびイメージを特定するタグのコレクションです。
- ミラーレジストリー
- ミラーレジストリーは、OpenShift Dedicated イメージのミラーを保持するレジストリーです。
- namespace
- namespace は、単一クラスター内のリソースのグループを分離します。
- pod
- Pod は、Kubernetes における最小の論理単位です。Pod には、ワーカーノードで実行される 1 つ以上のコンテナーが含まれます。
- プライベートレジストリー
- レジストリーは、コンテナーイメージレジストリー API を実装するサーバーです。プライベートレジストリーは、ユーザーがそのコンテンツにアクセスできるようにするために認証が必要なレジストリーです。
- 公開レジストリー
- レジストリーは、コンテナーイメージレジストリー API を実装するサーバーです。公開レジストリーは、その内容を公に提供するレジストリーです。
- Quay.io
- Red Hat により提供および維持されるパブリックな Red Hat Quay Container Registry インスタンスであり、ほとんどのコンテナーイメージと Operator を OpenShift Dedicated クラスターに提供します。
- OpenShift イメージレジストリー
- OpenShift イメージレジストリーは、イメージを管理するために OpenShift Dedicated により提供されるレジストリーです。
- レジストリー認証
- プライベートイメージリポジトリーとの間でイメージをプッシュおよびプルするには、レジストリーで認証情報を使用してユーザーを認証する必要があります。
- ルート
- サービスを公開して、OpenShift Dedicated インスタンス外のユーザーおよびアプリケーションから Pod へのネットワークアクセスを許可します。
- スケールダウン
- レプリカの数を減らすことを意味します。
- スケールアップ
- レプリカの数を増やすことを意味します。
- サービス
- サービスは、一連の Pod で実行中のアプリケーションを公開します。
1.2. 統合 OpenShift イメージレジストリー
OpenShift Dedicated は、クラスター上の標準ワークロードとして実行されるコンテナーイメージレジストリーでビルドを提供します。このレジストリーはインフラストラクチャー Operator によって設定され、管理されます。また、追加設定なしで使用できる、ワークロードを実行するイメージの管理を目的とするソリューションを提供し、既存のクラスターインフラストラクチャーの上部で実行されます。このレジストリーは、他のクラスターワークロードのようにスケールアップまたはスケールダウンでき、特定のインフラストラクチャーのプロビジョニングを必要としません。さらに、クラスターのユーザー認証および認可システムに統合されるため、イメージを作成および取得するためのアクセスは、イメージリソースでユーザーのパーミッションを定義することで制御できます。
通常、レジストリーはクラスター上にビルドされたイメージの公開ターゲットとして、またクラスター上で実行されるワークロードのイメージのソースとして使用されます。新規イメージがレジストリーにプッシュされると、その旨がクラスターに通知されます。他のコンポーネントは、更新されたイメージに対して応答したり、それを使用したりできます。
イメージデータは 2 つの場所に保存されます。実際のイメージデータは、クラウドストレージまたはファイルシステムボリュームなどの設定可能なストレージの場所に格納されます。標準のクラスター API によって公開され、アクセス制御の実行に使用されるイメージメタデータは、標準的な API リソース、特にイメージおよびイメージストリームとして保存されます。
1.3. サードパーティーレジストリー
OpenShift Dedicated は、サードパーティーレジストリーからのイメージを使用してコンテナーを作成できます。しかし、サードパーティーレジストリーが統合 OpenShift イメージレジストリーと同じイメージ通知をサポートする可能性はほとんどありません。このため、OpenShift Dedicated はイメージストリームの作成時にリモートレジストリーからタグを取得します。取得されたタグを更新するには、oc import-image <stream>
を実行します。新規イメージが検出されると、記述したビルドとデプロイメントの応答が生じます。
1.3.1. 認証
OpenShift Dedicated はユーザーが指定する認証情報を使用してプライベートイメージリポジトリーにアクセスするためにレジストリーと通信できます。これにより、OpenShift Dedicated はイメージをプライベートリポジトリーに、またはプライベートリポジトリ〜からプッシュ/プルできます。
1.3.1.1. Podman を使用したレジストリー認証
一部のコンテナーイメージレジストリーではアクセス認証が必要です。Podman は、コンテナーおよびコンテナーイメージを管理し、イメージレジストリーと対話するためのオープンソースツールです。Podman を使用して、認証情報の認証、レジストリーイメージのプル、ローカルファイルシステムへのローカルイメージの保存を行なえます。以下は、Podman でレジストリーを認証する一般的な例です。
手順
- Red Hat Ecosystem Catalog を使用して Red Hat リポジトリーから特定のコンテナーイメージを検索し、必要なイメージを選択します。
- Get this image をクリックして、コンテナーイメージのコマンドを見つけます。
次のコマンドを実行してログインし、ユーザー名とパスワードを入力して認証を受けます。
$ podman login registry.redhat.io Username:<your_registry_account_username> Password:<your_registry_account_password>
以下のコマンドを実行してイメージをダウンロードし、ローカルに保存します。
$ podman pull registry.redhat.io/<repository_name>
1.4. Red Hat Quay レジストリー
エンタープライズ向けの高品質なコンテナーイメージレジストリーが必要な場合、Red Hat Quay をホストされたサービスとして、また独自のデータセンターやクラウド環境にインストールするソフトウェアとして使用できます。Red Hat Quay の高度な機能には、geo レプリケーション、イメージのスキャニング、およびイメージのロールバック機能が含まれます。
Quay.io サイトにアクセスし、独自のホストされた Quay レジストリーアカウントをセットアップします。その後、Quay チュートリアルに従って Quay レジストリーにログインし、イメージの管理を開始します。
Red Hat Quay レジストリーへのアクセスは、任意のリモートコンテナーイメージレジストリーと同様に OpenShift Dedicated から実行できます。
1.5. 認証が有効な Red Hat レジストリー
Red Hat Ecosystem Catalog のコンテナーイメージのセクションで利用可能なすべてのコンテナーイメージは、イメージレジストリーの registry.redhat.io
でホストされます。
registry.redhat.io
レジストリーでは、イメージおよび OpenShift Dedicated でホストされるコンテンツへのアクセスに認証が必要です。新規レジストリーへの移行後も、既存レジストリーはしばらく利用可能になります。
OpenShift Dedicated はイメージを registry.redhat.io
からプルするため、これを使用できるようにクラスターを設定する必要があります。
新規レジストリーは、以下の方法を使用して標準の OAuth メカニズムを使用します。
- 認証トークン。管理者によって生成されるこれらのトークンは、コンテナーイメージレジストリーに対する認証機能をシステムに付与するサービスアカウントです。サービスアカウントはユーザーアカウントの変更による影響を受けないため、トークンを使用する認証方法の信頼性は高く、復元力もあります。これは、実稼働クラスター用にサポートされている唯一の認証オプションです。
-
Web ユーザー名およびパスワード。これは、
access.redhat.com
などのリソースへのログインに使用する標準的な認証情報のセットです。この認証方法は、OpenShift Dedicated では使用できますが、実稼働デプロイメントではサポートされません。この認証方法は、OpenShift Dedicated 外のスタンドアロンプロジェクトでのみ使用できます。
ユーザー名とパスワード、もしくは認証トークンのどちらかを認証情報として podman login
を使用し、新規レジストリーのコンテンツにアクセスします。
すべてのイメージストリームは、インストールプルシークレットを使用して認証を行う新規レジストリーを参照します。
認証情報は以下のいずれかの場所に配置する必要があります。
-
openshift
namespace。openshift
namespace のイメージストリームがインポートできるように、認証情報はopenshift
namespace に配置してください。 - ホスト。Kubernetes でイメージをプルする際にホストの認証情報を使用するため、認証情報はホスト上に配置してください。
関連情報
第2章 OpenShift Dedicated の Image Registry Operator
2.1. OpenShift Dedicated のイメージレジストリー
Image Registry Operator は、OpenShift イメージレジストリーの単一インスタンスをインストールし、レジストリーストレージのセットアップを含むすべてのレジストリー設定を管理します。
コントロールプレーンのデプロイ後、Operator はクラスターで検出される設定に基づきデフォルトの configs.imageregistry.operator.openshift.io
リソースインスタンスを作成します。
完全な configs.imageregistry.operator.openshift.io
リソースを定義するために利用できる十分な情報がない場合、不完全なリソースが定義され、Operator は不足分を示す情報を使用してリソースのステータスを更新します。
Image Registry Operator は openshift-image-registry
namespace で実行され、その場所のレジストリーインスタンスも管理します。レジストリーのすべての設定およびワークロードリソースはその namespace に置かれます。
第3章 レジストリーへのアクセス
OpenShift Dedicated では、Red Hat Site Reliability Engineering (SRE) がレジストリーを管理します。ただし、レジストリー Pod のステータスを確認したり、レジストリーログを表示したりできます。
3.1. レジストリー Pod のステータスの確認
dedicated-admin
ロールを持つ管理者は、openshift-image-registry
プロジェクトで実行しているイメージレジストリー Pod をリスト表示し、そのステータスを確認できます。
前提条件
-
dedicated-admin
ロールを持つユーザーとしてクラスターにアクセスできる。
手順
openshift-image-registry
プロジェクトの Pod をリスト表示し、それらのステータスを表示します。$ oc get pods -n openshift-image-registry
出力例
NAME READY STATUS RESTARTS AGE cluster-image-registry-operator-764bd7f846-qqtpb 1/1 Running 0 78m image-registry-79fb4469f6-llrln 1/1 Running 0 77m node-ca-hjksc 1/1 Running 0 73m node-ca-tftj6 1/1 Running 0 77m node-ca-wb6ht 1/1 Running 0 77m node-ca-zvt9q 1/1 Running 0 74m
3.2. レジストリーログの表示
oc logs
コマンドを使用してレジストリーのログを表示することができます。
手順
デプロイメントで
oc logs
コマンドを使用して、コンテナーイメージレジストリーのログを表示します。$ oc logs deployments/image-registry -n openshift-image-registry
出力例
2015-05-01T19:48:36.300593110Z time="2015-05-01T19:48:36Z" level=info msg="version=v2.0.0+unknown" 2015-05-01T19:48:36.303294724Z time="2015-05-01T19:48:36Z" level=info msg="redis not configured" instance.id=9ed6c43d-23ee-453f-9a4b-031fea646002 2015-05-01T19:48:36.303422845Z time="2015-05-01T19:48:36Z" level=info msg="using inmemory layerinfo cache" instance.id=9ed6c43d-23ee-453f-9a4b-031fea646002 2015-05-01T19:48:36.303433991Z time="2015-05-01T19:48:36Z" level=info msg="Using OpenShift Auth handler" 2015-05-01T19:48:36.303439084Z time="2015-05-01T19:48:36Z" level=info msg="listening on :5000" instance.id=9ed6c43d-23ee-453f-9a4b-031fea646002