Red Hat Quay Operator の OpenShift Container Platform へのデプロイ
Red Hat Quay Operator の OpenShift Container Platform へのデプロイ
概要
はじめに リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Quay は、エンタープライズレベルの品質の高いコンテナーレジストリー製品です。Red Hat Quay を使用してコンテナーイメージをビルドし、保存してから、企業全体にデプロイできるようにします。
Red Hat Quay Operator は、OpenShift クラスターで Red Hat Quay をデプロイし、管理する簡単な方法を提供します。
Red Hat Quay 3.4.0 のリリースに伴い、エクスペリエンスの強化と Day 2 運用に対するサポートの追加を目的として、Red Hat Quay Operator が再記述されました。その結果、Red Hat Quay Operator の操作性が向上し、デフォルト部分が増加して使いやすくなりました。Red Hat Quay 3.4.0 と前のバージョンとの主な違いは次のとおりです。
-
QuayEcosystemカスタムリソースがQuayRegistryカスタムリソースに置き換えられました。 デフォルトのインストールオプションで、実稼働環境での使用に対応した管理対象の依存関係 (データベース、キャッシュ、オブジェクトストレージなど) が含まれる、完全にサポートされた Red Hat Quay 環境が生成されます。
注記一部のコンポーネントは、高可用性を備えていない可能性があります。
- Red Hat Quay の設定用の新しい検証ライブラリー。
オブジェクトストレージは、
ObjectBucketClaimKubernetes API を使用して Red Hat Quay Operator が管理できるようになりました。注記Red Hat OpenShift Data Foundation を使用して、この API がサポートされる実装を OpenShift Container Platform 上で提供できます。
- テストおよび開発シナリオ用にデプロイされた Pod で使用されるコンテナーイメージのカスタマイズ。
第1章 Red Hat Quay Operator の概要 リンクのコピーリンクがクリップボードにコピーされました!
この章の内容を使用して、以下を実行します。
- Red Hat Quay Operator を使用して Red Hat Quay on OpenShift Container Platform をインストールする
- 管理対象または管理対象外のオブジェクトストレージを設定する
- データベース、Redis、ルート、TLS などの管理対象外のコンポーネントを設定する
- Red Hat Quay Operator を使用して Red Hat Quay レジストリーを OpenShift Container Platform にデプロイする
- Red Hat Quay でサポートされている高度な機能を使用する
- Red Hat Quay Operator を使用して Red Hat Quay レジストリーをアップグレードする
1.1. Red Hat Quay Operator コンポーネント リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Quay には多くの依存関係があります。依存関係には、データベース、オブジェクトストレージ、Redis などが含まれます。Red Hat Quay Operator は、Red Hat Quay の独自のデプロイメントとその Kubernetes への依存関係を管理します。これらの依存関係は コンポーネント として処理され、QuayRegistry API で設定されます。
QuayRegistry カスタムリソースでは、spec.components フィールドでコンポーネントを設定します。各コンポーネントには、kind (コンポーネントの名前) と、maned (コンポーネントのライフサイクルが Red Hat Quay Operator によって処理されるかどうかを指定するブール値) の 2 つのフィールドが含まれています。
デフォルトでは、すべてのコンポーネントが管理され、調整時に表示できるように自動入力されます。
QuayRegistry リソースの例
1.2. 管理コンポーネントの使用 リンクのコピーリンクがクリップボードにコピーされました!
QuayRegistry カスタムリソースで特に指定しない限り、Red Hat Quay Operator は以下の管理コンポーネントにデフォルトを使用します。
- quay: Red Hat Quay on OpenShift Container Platform のデプロイメントに関するオーバーライド (環境変数やレプリカの数など) を保持します。このコンポーネントは Red Hat Quay 3.7 以降の新しいコンポーネントであり、管理対象外に設定できません。
postgres: レジストリーメタデータの保存には、Red Hat Quay 3.9 以降、Software Collections の PostgreSQL 13 のバージョンが使用されます。
注記Red Hat Quay 3.8 → 3.9 にアップグレードする場合、Operator は PostgreSQL 10 から PostgreSQL 13 へのアップグレードを自動的に処理します。このアップグレードは必須です。PostgreSQL 10 は 2022 年 11 月 10 日に最終リリースとなり、サポートされなくなりました。
- clair: イメージの脆弱性スキャンを提供します。
- redis: ライブビルダーログと Red Hat Quay チュートリアルを保存します。ガベージコレクションに必要なロックメカニズムも含まれます。
-
horizontalpodautoscaler: メモリー/CPU 消費量に応じて
QuayPod の数を調整します。 -
objectstorage: イメージレイヤー Blob を保存するために、Noobaa または Red Hat OpenShift Data Foundation が提供する
ObjectBucketClaimKubernetes API を利用します。 - route: OpenShift Container Platform の外部から Red Hat Quay レジストリーへの外部エントリーポイントを提供します。
- mirror: オプションのリポジトリーミラーリングをサポートするようにリポジトリーミラーワーカーを設定します。
-
monitoring: Grafana ダッシュボード、個々のメトリクスへのアクセス、
QuayPod の頻繁な再起動に関する通知などの機能があります。 - tls: Red Hat Quay または OpenShift Container Platform が SSL/TLS を処理するかどうかを設定します。
- clairpostgres: 管理された Clair データベースを設定します。これは、Red Hat Quay のデプロイに使用される PostgreSQL データベースとは別のデータベースです。
Red Hat Quay Operator は、Red Hat Quay がマネージドコンポーネントを使用するために必要な設定およびインストール作業を処理します。Red Hat Quay Operator が実行するデプロイが環境に適さない場合は、Red Hat Quay Operator に unmanaged リソース (オーバーライド) を指定できます。これは、次のセクションで説明します。
1.3. 依存関係向けのマネージド外コンポーネントの使用 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Quay で使用する PostgreSQL、Redis、オブジェクトストレージなどの既存のコンポーネントがある場合は、まず Red Hat Quay 設定バンドル (config.yaml) 内でそれらを設定します。次に、どのコンポーネントが管理対象外であるかを示しながら、QuayRegistry バンドル内で (Kubernetes Secret として) 参照する必要があります。
アンマネージド PostgreSQL データベースを使用していて、バージョンが PostgreSQL 10 である場合は、PostgreSQL 13 へのアップグレードが強く推奨されます。PostgreSQL 10 は 2022 年 11 月 10 日に最終リリースとなり、サポートされなくなりました。詳細は、PostgreSQL のバージョン管理ポリシー を参照してください。
管理対象外コンポーネントの設定は、以下のセクションを参照してください。
1.4. 設定バンドルシークレット リンクのコピーリンクがクリップボードにコピーされました!
spec.configBundleSecret フィールドは、QuayRegistry リソースと同じ namespace にある Secret の metadata.name への参照です。この Secret には config.yaml のキー/値のペアが含まれる必要があります。
config.yaml ファイルは、Red Hat Quay の config.yaml ファイルです。このフィールドはオプションで、指定されない場合は Red Hat Quay Operator により自動入力されます。指定されている場合、後に管理コンポーネントの他のフィールドにマージされる設定フィールドのベースセットとして機能し、Red Hat Quay アプリケーション Pod にマウントされる最終出力 Secret を形成します。
1.5. Red Hat Quay on OpenShift Container Platform の前提条件 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Quay Operator を使用して OpenShift Container Platform に Red Hat Quay をデプロイする前に、次の前提条件を考慮してください。
1.5.1. OpenShift Container Platform クラスター リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Quay Operator をデプロイするには、OpenShift Container Platform 4.5 以降のクラスターと管理アカウントへのアクセス権が必要です。管理アカウントには、クラスタースコープで namespaces を作成する権限が必要です。
1.5.2. リソース要件 リンクのコピーリンクがクリップボードにコピーされました!
各 Red Hat Quay アプリケーション Pod には、以下のリソース要件があります。
- 8 Gi のメモリー
- 2000 ミリコアの CPU
Red Hat Quay Operator は、管理する Red Hat Quay デプロイメントごとに少なくとも 1 つのアプリケーション Pod を作成します。OpenShift Container Platform クラスターに、これらの要件に必要なコンピュートリソースがあることを確認してください。
1.5.3. オブジェクトストレージ リンクのコピーリンクがクリップボードにコピーされました!
デフォルトで、Red Hat Quay Operator は ObjectBucketClaim Kubernetes API を使用してオブジェクトストレージをプロビジョニングします。この API を使用すると、Red Hat Quay Operator がベンダー固有の実装から切り離されます。この API は、Red Hat OpenShift Data Foundation の NooBaa コンポーネントを介して提供されます。NooBaa はこのドキュメント全体で例として使用されています。
Red Hat Quay は、次のような複数のストレージクラウドプロバイダーを使用するように手動で設定できます。
- Amazon S3 (Red Hat Quay 用の S3 バケットポリシーの設定は S3 IAM Bucket Policy を参照)
- Microsoft Azure Blob Storage
- Google Cloud Storage
- Ceph Object Gateway(RADOS)
- OpenStack Swift
- CloudFront + S3
オブジェクトストレージプロバイダーの完全なリストは、Quay Enterprise 3.x サポートマトリックス を参照してください。
1.5.4. StorageClass リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Quay Operator を使用して Quay および Clair PostgreSQL データベースをデプロイする場合、デフォルトの StorageClass がクラスター内に設定されます。
Red Hat Quay Operator によって使用されるデフォルトの StorageClass は、Quay および Clair データベースに必要な永続ボリューム要求をプロビジョニングします。これらの PVC はデータを永続的に保存するために使用され、Red Hat Quay レジストリーと Clair 脆弱性スキャナーが利用可能な状態を維持し、再起動や障害が発生してもその状態が維持されるようにします。
インストールを続行する前に、Quay および Clair コンポーネント用のストレージのシームレスなプロビジョニングを確保するために、クラスター内にデフォルトの StorageClass が設定されていることを確認してください。
第2章 OperatorHub からの Red Hat Quay Operator のインストール リンクのコピーリンクがクリップボードにコピーされました!
以下の手順を使用して、OpenShift Container Platform OperatorHub から Red Hat Quay Operator をインストールします。
手順
- OpenShift Container Platform コンソールを使用して、Operators → OperatorHub を選択します。
- 検索ボックスに Red Hat Quay と入力し、Red Hat が提供する公式の Red Hat Quay Operator を選択します。機能、前提条件、デプロイメント情報が記載されている Installation ページに移動します。
- Install を選択します。Operator Installation ページが表示されます。
インストールのカスタマイズには、以下の選択肢を使用できます。
-
Update Channel: 更新チャネルを選択します。たとえば、最新リリースの場合は
stable-3.11を選択します。 インストールモード:
-
Red Hat Quay Operator をクラスター全体で使用できるようにする場合は、
All namespaces on the clusterを選択します。Red Hat Quay Operator をクラスター全体にインストールすることが推奨されます。単一 namespace を選択する場合、モニタリングコンポーネントはデフォルトで利用できなくなります。 これを単一の namespace 内にのみデプロイする必要がある場合は、
A specific namespace on the clusterを選択します。- Approval Strategy: 自動更新または手動更新のいずれかを承認します。自動更新ストラテジーが推奨されます。
-
Red Hat Quay Operator をクラスター全体で使用できるようにする場合は、
-
Update Channel: 更新チャネルを選択します。たとえば、最新リリースの場合は
- Install を選択します。
第3章 デプロイメント前に行う Red Hat Quay の設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Quay Operator は、OpenShift Container Platform にデプロイされると、すべての Red Hat Quay コンポーネントを管理できます。これはデフォルト設定ですが、セットアップをさらに制御する場合は、1 つ以上のコンポーネントを外部から管理できます。
次のパターンを使用して、管理対象外 Red Hat Quay コンポーネントを設定します。
手順
適切な設定で
config.yaml設定ファイルを作成します。最小限の設定は、以下を参照してください。touch config.yaml
$ touch config.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、設定ファイルを使用して
Secretを作成します。oc create secret generic --from-file config.yaml=./config.yaml config-bundle-secret
$ oc create secret generic --from-file config.yaml=./config.yaml config-bundle-secretCopy to Clipboard Copied! Toggle word wrap Toggle overflow quayregistry.yamlファイルを作成し、管理対象外コンポーネントを特定し、作成されたSecretを参照します。以下はその例です。QuayRegistryYAML ファイルの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力し、
quayregistry.yamlファイルを使用してレジストリーをデプロイします。oc create -n quay-enterprise -f quayregistry.yaml
$ oc create -n quay-enterprise -f quayregistry.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.1. 自動化のための Red Hat Quay の事前設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Quay は、自動化を可能にするいくつかの設定オプションをサポートします。ユーザーはデプロイメント前にこれらのオプションを設定して、ユーザーインターフェイスとの対話の必要性を減らすことができます。
3.1.1. API による最初のユーザー作成の許可 リンクのコピーリンクがクリップボードにコピーされました!
最初のユーザーを作成するには、ユーザーは FEATURE_USER_INITIALIZE パラメーターを True に設定し、/api/v1/user/initialize API を呼び出す必要があります。既存の組織の OAuth アプリケーションによって生成された OAuth トークンを必要とする他のすべてのレジストリー API 呼び出しとは異なり、API エンドポイントは認証を必要としません。
他のユーザーが作成されていない場合、ユーザーは Red Hat Quay のデプロイ後に API を使用して quayadmin などのユーザーを作成できます。詳細は、API を使用して最初のユーザーを作成する を参照してください。
3.1.2. API 一般アクセスの有効化 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Quay レジストリー API への一般的なアクセスを許可するには、ユーザーは BROWSER_API_CALLS_XHR_ONLY 設定オプションを False に設定する必要があります。
3.1.3. スーパーユーザーの追加 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Quay をデプロイしたら、ユーザーを作成し、最初のユーザーに完全な権限を持つ管理者権限を付与できます。SUPER_USER 設定オブジェクトを使用すると、事前に完全な権限を設定できます。以下に例を示します。
3.1.4. ユーザー作成の制限 リンクのコピーリンクがクリップボードにコピーされました!
スーパーユーザーを設定した後、FEATURE_USER_CREATION を False に設定することで、新しいユーザーを作成できる権限をスーパーユーザーグループに制限できます。以下に例を示します。
3.1.5. Red Hat Quay 3.11 での新機能の有効化 リンクのコピーリンクがクリップボードにコピーされました!
新しい Red Hat Quay 3.11 の機能を使用するには、次の機能の一部またはすべてを有効にします。
3.1.6. 自動化の推奨設定 リンクのコピーリンクがクリップボードにコピーされました!
自動化には、以下の config.yaml パラメーターが推奨されます。
3.2. オブジェクトストレージの設定 リンクのコピーリンクがクリップボードにコピーされました!
ストレージを管理するのが Red Hat Quay Operator かユーザーかにかかわらず、Red Hat Quay をインストールする前にオブジェクトストレージを設定する必要があります。
Red Hat Quay Operator にストレージの管理を任せたい場合は、マネージドストレージ セクションで、NooBaa および Red Hat OpenShift Data Foundation Operator のインストールと設定の詳細を参照してください。
別のストレージソリューションを使用している場合は、Operator の設定時に objectstorage を unmanaged として設定します。以下のセクションを参照してください。既存のストレージの設定の詳細は、管理対象外ストレージ を参照してください。
3.2.1. 管理対象外ストレージの使用 リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、参考として管理対象外ストレージの設定例を示しています。オブジェクトストレージの設定方法の詳細は、Red Hat Quay 設定ガイドを参照してください。
3.2.1.1. AWS S3 ストレージ リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Quay デプロイメント用に AWS S3 ストレージを設定する場合は、次の例を使用します。
3.2.1.2. Google Cloud storage リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Quay デプロイメント用に Google Cloud ストレージを設定する場合は、次の例を使用します。
- 1
- オプション: 接続から読み取ろうとしたときにタイムアウト例外が出力されるまでの時間 (秒単位)。デフォルトは
60秒です。また、接続を試行するときにタイムアウト例外が出力されるまでの時間 (秒単位) も含まれます。デフォルトは60秒です。
3.2.1.3. Microsoft Azure ストレージ リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Quay デプロイメント用に Microsoft Azure ストレージを設定する場合は、次の例を使用します。
- 1
- Microsoft Azure ストレージの
endpoint_urlパラメーターは任意であり、Microsoft Azure Government (MAG) エンドポイントで使用できます。空白のままにすると、endpoint_urlは通常の Microsoft リージョンに接続します。Red Hat Quay 3.7 以降では、MAG Blob サービスのプライマリーエンドポイントを使用する必要があります。MAG Blob サービスのセカンダリーエンドポイントを使用すると、
AuthenticationErrorDetail:Cannot find the claimed account when trying to GetProperties for the account whusc8-secondaryエラーが発生します。
3.2.1.4. Ceph/RadosGW ストレージ リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Quay デプロイメント用に Ceph/RadosGW ストレージを設定する場合は、次の例を使用します。
3.2.1.5. Swift ストレージ: リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Quay デプロイメント用に Swift ストレージを設定する場合は、次の例を使用します。
3.2.1.6. NooBaa 管理対象外ストレージ リンクのコピーリンクがクリップボードにコピーされました!
次の手順を使用して、NooBaa を管理対象外のストレージ設定としてデプロイします。
手順
- Red Hat Quay コンソールで、Storage → Object Bucket Claims に移動して、NooBaa Object Bucket Claim を作成します。
- アクセスキー、バケット名、エンドポイント (ホスト名)、および秘密鍵を含む Object Bucket Claim データの詳細を取得します。
Object Bucket Claim (オブジェクトバケット要求) の情報を使用する
config.yaml設定ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Object Bucket Claim の設定の詳細は、オブジェクトバケットクレーム を参照してください。
3.2.2. 管理対象外 NooBaa インスタンスの使用 リンクのコピーリンクがクリップボードにコピーされました!
以下の手順を使用して、Red Hat Quay デプロイメントに管理対象外 NooBaa インスタンスを使用します。
手順
- Storage → Object Bucket Claims のコンソールで NooBaa Object Bucket Claim を作成します。
-
Access Key、Bucket Name、Endpoint (hostname)、およびSecret Keyを含む Object Bucket Claim データの詳細を取得します。 Object Bucket Claim (オブジェクトバケット要求) の情報を使用して
config.yaml設定ファイルを作成します。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2.3. マネージドストレージ リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Quay Operator に Red Hat Quay のオブジェクトストレージを管理させる場合、クラスターは ObjectBucketClaim API を通じてオブジェクトストレージを提供できる必要があります。Red Hat OpenShift Data Foundation Operator を使用する場合は、サポートされている 2 つのオプションを使用できます。
ローカルの Kubernetes
PersistentVolumeストレージでサポートされる Multi-Cloud Object Gateway のスタンドアロンインスタンス- 高可用性がない
- Red Hat Quay サブスクリプションに含まれている
- Red Hat OpenShift Data Foundation の別のサブスクリプションは不要
スケールアウト Object Service と Ceph を備えた Red Hat OpenShift Data Foundation の実稼働環境用デプロイメント
- 高可用性がある
- Red Hat OpenShift Data Foundation の別のサブスクリプションが必要
スタンドアロンのインスタンスオプションを使用するには、以下の読み取りを続行します。Red Hat OpenShift Data Foundation の実稼働環境用デプロイメントの詳細は、公式ドキュメント を参照してください。
オブジェクトストレージのディスク容量は、50 GiB が Red Hat Quay Operator によって自動的に割り当てられます。この数は、ほとんどの小規模/中規模の Red Hat Quay インストールで利用可能なストレージの量を表しますが、実際のユースケースには十分ではない可能性があります。現在、Red Hat OpenShift Data Foundation ボリュームのサイズ変更は、Red Hat Quay Operator によって処理されません。詳細は、マネージドストレージのサイズ変更に関するセクションを参照してください。
3.2.3.1. Red Hat Quay の Red Hat OpenShift Data Foundation Operator での Multicloud Object Gateway コンポーネントの使用 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Quay サブスクリプションの一環として、Red Hat OpenShift Data Foundation Operator (旧称 OpenShift Container Storage Operator) の Multicloud Object Gateway コンポーネントを使用できます。このゲートウェイコンポーネントを使用すると、Kubernetes PersistentVolume ベースのブロックストレージがサポートする Red Hat Quay への S3 互換のオブジェクトストレージインターフェイスを指定できます。この使用は、Operator で管理される Red Hat Quay デプロイメントや、以下に示す Multicloud Object Gateway インスタンスの正確な仕様に限定されます。
Red Hat Quay はローカルファイルシステムのストレージをサポートしないため、ユーザーは代わりに Kubernetes PersistentVolume ストレージと組み合わせてゲートウェイを利用し、サポートされるデプロイメントを提供できます。PersistentVolume はオブジェクトストレージのバッキングストアとしてゲートウェイインスタンスに直接マウントされ、ブロックベースの StorageClass がサポートされます。
PersistentVolume の性質上、これはスケールアウトできる高可用性ソリューションではなく、Red Hat OpenShift Data Foundation などのスケールアウトストレージシステムを置き換えることはできません。ゲートウェイの単一インスタンスのみが実行されています。再スケジュール、更新、または予定外のダウンタイムが原因でゲートウェイを実行している Pod が利用できなくなると、接続された Red Hat Quay インスタンスのパフォーマンスが一時的に低下します。
Red Hat OpenShift Data Foundation を使用して OpenShift Container Platform に Red Hat Quay をデプロイするには、ローカルストレージ Operator、Red Hat OpenShift Data Foundation Operator をダウンロードし、OpenShift Container Platform UI を使用してスタンドアロンの Multicloud Object Gateway をデプロイする必要があります。以下の手順は、以下の Red Hat OpenShift Data Foundation ドキュメントを参照してください。
第4章 トラフィック受信の設定 リンクのコピーリンクがクリップボードにコピーされました!
4.1. SSL/TLS とルートの設定 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform の エッジターミネーション ルートのサポートが、新しい管理対象コンポーネントの tls によって追加されました。これにより、route コンポーネントが SSL/TLS から分離され、ユーザーは両方を個別に設定できるようになります。
EXTERNAL_TLS_TERMINATION: true は事前に設定された設定です。
-
tlsが管理対象の場合、デフォルトのクラスターワイルドカード証明書が使用されます。 -
tlsが管理対象外の場合、ユーザーが指定したキーと証明書のペアがルートに挿入されます。
ssl.cert と ssl.key が別の永続的なシークレットに移動し、キーと証明書のペアが調整のたびに再生成されなくなりました。キーと証明書のペアは edge ルートとしてフォーマットされ、Quay コンテナー内の同じディレクトリーにマウントされます。
SSL/TLS とルートを設定する場合は複数の置換が可能ですが、次のルールが適用されます。
-
SSL/TLS が
managedになっている場合は、ルートもmanagedにする必要があります。 -
SSL/TLS が
unmanagedの場合は、設定バンドルで証明書を直接指定する必要があります。
次の表に、有効なオプションを示します。
| オプション | Route | TLS | 証明書が提供されるか | 結果 |
|---|---|---|---|---|
| 独自のロードバランサーが TLS を処理する | 管理対象 | 管理対象 | いいえ | デフォルトのワイルドカード証明書を使用したエッジルート |
| Red Hat Quay が TLS を処理する | 管理対象 | 管理対象外 | はい | Pod 内にマウントされる証明書を含むパススルールート |
| Red Hat Quay が TLS を処理する | 管理対象外 | 管理対象外 | はい |
証明書は |
4.1.1. SSL/TLS 証明書とキーのペアを使用した設定バンドルシークレットの作成 リンクのコピーリンクがクリップボードにコピーされました!
次の手順を使用して、独自の SSL/TLS 証明書とキーペアを含む設定バンドルシークレットを作成します。
手順
次のコマンドを入力して、独自の SSL/TLS 証明書とキーペアを含む設定バンドルシークレットを作成します。
oc create secret generic --from-file config.yaml=./config.yaml --from-file ssl.cert=./ssl.cert --from-file ssl.key=./ssl.key config-bundle-secret
$ oc create secret generic --from-file config.yaml=./config.yaml --from-file ssl.cert=./ssl.cert --from-file ssl.key=./ssl.key config-bundle-secretCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第5章 OpenShift Container Platform 上の管理対象コンポーネントのリソースの設定 リンクのコピーリンクがクリップボードにコピーされました!
以下のコンポーネントに実行中の Pod がある場合は、Red Hat Quay on OpenShift Container Platform でリソースを手動調整できます。
-
quay -
clair -
mirroring -
clairpostgres -
postgres
この機能により、ユーザーはより小規模なテストクラスターを実行したり、Quay Pod の機能が部分的に低下するのを避けるために事前にさらに多くのリソースを要求したりできるようになります。Kubernetes リソース単位 に応じて制限やリクエストを設定できます。
次のコンポーネントは、最小要件よりも低く設定しないでください。これにより、デプロイメントに問題が発生し、場合によっては Pod のデプロイメントが失敗する可能性があります。
-
quay: 最低 6 GB、2vCPU -
clair: 2 GB のメモリー、2 つの vCPU を推奨 -
clairpostgres: 最低 200MB
リソース要求は、OpenShift Container Platform UI で設定することも、QuayRegistry YAML を直接更新して設定することもできます。
これらのコンポーネントに設定されているデフォルト値は推奨値です。リソース要求の設定が高すぎるか低すぎると、それぞれリソースの使用効率やパフォーマンスが低する可能性があります。
5.1. OpenShift Container Platform UI を使用したリソース要求の設定 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform UI を使用してリソースを設定するには、次の手順に従います。
手順
- OpenShift Container Platform 開発者コンソールで、Operator → Installed Operators → Red Hat Quay をクリックします。
- QuayRegistry をクリックします。
- レジストリーの名前 (例: example-registry) をクリックします。
- YAML をクリックします。
spec.componentsフィールドでは、.overrides.resources.limitsおよびoverrides.resources.requestsフィールドに値を設定することで、quay、clair、mirroringclairpostgres、およびpostgresリソースのリソースをオーバーライドできます。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2. QuayRegistry YAML の編集によるリソースリクエストの設定 リンクのコピーリンクがクリップボードにコピーされました!
レジストリーをデプロイした後で、Red Hat Quay を再設定してリソース要求を設定できます。これは、QuayRegistry YAML ファイルを直接編集し、レジストリーを再デプロイすることで実行できます。
手順
オプション:
QuayRegistryYAML ファイルのローカルコピーがない場合は、次のコマンドを入力して取得します。oc get quayregistry <registry_name> -n <namespace> -o yaml > quayregistry.yaml
$ oc get quayregistry <registry_name> -n <namespace> -o yaml > quayregistry.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow この手順のステップ 1 で作成した
quayregistry.yamlを開き、必要な変更を加えます。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存します。
次のコマンドを実行して、更新された設定を使用して Red Hat Quay レジストリーを適用します。
oc replace -f quayregistry.yaml
$ oc replace -f quayregistry.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
quayregistry.quay.redhat.com/example-registry replaced
quayregistry.quay.redhat.com/example-registry replacedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第6章 データベースの設定 リンクのコピーリンクがクリップボードにコピーされました!
6.1. 既存の PostgreSQL データベースの使用 リンクのコピーリンクがクリップボードにコピーされました!
外部で管理されている PostgreSQL データベースを使用している場合、デプロイメントを成功させるには、pg_trgm 拡張機能を手動で有効にする必要があります。
Red Hat Quay と Clair の両方のデプロイメントに、外部で管理される同じ PostgreSQL データベースを使用しないでください。また、Red Hat Quay や Clair などの接続集約型のワークロードがリソースを競合すると、PostgreSQL 側の自然な接続制限を使い果たしてしまう可能性があるため、PostgreSQL データベースを他のワークロードと共有しないでください。さらに、pgBouncer は Red Hat Quay または Clair ではサポートされていないため、この問題を解決するオプションではありません。
既存の PostgreSQL データベースをデプロイするには、次の手順を使用します。
手順
必要なデータベースフィールドを含む
config.yamlファイルを作成します。以下に例を示します。config.yamlファイルの例:DB_URI: postgresql://test-quay-database:postgres@test-quay-database:5432/test-quay-database
DB_URI: postgresql://test-quay-database:postgres@test-quay-database:5432/test-quay-databaseCopy to Clipboard Copied! Toggle word wrap Toggle overflow 設定ファイルを使用して
Secretを作成します。kubectl create secret generic --from-file config.yaml=./config.yaml config-bundle-secret
$ kubectl create secret generic --from-file config.yaml=./config.yaml config-bundle-secretCopy to Clipboard Copied! Toggle word wrap Toggle overflow postgresコンポーネントをunmanagedとマークし、作成したSecretを参照するQuayRegistry.yamlファイルを作成します。以下に例を示します。quayregistry.yamlファイルの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のステップ
- 次のセクションに進み、レジストリーをデプロイします。
6.1.1. データベースの設定 リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、Red Hat Quay デプロイメントで利用可能なデータベース設定フィールドを説明します。
6.1.1.1. データベース URI リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Quay では、必要な DB_URI フィールドを使用してデータベースへの接続を設定します。
以下の表は DB_URI 設定フィールドを説明します。
| フィールド | 型 | 説明 |
|---|---|---|
|
DB_URI | 文字列 | 認証情報を含む、データベースにアクセスするための URI。
postgresql://quayuser:quaypass@quay-server.example.com:5432/quay |
6.1.1.2. データベース接続引数 リンクのコピーリンクがクリップボードにコピーされました!
オプションの接続引数は、DB_CONNECTION_ARGS パラメーターで設定されます。DB_CONNECTION_ARGS で定義されたキーと値のペアの一部は汎用的なものも、データベース固有のものもあります。
以下の表は、データベース接続引数を説明します。
| フィールド | 型 | 説明 |
|---|---|---|
| DB_CONNECTION_ARGS | Object | タイムアウトや SSL/TLS などのデータベースの任意の接続引数。 |
| .autorollback | Boolean |
スレッドローカル接続を使用するかどうか。 |
| .threadlocals | Boolean |
自動ロールバック接続を使用するかどうか。 |
6.1.1.2.1. PostgreSQL SSL/TLS 接続引数 リンクのコピーリンクがクリップボードにコピーされました!
SSL/TLS では、設定はデプロイするデータベースによって異なります。次の例は、PostgreSQL SSL/TLS 設定を示しています。
DB_CONNECTION_ARGS: sslmode: verify-ca sslrootcert: /path/to/cacert
DB_CONNECTION_ARGS:
sslmode: verify-ca
sslrootcert: /path/to/cacert
sslmode オプションは、セキュアな SSL/TLS TCP/IP 接続がサーバーにネゴシエートされるかどうか、その優先度を決定します。モードは 6 つあります。
| モード | 説明 |
|---|---|
| disable | この設定では、非 SSL/TLS 接続のみが試行されます。 |
| allow | 設定では、まず非 SSL/TLS 接続が試行されます。失敗すると、SSL/TLS 接続が試行されます。 |
|
prefer | 設定では、まず SSL/TLS 接続が試行されます。失敗すると、非 SSL/TLS 接続が試行されます。 |
| require | 設定では SSL/TLS 接続のみが試行されます。ルート CA ファイルが存在する場合は、verify-ca が指定されているのと同じ方法で証明書が検証されます。 |
| verify-ca | 設定では SSL/TLS 接続のみが試行され、サーバー証明書が信頼された認証局 (CA) によって発行されたかどうかが検証されます。 |
| verify-full | SSL/TLS 接続のみを試行し、サーバー証明書が信頼できる CA によって発行されていること、および要求されたサーバーのホスト名が証明書内のホスト名と一致することが確認されます。 |
PostgreSQL の有効な引数の詳細は、Database Connection Control Functions を参照してください。
6.1.1.2.2. MySQL SSL/TLS 接続引数 リンクのコピーリンクがクリップボードにコピーされました!
次の例は、MySQL SSL/TLS 設定のサンプルを示しています。
DB_CONNECTION_ARGS:
ssl:
ca: /path/to/cacert
DB_CONNECTION_ARGS:
ssl:
ca: /path/to/cacert
MySQL の有効な接続引数に関する情報は、Connecting to the Server Using URI-Like Strings or Key-Value Pairs を参照してください。
6.1.2. マネージド PostgreSQL データベースの使用 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Quay 3.9 では、データベースが Red Hat Quay Operator によって管理されている場合、Red Hat Quay 3.8 から 3.9 に更新すると自動的に PostgreSQL 10 から PostgreSQL 13 にアップグレードされます。
- マネージドデータベースを使用しているユーザーは、PostgreSQL データベースを 10 から 13 にアップグレードする必要があります。
- Red Hat Quay および Clair データベースが Operator によって管理されている場合、3.9.0 のアップグレードを成功させるには、各コンポーネントのデータベースのアップグレードが成功する必要があります。いずれかのデータベースのアップグレードが失敗すると、Red Hat Quay のバージョン全体のアップグレードが失敗します。この動作は想定されています。
Red Hat Quay Operator により PostgreSQL デプロイメントが PostgreSQL 10 から 13 にアップグレードされることを望まない場合は、quayregistry.yaml ファイルで PostgreSQL パラメーターを manage: false に設定する必要があります。データベースを管理対象外に設定する方法の詳細は、既存 Postgres データベースの使用 を参照してください。
- PostgreSQL 13 にアップグレードすることが強く推奨されます。PostgreSQL 10 は 2022 年 11 月 10 日に最終リリースとなり、サポートされなくなりました。詳細は、PostgreSQL のバージョン管理ポリシー を参照してください。
PostgreSQL データベースと Red Hat Enterprise Linux (RHEL) システムのバージョンを一致させるには、RHEL 8 の場合は PostgreSQL の RHEL 8 バージョンへの移行、RHEL 9 の場合は PostgreSQL の RHEL 9 バージョンへの移行 を参照してください。
Red Hat Quay 3.8 → 3.9 の手順の詳細は、Red Hat Quay Operator のアップグレードの概要 を参照してください。
6.1.2.1. PostgreSQL データベースの推奨事項 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Quay チームは、PostgreSQL データベースを管理するために以下を推奨します。
- PostgreSQL イメージで提供されるツールまたは独自のバックアップインフラストラクチャーのいずれかを使用して、データベースのバックアップを定期的に実行する必要があります。Red Hat Quay Operator は現在、PostgreSQL データベースがバックアップされていることを保証していません。
-
バックアップからの PostgreSQL データベースの復元は、PostgreSQL のツールと手順を使用して行う必要があります。データベースを復元している間は、Quay
Podsを実行できないことに注意してください。 - データベースのディスク容量は、Red Hat Quay Operator によって 50 GiB が自動的に割り当てられます。この数は、ほとんどの小規模/中規模の Red Hat Quay インストールで利用可能なストレージの量を表しますが、実際のユースケースには十分ではない可能性があります。現在、データベースボリュームのサイズ変更は Red Hat Quay Operator で処理されません。
6.2. 外部 Redis の設定 リンクのコピーリンクがクリップボードにコピーされました!
このセクションの内容に沿って、外部 Redis デプロイメントをセットアップします。
6.2.1. 管理対象外 Redis データベースの使用 リンクのコピーリンクがクリップボードにコピーされました!
外部 Redis データベースをセットアップするには、次の手順を実行します。
手順
次の Redis フィールドを使用して
config.yamlファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、設定ファイルを使用してシークレットを作成します。
oc create secret generic --from-file config.yaml=./config.yaml config-bundle-secret
$ oc create secret generic --from-file config.yaml=./config.yaml config-bundle-secretCopy to Clipboard Copied! Toggle word wrap Toggle overflow Redis コンポーネントを
unmanagedに設定し、作成されたシークレットを参照するquayregistry.yamlファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Red Hat Quay レジストリーをデプロイします。
6.2.2. 管理対象外 Horizontal Pod Autoscaler の使用 リンクのコピーリンクがクリップボードにコピーされました!
Horizontal Pod Autoscaler (HPA) は Clair、Quay、および Mirror Pod に含まれるようになり、負荷の急増時に自動的にスケーリングされるようになりました。
HPA はデフォルトで管理対象となるように設定されているため、Clair、Quay、および Mirror の Pod 数は 2 に設定されています。これにより、Red Hat Quay Operator による Quay の更新または再設定時、またはイベントの再スケジューリング中のダウンタイムを容易に回避できます。
6.2.2.1. Horizontal Pod Autoscaler の無効化 リンクのコピーリンクがクリップボードにコピーされました!
自動スケーリングを無効にするか、独自の HorizontalPodAutoscaler を作成するには、QuayRegistry インスタンスでコンポーネントを unmanaged として指定します。以下に例を示します。
6.2.3. Route コンポーネントの無効化 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Quay Operator がルートを作成できないようにするには、次の手順を使用します。
手順
コンポーネントを
quayregistry.yamlファイルでmanaged: falseと設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow config.yamlファイルを編集して、Red Hat Quay が SSL/TLS を処理するように指定します。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 管理対象外ルートを正しく設定しないと、次のエラーが返されます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
デフォルトルートを無効にするということは、Red Hat Quay インスタンスにアクセスするために Route、Service、または Ingress を作成する必要があることを意味します。さらに、使用する DNS は Red Hat Quay 設定の SERVER_HOSTNAME と一致する必要があります。
6.2.4. モニタリングコンポーネントの無効化 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Quay Operator を単一の namaspace にインストールすると、モニタリングコンポーネントは自動的に managed: false に設定されます。監視を明示的に無効にするには、次の参照を使用してください。
管理対象外のモニタリング
このシナリオでモニタリングを有効にするには、Red Hat Quay Operator が単一の namespace にインストールされている場合の監視の有効化 を参照してください。
6.2.5. ミラーリングコンポーネントの無効化 リンクのコピーリンクがクリップボードにコピーされました!
ミラーリングを無効にするには、次の YAML 設定を使用します。
管理対象外ミラーリングの YAML 設定の例
第7章 Operator を使用した Red Hat Quay のデプロイ リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Quay は、コマンドラインインターフェイスを使用して、または OpenShift Container Platform コンソールから OpenShift Container Platform にデプロイできます。手順は基本的に同じです。
7.1. コマンドラインからの Red Hat Quay のデプロイ リンクのコピーリンクがクリップボードにコピーされました!
コマンドラインインターフェイス (CLI) を使用して Red Hat Quay をデプロイするには、次の手順を実行します。
前提条件
- CLI を使用して OpenShift Container Platform にログインしている。
手順
次のコマンドを入力して、namespace (例:
quay-enterprise)を作成します。oc new-project quay-enterprise
$ oc new-project quay-enterpriseCopy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: Red Hat Quay デプロイメントで何かを事前に設定する場合は、設定バンドルの
Secretを作成します。oc create secret generic quay-enterprise-config-bundle --from-file=config-bundle.tar.gz=/path/to/config-bundle.tar.gz
$ oc create secret generic quay-enterprise-config-bundle --from-file=config-bundle.tar.gz=/path/to/config-bundle.tar.gzCopy to Clipboard Copied! Toggle word wrap Toggle overflow quayregistry.yamlという名前のファイルにQuayRegistryカスタムリソースを作成します。最小限のデプロイメントでは、すべてのデフォルトを使用します。
quayregistry.yaml:
apiVersion: quay.redhat.com/v1 kind: QuayRegistry metadata: name: example-registry namespace: quay-enterprise
apiVersion: quay.redhat.com/v1 kind: QuayRegistry metadata: name: example-registry namespace: quay-enterpriseCopy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: 一部のコンポーネントを管理対象外にする必要がある場合、この情報を
specフィールドに追加します。最小デプロイメントは次の例のようになります。管理対象外コンポーネントを含む quayregistry.yaml の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: 設定バンドル (例:
init-config-bundle-secret) を作成している場合は、これをquayregistry.yamlファイルで参照します。設定バンドルを含む quayregistry.yaml の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: プロキシーを設定している場合は、Red Hat Quay、Clair、およびミラーリングのオーバーライドを使用して情報を追加できます。
プロキシーが設定された quayregistry.yaml の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のコマンドを入力して、指定の namespace に
QuayRegistryを作成します。oc create -n quay-enterprise -f quayregistry.yaml
$ oc create -n quay-enterprise -f quayregistry.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、
status.registryEndpointがいつ設定されるかを確認します。oc get quayregistry -n quay-enterprise example-registry -o jsonpath="{.status.registryEndpoint}" -w$ oc get quayregistry -n quay-enterprise example-registry -o jsonpath="{.status.registryEndpoint}" -wCopy to Clipboard Copied! Toggle word wrap Toggle overflow
関連情報
- Red Hat Quay のデプロイの進行状況を追跡する方法の詳細は、デプロイメントプロセスの監視およびデバッグ を参照してください。
7.1.1. API を使用した最初のユーザーの作成 リンクのコピーリンクがクリップボードにコピーされました!
以下の手順に従って、Red Hat Quay 組織で最初のユーザーを作成します。
前提条件
-
設定オプション
FEATURE_USER_INITIALIZEはTrueに設定する。 - データベースにユーザーが存在していない。
この手順では、"access_token": true を指定して OAuth トークンを要求します。
Red Hat Quay 設定ファイルを開き、以下の設定フィールドを更新します。
FEATURE_USER_INITIALIZE: true SUPER_USERS: - quayadminFEATURE_USER_INITIALIZE: true SUPER_USERS: - quayadminCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、Red Hat Quay サービスを停止します。
sudo podman stop quay
$ sudo podman stop quayCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、Red Hat Quay サービスを開始します。
sudo podman run -d -p 80:8080 -p 443:8443 --name=quay -v $QUAY/config:/conf/stack:Z -v $QUAY/storage:/datastorage:Z {productrepo}/{quayimage}:{productminv}$ sudo podman run -d -p 80:8080 -p 443:8443 --name=quay -v $QUAY/config:/conf/stack:Z -v $QUAY/storage:/datastorage:Z {productrepo}/{quayimage}:{productminv}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の
CURLコマンドを実行して、ユーザー名、パスワード、電子メール、およびアクセストークンを使用して新しいユーザーを生成します。curl -X POST -k http://quay-server.example.com/api/v1/user/initialize --header 'Content-Type: application/json' --data '{ "username": "quayadmin", "password":"quaypass12345", "email": "quayadmin@example.com", "access_token": true}'$ curl -X POST -k http://quay-server.example.com/api/v1/user/initialize --header 'Content-Type: application/json' --data '{ "username": "quayadmin", "password":"quaypass12345", "email": "quayadmin@example.com", "access_token": true}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 成功すると、このコマンドはユーザー名、メール、および暗号化されたパスワードが含まれるオブジェクトを返します。以下に例を示します。
{"access_token":"6B4QTRSTSD1HMIG915VPX7BMEZBVB9GPNY2FC2ED", "email":"quayadmin@example.com","encrypted_password":"1nZMLH57RIE5UGdL/yYpDOHLqiNCgimb6W9kfF8MjZ1xrfDpRyRs9NUnUuNuAitW","username":"quayadmin"} # gitleaks:allow{"access_token":"6B4QTRSTSD1HMIG915VPX7BMEZBVB9GPNY2FC2ED", "email":"quayadmin@example.com","encrypted_password":"1nZMLH57RIE5UGdL/yYpDOHLqiNCgimb6W9kfF8MjZ1xrfDpRyRs9NUnUuNuAitW","username":"quayadmin"} # gitleaks:allowCopy to Clipboard Copied! Toggle word wrap Toggle overflow データベースにユーザーが存在している場合は、エラーが返されます。
{"message":"Cannot initialize user in a non-empty database"}{"message":"Cannot initialize user in a non-empty database"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow パスワードが 8 文字以上でない場合や、空白が含まれている場合には、エラーが返されます。
{"message":"Failed to initialize user: Invalid password, password must be at least 8 characters and contain no whitespace."}{"message":"Failed to initialize user: Invalid password, password must be at least 8 characters and contain no whitespace."}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを入力して、Red Hat Quay デプロイメントにログインします。
sudo podman login -u quayadmin -p quaypass12345 http://quay-server.example.com --tls-verify=false
$ sudo podman login -u quayadmin -p quaypass12345 http://quay-server.example.com --tls-verify=falseCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Login Succeeded!
Login Succeeded!Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.1.2. コマンドラインで作成されたコンポーネントの表示 リンクのコピーリンクがクリップボードにコピーされました!
デプロイされた Red Hat Quay コンポーネントを表示するには、次の手順を使用します。
前提条件
- Red Hat Quay を OpenShift Container Platform にデプロイしている。
手順
次のコマンドを入力して、デプロイされたコンポーネントを表示します。
oc get pods -n quay-enterprise
$ oc get pods -n quay-enterpriseCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.1.3. Horizontal Pod 自動スケーリング リンクのコピーリンクがクリップボードにコピーされました!
デフォルトのデプロイメントでは、以下の実行中の Pod が表示されます。
-
Red Hat Quay アプリケーション自体で使用する 2 つの Pod (
example-registry-quay-app-*`) -
Red Hat Quay ロギングに使用する 1 つの Redis Pod (
example-registry-quay-redis-*) -
Red Hat Quay がメタデータストレージに使用する PostgreSQL の 1 つのデータベース Pod (
example-registry-quay-database-*) -
2 つの
Quayミラーリング Pod (example-registry-quay-mirror-*) -
Clair アプリケーションの 2 つの Pod (
example-registry-clair-app-*) -
Clair 用の 1 つの PostgreSQL Pod (
example-registry-clair-postgres-*)
Horizontal PPod 自動スケーリングはデフォルトで managed に設定され、Quay、Clair、およびリポジトリーミラーリングの Pod 数は 2 に設定されます。これにより、Red Hat Quay Operator による Red Hat Quay の更新または再設定時、またはイベントの再スケジューリング中のダウンタイムを容易に回避できます。以下のコマンドを入力して、HPA オブジェクトに関する情報を表示できます。
oc get hpa -n quay-enterprise
$ oc get hpa -n quay-enterprise
出力例
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE example-registry-clair-app Deployment/example-registry-clair-app 16%/90%, 0%/90% 2 10 2 13d example-registry-quay-app Deployment/example-registry-quay-app 31%/90%, 1%/90% 2 20 2 13d example-registry-quay-mirror Deployment/example-registry-quay-mirror 27%/90%, 0%/90% 2 20 2 13d
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
example-registry-clair-app Deployment/example-registry-clair-app 16%/90%, 0%/90% 2 10 2 13d
example-registry-quay-app Deployment/example-registry-quay-app 31%/90%, 1%/90% 2 20 2 13d
example-registry-quay-mirror Deployment/example-registry-quay-mirror 27%/90%, 0%/90% 2 20 2 13d
第8章 インフラストラクチャーノードへの Red Hat Quay のデプロイ リンクのコピーリンクがクリップボードにコピーされました!
デフォルトで、quay関連のすべての Pod は OpenShift Container Platform クラスター内の利用可能なワーカーノードでスケジュールされます。一部の環境では、レジストリー、データベース、および Pod の監視など、インフラストラクチャーワークロード専用の特定のノード専用に割り当てて、パフォーマンスを改善し、重要なコンポーネントの分離やメンテナンスの簡素化が必要になる場合があります。
OpenShift Container Platform は、インフラストラクチャーマシンセットを使用したこのアプローチをサポートします。
OpenShift Container Platform 管理者は、ワーカーノードのラベル付けおよびテイントを使用して同じ結果を得ることができます。これにより、quay Pod などのインフラストラクチャーワークロードのみがこれらのノードでスケジュールされます。インフラストラクチャーノードを設定したら、ノードセレクターおよび容認を使用して quay Pod を実行する場所を制御できます。
以下の手順は、Red Hat Quay Operator を単一の namespace にインストールし、独自のバックエンドストレージを提供する新規のデプロイメントを対象としています。この手順では、ノードを準備し、専用のインフラストラクチャーノードに Red Hat Quay をデプロイする方法を説明します。この手順では、quay関連のすべての Pod が専用のインフラストラクチャーノードに配置されます。
8.1. インフラストラクチャー用ノードへのラベルとテインとの追加 リンクのコピーリンクがクリップボードにコピーされました!
次の手順を実行して、インフラストラクチャー用のノードにラベルとテインとを追加します。
以下の手順では、3 つのワーカーノードに infra ラベルを付けます。環境に関連するリソースによっては、3 つ以上のワーカーノードに infra ラベルを付ける必要がある場合があります。
次のコマンドを入力して、デプロイメント内の ワーカー ノードのリストを取得します。
oc get nodes | grep worker
$ oc get nodes | grep workerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、
node-role.kubernetes.io/infra=ラベルをワーカーノードに追加します。必要なインフラストラクチャーノードの数は、環境によって異なります。実稼働環境では、すべてのquay関連のコンポーネントに対して高可用性と十分なリソースを確保するために、十分な infra ノードをプロビジョニングする必要があります。CPU、メモリー、およびストレージ使用率を監視して、追加のインフラノードが必要であるかどうかを判別します。oc label node --overwrite <infra_node_one> <infra_node_two> <infra_node_three> node-role.kubernetes.io/infra=
$ oc label node --overwrite <infra_node_one> <infra_node_two> <infra_node_three> node-role.kubernetes.io/infra=Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、
node-role.kubernetes.io/infra=ラベルが適切なノードに追加されていることを確認します。oc get node | grep infra
$ oc get node | grep infraCopy to Clipboard Copied! Toggle word wrap Toggle overflow --- example-cluster-new-c5qqp-worker-b-4zxx5.c.quay-devel.internal Ready infra,worker 405d v1.32.8 example-cluster-new-c5qqp-worker-b-kz6jn.c.quay-devel.internal Ready infra,worker 406d v1.32.8 example-cluster-new-c5qqp-worker-b-wrhw4.c.quay-devel.internal Ready infra,worker 405d v1.32.8 ---
--- example-cluster-new-c5qqp-worker-b-4zxx5.c.quay-devel.internal Ready infra,worker 405d v1.32.8 example-cluster-new-c5qqp-worker-b-kz6jn.c.quay-devel.internal Ready infra,worker 406d v1.32.8 example-cluster-new-c5qqp-worker-b-wrhw4.c.quay-devel.internal Ready infra,worker 405d v1.32.8 ---Copy to Clipboard Copied! Toggle word wrap Toggle overflow ワーカーノードに
infraロールが割り当てられている場合、ユーザーのワークロードが誤ってインフラノードに割り当てられる可能性があります。これを回避するには、infra ノードにテイントを適用し、制御する Pod に容認を追加します。次のコマンドを入力して、ワーカーノードにinfraラベルを付けます。oc adm taint nodes -l node-role.kubernetes.io/infra \ node-role.kubernetes.io/infra=reserved:NoSchedule --overwrite
$ oc adm taint nodes -l node-role.kubernetes.io/infra \ node-role.kubernetes.io/infra=reserved:NoSchedule --overwriteCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
node/example-cluster-new-c5qqp-worker-b-4zxx5.c.quay-devel.internal modified node/example-cluster-new-c5qqp-worker-b-kz6jn.c.quay-devel.internal modified node/example-cluster-new-c5qqp-worker-b-wrhw4.c.quay-devel.internal modified
node/example-cluster-new-c5qqp-worker-b-4zxx5.c.quay-devel.internal modified node/example-cluster-new-c5qqp-worker-b-kz6jn.c.quay-devel.internal modified node/example-cluster-new-c5qqp-worker-b-wrhw4.c.quay-devel.internal modifiedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
8.2. ノードセレクターと容認を使用したプロジェクト作成 リンクのコピーリンクがクリップボードにコピーされました!
以下の手順を使用して、node-selector および tolerations アノテーションでプロジェクトを作成します。
手順
次のコマンドを入力して、
node-selectorアノテーションを namespace に追加します。oc annotate namespace <namespace> openshift.io/node-selector='node-role.kubernetes.io/infra='
$ oc annotate namespace <namespace> openshift.io/node-selector='node-role.kubernetes.io/infra='Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
namespace/<namespace> annotated
namespace/<namespace> annotatedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを入力して
tolerationsアノテーションを namespace に追加します。oc annotate namespace <namespace> scheduler.alpha.kubernetes.io/defaultTolerations='[{"operator":"Equal","value":"reserved","effect":"NoSchedule","key":"node-role.kubernetes.io/infra"},{"operator":"Equal","value":"reserved","effect":"NoExecute","key":"node-role.kubernetes.io/infra"}]' --overwrite$ oc annotate namespace <namespace> scheduler.alpha.kubernetes.io/defaultTolerations='[{"operator":"Equal","value":"reserved","effect":"NoSchedule","key":"node-role.kubernetes.io/infra"},{"operator":"Equal","value":"reserved","effect":"NoExecute","key":"node-role.kubernetes.io/infra"}]' --overwriteCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
namespace/<namespace> annotated
namespace/<namespace> annotatedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要この例の容認は、一般的にインフラノードに適用される 2 つのテイントに固有のものです。お使いの環境で設定したテイントは異なる場合があります。それに応じて容認を設定して、インフラノードに適用されたテイントと一致させる必要があります。
8.3. アノテーションが付けられた名前空間への Red Hat Quay Operator のインストール リンクのコピーリンクがクリップボードにコピーされました!
node-role.kubernetes.io/infra= ラベルをワーカーノードに追加し、node-selector および tolerations アノテーションを namespace に追加した後、その namespace に Red Hat Quay Operator をダウンロードする必要があります。
次の手順は、アノテーションが付けられた namespace に Red Hat Quay Operator をダウンロードし、インストールを正常に実行するためにサブスクリプションを更新する方法を示しています。
手順
- OpenShift Container Platform Web コンソールで、Operators → OperatorHub をクリックします。
- 検索ボックスに、Red Hat Quay と入力します。
- Red Hat Quay → Install をクリックします。
- 更新チャネル(例: stable-3.11 とバージョン)を選択します。
-
インストールモード のクラスターで特定の namespace をクリックし、
node-selectorおよびtolerationsアノテーションを適用した namespace を選択します。 - Install をクリックします。
次のコマンドを入力して、Operator がインストールされていることを確認します。
oc get pods -n <annotated_namespace> -o wide | grep quay-operator
$ oc get pods -n <annotated_namespace> -o wide | grep quay-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
quay-operator.v3.15.1-858b5c5fdc-lf5kj 1/1 Running 0 29m 10.130.6.18 example-cluster-new-c5qqp-worker-f-mhngl.c.quay-devel.internal <none> <none>
quay-operator.v3.15.1-858b5c5fdc-lf5kj 1/1 Running 0 29m 10.130.6.18 example-cluster-new-c5qqp-worker-f-mhngl.c.quay-devel.internal <none> <none>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.4. Red Hat Quay レジストリーの作成 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Quay Operator をダウンロードしたら、Red Hat Quay レジストリーを作成する必要があります。レジストリーのコンポーネント( clair、postgres、redis など)には、infra ワーカーノードにスケジュールできるように、Toleration アノテーションを適用する必要があります。
以下の手順は、インフラストラクチャーノードで実行される Red Hat Quay レジストリーを作成する方法を示しています。
手順
- OpenShift Container Platform Web コンソールで、Operators → Installed Operators → Red Hat Quay をクリックします。
- Red Hat Quay Operator の詳細 ページで、Quay Registry → Create QuayRegistry をクリックします。
Create QuayRegistry ページで、
monitoringおよびobjectstorageフィールドをfalseに設定します。Red Hat Quay が単一の namespace にインストールされている場合、モニタリングコンポーネントを有効にすることはできません。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Create をクリックします。
オプション:Pod がインフラノードで実行されていることを確認します。
次のコマンドを入力して、すべての
Quay関連の Pod とスケジュールされているノードを一覧表示します。oc get pods -n <annotated_namespace> -o wide | grep example-registry
$ oc get pods -n <annotated_namespace> -o wide | grep example-registryCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
... NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES example-registry-clair-app-5f95d685bd-dgjf6 1/1 Running 0 52m 10.128.4.12 example-cluster-new-c5qqp-worker-b-wrhw4.c.quay-devel.internal <none> <none> ...
... NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES example-registry-clair-app-5f95d685bd-dgjf6 1/1 Running 0 52m 10.128.4.12 example-cluster-new-c5qqp-worker-b-wrhw4.c.quay-devel.internal <none> <none> ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、一覧表示されたノードに
infraというラベルが付けられたノードのみが含まれていることを確認します。oc get nodes -l node-role.kubernetes.io/infra -o name
$ oc get nodes -l node-role.kubernetes.io/infra -o nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
node/example-cluster-new-c5qqp-worker-b-4zxx5.c.quay-devel.internal modified node/example-cluster-new-c5qqp-worker-b-kz6jn.c.quay-devel.internal modified node/example-cluster-new-c5qqp-worker-b-wrhw4.c.quay-devel.internal modified
node/example-cluster-new-c5qqp-worker-b-4zxx5.c.quay-devel.internal modified node/example-cluster-new-c5qqp-worker-b-kz6jn.c.quay-devel.internal modified node/example-cluster-new-c5qqp-worker-b-wrhw4.c.quay-devel.internal modifiedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記いずれかの Pod がインフラ以外のノードに表示される場合は、namespace のアノテーションとデプロイメントのパッチを適用します。
次のコマンドを入力して、Red Hat Quay レジストリーのすべての Pod を再起動します。
oc delete pod -n <annotated_namespace> --all
$ oc delete pod -n <annotated_namespace> --allCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して Pod のステータスを確認します。
oc get pods -n <annotated_namespace>
$ oc get pods -n <annotated_namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
... NAME READY STATUS RESTARTS AGE example-registry-clair-app-5f95d685bd-dgjf6 1/1 Running 0 5m4s ...
... NAME READY STATUS RESTARTS AGE example-registry-clair-app-5f95d685bd-dgjf6 1/1 Running 0 5m4s ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第9章 デプロイメントプロセスの監視およびデバッグ リンクのコピーリンクがクリップボードにコピーされました!
ユーザーは、デプロイメントフェーズ中に問題のトラブルシューティングを行えるようになりました。QuayRegistry オブジェクトのステータスは、デプロイメント時にコンポーネントの正常性をモニターするのに役立ちます。これにより、発生する可能性のある問題のデバッグに役立ちます。
手順
次のコマンドを入力して、デプロイメントのステータスを確認します。
oc get quayregistry -n quay-enterprise -o yaml
$ oc get quayregistry -n quay-enterprise -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
デプロイメント直後に、
QuayRegistryオブジェクトに基本設定が表示されます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get podsコマンドを使用して、デプロイされたコンポーネントの現在の状態を表示します。oc get pods -n quay-enterprise
$ oc get pods -n quay-enterpriseCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow デプロイメントが進行中、
QuayRegistryオブジェクトに現在のステータスが表示されます。この場合、データベースの移行が行われ、その他のコンポーネントは完了するまで待機します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow デプロイメントプロセスが正常に終了すると、
QuayRegistryオブジェクトのステータスには正常でないコンポーネントは表示されません。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.1. OpenShift Container Platform コンソールからの Red Hat Quay のデプロイ リンクのコピーリンクがクリップボードにコピーされました!
-
namespace (例:
quay-enterprise) を作成します。 - Operators → Installed Operators を選択してから Quay Operator を選択し、Operator の詳細ビューに移動します。
- 'Provided API' の下にある 'Quay Registry' タイルの 'Create Instance' をクリックします。
-
オプションで、
QuayRegistryの 'Name' を変更します。これはレジストリーのホスト名に影響します。その他のフィールドはすべてデフォルトで入力されています。 -
'Create' をクリックし、Quay Operator によってデプロイされる
QuayRegistryを送信します。 -
QuayRegistryリストビューにリダイレクトされるはずです。作成したQuayRegistryをクリックし、詳細ビューを表示します。 - 'Registry Endpoint' の値が設定されたら、その値をクリックして UI で新規 Quay レジストリーにアクセスします。'Create Account' を選択して、ユーザーを作成し、サインインできるようになりました。
9.1.1. Red Hat Quay UI を使用した最初のユーザーの作成 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Quay UI で最初のユーザーを作成するには、次の手順を実行します。
この手順では、FEATURE_USER_CREATION 設定オプションが false に設定されていることを前提としています。False の場合、UI での Create Account 機能が無効になり、API を使用して最初のユーザーを作成する必要があります。
手順
- OpenShift Container Platform コンソールで、適切な namespace /プロジェクトを使用して Operators → Installed Operators に移動します。
新しくインストールされた
QuayRegistryオブジェクトをクリックして詳細を表示します。以下に例を示します。
-
Registry Endpointに値を設定したら、ブラウザーでこの URL に移動します。 Red Hat Quay レジストリー UI で Create Account を選択し、ユーザーを作成します。以下に例を示します。
Username、Password、Email の詳細を入力し、Create Account をクリックします。以下に例を示します。
最初のユーザーを作成すると、自動的に Red Hat Quay レジストリーにログインされます。以下に例を示します。
第10章 QuayRegistry オブジェクトのステータスの表示 リンクのコピーリンクがクリップボードにコピーされました!
特定の Red Hat Quay デプロイメントのライフサイクル可観測性は、対応する QuayRegistry オブジェクトの status セクションで報告されます。Red Hat Quay Operator はこのセクションを常に更新します。Red Hat Quay または管理対象の依存関係において問題や状態の変更がないかを確認する場合に、こちらの場所を最初に探すようにしてください。
10.1. レジストリーエンドポイントの表示 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Quay を使用する準備ができると、レジストリーの一般に利用可能なホスト名が status.registryEndpoint フィールドに設定されます。
10.2. 使用中の Red Hat Quay のバージョンの表示 リンクのコピーリンクがクリップボードにコピーされました!
実行中の Red Hat Quay の現行バージョンは status.currentVersion で報告されます。
10.3. Red Hat Quay デプロイメントの条件の表示 リンクのコピーリンクがクリップボードにコピーされました!
特定の条件は status.conditions で報告されます。
第11章 OpenShift Container Platform での Red Hat Quay のカスタマイズ リンクのコピーリンクがクリップボードにコピーされました!
デプロイメント後に、Red Hat Quay 設定バンドルシークレット spec.configBundleSecret を編集して Red Hat Quay アプリケーションをカスタマイズできます。QuayRegistry リソースの spec.components オブジェクトで、コンポーネントの管理ステータスを変更したり、一部のコンポーネントのリソース要求を設定したりすることもできます。
11.1. OpenShift Container Platform コンソールでの設定バンドルシークレットの編集 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform コンソールで設定バンドルシークレットを編集するには、次の手順を実行します。
手順
Red Hat Quay Registry の概要画面で、Config Bundle Secret のリンクをクリックします。
シークレットを編集するには、Actions → Edit Secret をクリックします。
設定を変更して保存します
- デプロイメントを監視して、正常に完了したこと、および設定の変更が反映されていることを確認します。
11.2. QuayRegistry エンドポイントおよびシークレットの決定 リンクのコピーリンクがクリップボードにコピーされました!
次の手順を実行して、QuayRegistry エンドポイントとシークレットを見つけます。
手順
現在のエンドポイントとシークレットを見つけるには、次のコマンドを入力し、
oc describe quayregistryまたはoc get quayregistry -o yamlを使用してQuayRegistryリソースを調べます。oc get quayregistry example-registry -n quay-enterprise -o yaml
$ oc get quayregistry example-registry -n quay-enterprise -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.3. 既存設定のダウンロード リンクのコピーリンクがクリップボードにコピーされました!
以下は、各種ストラテジーを使用して既存の設定をダウンロードするための手順です。
11.3.1. 設定バンドルのシークレットを使用して既存の設定をダウンロード リンクのコピーリンクがクリップボードにコピーされました!
設定バンドルのシークレットを使用して、既存の設定をダウンロードできます。
手順
次のコマンドを入力してシークレットデータを取得します。
oc get secret -n quay-enterprise init-config-bundle-secret -o jsonpath='{.data}'$ oc get secret -n quay-enterprise init-config-bundle-secret -o jsonpath='{.data}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
{ "config.yaml": "RkVBVFVSRV9VU0 ... MDAwMAo=" }{ "config.yaml": "RkVBVFVSRV9VU0 ... MDAwMAo=" }Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力してデータをデコードします。
echo 'RkVBVFVSRV9VU0 ... MDAwMAo=' | base64 --decode
$ echo 'RkVBVFVSRV9VU0 ... MDAwMAo=' | base64 --decodeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.4. 設定バンドルを使用したカスタム SSL/TLS 証明書の設定 リンクのコピーリンクがクリップボードにコピーされました!
カスタム SSL/TLS 証明書は、初期デプロイメントの前、または Red Hat Quay を OpenShift Container Platform にデプロイした後に設定できます。これは、設定バンドルのシークレットを作成または更新することで実行できます。
既存のデプロイメントに証明書を追加する場合は、設定を変更しない場合でも、新規の設定バンドルシークレットに既存の config.yaml を含める必要があります。
カスタム SSL/TLS 証明書を追加するには、次の手順を実行します。
手順
QuayRegistryYAML ファイルで、kind: tlsをmanage:falseに設定します。以下はその例です。- kind: tls managed: false- kind: tls managed: falseCopy to Clipboard Copied! Toggle word wrap Toggle overflow Events ページには、適切な設定が行われるまで変更がブロックされていることが表示されます。以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 埋め込みデータまたはファイルを使用してシークレットを作成します。
設定の詳細を
Secretリソース YAML ファイルに直接組み込みます。以下に例を示します。custom-ssl-config-bundle.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow YAML ファイルからシークレットを作成します。
oc create -f custom-ssl-config-bundle.yaml
$ oc create -f custom-ssl-config-bundle.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ..
または、必要な情報が含まれるファイルを作成し、そのファイルからシークレットを作成できます。
次のコマンドを入力して、
config.yamlファイルとcustom-ssl.crtファイルを含む汎用Secretオブジェクトを作成します。oc create secret generic custom-ssl-config-bundle-secret \ --from-file=config.yaml \ --from-file=extra_ca_cert_my-custom-ssl.crt=my-custom-ssl.crt
$ oc create secret generic custom-ssl-config-bundle-secret \ --from-file=config.yaml \ --from-file=extra_ca_cert_my-custom-ssl.crt=my-custom-ssl.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 作成された
Secretを参照するQuayRegistryYAML ファイルを作成または更新します。以下はその例です。QuayRegistryYAML ファイルの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力し、YAML ファイルを使用してレジストリーをデプロイまたは更新します。
oc apply -f quayregistry.yaml
$ oc apply -f quayregistry.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow