5.3. デプロイメント後の QuayRegistry CR の変更
Red Hat Quay Operator をインストールし、初期デプロイメントを作成した後、QuayRegistry
カスタムリソース (CR) を変更して、Red Hat Quay 環境の側面をカスタマイズまたは再設定できます。
Red Hat Quay 管理者は、以下の理由で QuayRegistry CR を変更する場合があります。
-
コンポーネント管理を変更する場合: 独自のインフラストラクチャーを導入するために、コンポーネントを
managed: true
からmanaged: false
に切り替えます。たとえば、Google Cloud Storage や Nutanix などの外部オブジェクトストレージプラットフォームを統合するには、kind: objectstorage
を unmanaged に設定できます。 -
カスタム設定を適用する場合:
configBundleSecret
を更新または置き換えて、認証プロバイダー、外部 SSL/TLS 設定、機能フラグなどの新しい設定を適用します。 -
機能を有効または無効にする場合:
spec.components
リストを変更して、リポジトリーミラーリング、Clair のスキャン、水平 Pod の自動スケーリングなどの機能を切り替えます。 - デプロイメントをスケーリングする場合: Quay アプリケーションの環境変数またはレプリカ数を調整します。
- 外部サービスと統合する場合: 外部の PostgreSQL、Redis、または Clair データベースの設定を提供し、エンドポイントまたは認証情報を更新します。
5.3.1. OpenShift Container Platform Web コンソールを使用して QuayRegistry CR を変更する リンクのコピーリンクがクリップボードにコピーされました!
QuayRegistry
は、OpenShift Container Platform Web コンソールを使用して変更できます。これにより、管理対象コンポーネントを管理対象外 (managed: false
) に設定し、独自のインフラストラクチャーを使用できるようになります。
前提条件
- 管理者権限を持つユーザーとして OpenShift Container Platform にログインしている。
- Red Hat Quay Operator をインストールしている。
手順
-
OpenShift Container Platform Web コンソールで、Operators
Installed Operators をクリックします。 - Red Hat Quay をクリックします。
- Quay Registry をクリックします。
- Red Hat Quay レジストリーの名前 (例: example-registry) をクリックします。
- YAML をクリックします。
-
目的のコンポーネントの
管理
フィールドをTrue
またはFalse
に調整します。 Save をクリックします。
注記コンポーネントを管理対象外 (
managed: false
) に設定すると、追加の設定が必要になる場合があります。QuayRegistry
CR での管理されていないコンポーネントの設定の詳細は、依存関係に管理されていないコンポーネントを使用するを 参照してください。
5.3.2. CLI を使用して QuayRegistry CR を変更する リンクのコピーリンクがクリップボードにコピーされました!
QuayRegistry
CR は CLI を使用して変更できます。これにより、管理対象コンポーネントを管理対象外 (managed: false
) に設定し、独自のインフラストラクチャーを使用できるようになります。
前提条件
- 管理者権限を持つユーザーとして OpenShift Container Platform クラスターにログインしている。
手順
次のコマンドを入力して、
QuayRegistry
CR を編集します。oc edit quayregistry <registry_name> -n <namespace>
$ oc edit quayregistry <registry_name> -n <namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow QuayRegistry
CR に必要な変更を加えます。注記コンポーネントを管理対象外 (
managed: false
) に設定すると、追加の設定が必要になる場合があります。QuayRegistry
CR での管理されていないコンポーネントの設定の詳細は、依存関係に管理されていないコンポーネントを使用するを 参照してください。- 変更を保存します。
5.3.3. configBundleSecret について リンクのコピーリンクがクリップボードにコピーされました!
spec.configBundleSecret
フィールドは、QuayRegistry
リソースと同じ namespace 内の Secret の名前へのオプションの参照です。この Secret には、config.yaml
キー/値のペアが含まれている必要があります。値は Red Hat Quay 設定ファイルです。
configBundleSecret
には config.yaml
ファイルが保存されます。Red Hat Quay 管理者は、config.yaml
ファイルを通じて次の設定を定義できます。
- 認証バックエンド (OIDC、LDAP など)
- 外部 TLS Termination 設定
- リポジトリー作成ポリシー
- 機能フラグ
- 通知設定
Red Hat Quay は、以下の理由でこのシークレットを更新する可能性があります。
- 新しい認証方法の有効化
- カスタム SSL/TLS 証明書の追加
- 機能の有効化
- セキュリティースキャン設定の変更
このフィールドを省略すると、Red Hat Quay Operator はデフォルト値と管理対象コンポーネントの設定に基づいて、設定シークレットを自動的に生成します。フィールドが指定されている場合、config.yaml
の内容が基本設定として使用され、管理対象コンポーネントの値とマージされて最終的な設定が形成され、それが quay
アプリケーション Pod にマウントされます。
QuayRegistry
CR の設定方法によって、Red Hat Quay on OpenShift Container Platform の configBundleSecret’s `config.yaml
ファイルに含める必要があるフィールドが決まります。次の例は、すべてのコンポーネントが Operator によって管理される場合のデフォルトの config.yaml
ファイルを示しています。この例は、コンポーネントが管理対象であるか管理対象外であるか (managed: false
) によって異なることに注意してください。
Operator によって管理されるすべてのコンポーネントを含む YAML サンプル
場合によっては、オブジェクトストレージなど、特定のコンポーネントを自身で管理することを選択できます。このシナリオでは、QuayRegistry
CR を次のように変更します。
管理対象外 objectstorage コンポーネント
# ... - kind: objectstorage managed: false # ...
# ...
- kind: objectstorage
managed: false
# ...
独自のコンポーネントを管理している場合は、そのコンポーネントに必要な情報またはリソースが含まれるようにデプロイメントを設定する必要があります。たとえば、objectstorage
コンポーネントが managed: false
に設定されている場合、config.yaml
ファイル内に、ストレージプロバイダーに応じた関連情報を含めます。次の例は、Google Cloud Storage を使用した分散ストレージ設定を示しています。
objectstorage が管理対象外の場合に必要な情報
同様に、horizontalpodautoscaler
コンポーネントを管理している場合は、付随する HorizontalPodAutoscaler
カスタムリソース を作成する必要があります。
5.3.3.1. OpenShift Container Platform Web コンソールを使用して設定ファイルを変更する リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform Web コンソールを使用して、configBundleSecret
によって保存される config.yaml
ファイルを変更するには、次の手順に従います。
前提条件
- 管理者権限を持つユーザーとして OpenShift Container Platform クラスターにログインしている。
手順
-
OpenShift Container Platform Web コンソールで、Operators
Installed Operators Red Hat Quay をクリックします。 - Quay Registry をクリックします。
- Red Hat Quay レジストリーの名前 (例: example-registry) をクリックします。
- QuayRegistry details ページで、Config Bundle Secret の名前 (例: example-registry-config-bundle) をクリックします。
-
Actions
Edit Secret をクリックします。 Value ボックスに、必要なキーと値のペアを追加します。たとえば、Red Hat Quay on OpenShift Container Platform デプロイメントにスーパーユーザーを追加するには、次の参照を追加します。
SUPER_USERS: - quayadmin
SUPER_USERS: - quayadmin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Save をクリックします。
検証
変更が承認されたことを確認します。
-
OpenShift Container Platform Web コンソールで、Operators
Installed Operators Red Hat Quay をクリックします。 - Quay Registry をクリックします。
- Red Hat Quay レジストリーの名前 (例: example-registry) をクリックします。
Events をクリックします。成功すると、次のメッセージが表示されます。
All objects created/updated successfully
All objects created/updated successfully
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
OpenShift Container Platform Web コンソールで、Operators
更新された config.yaml を Secret に配置する前に、base64 でエンコードする必要があります。Secret 名が spec.configBundleSecret で指定された値と一致していることを確認します。Secret が更新されると、Operator は変更を検出し、Red Hat Quay Pod に更新を自動的にロールアウトします。
詳細な手順については、「Red Hat Quay UI を使用した設定シークレットの更新」を参照してください。
5.3.3.2. CLI を使用して設定ファイルを変更する リンクのコピーリンクがクリップボードにコピーされました!
CLI を使用して既存の設定をダウンロードすることにより、configBundleSecret
によって保存されている config.yaml
ファイルを変更できます。変更を加えた後、configBundleSecret
リソースを再度アップロードして、Red Hat Quay レジストリーに変更を加えることができます。
configBundleSecret
リソースによって保存される config.yaml
ファイルを変更するには、既存の設定ファイルを base64 でデコードした後に変更をアップロードするという、複数のステップからなる手順が必要です。ほとんどの場合、OpenShift Container Platform Web コンソールを使用して config.yaml
ファイルに変更を加える方が簡単です。
前提条件
- 管理者権限を持つユーザーとして OpenShift Container Platform クラスターにログインしている。
手順
次のコマンドを入力して、
QuayRegistry
リソースを記述します。oc describe quayregistry -n <quay_namespace>
$ oc describe quayregistry -n <quay_namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ... ...
# ... Config Bundle Secret: example-registry-config-bundle-v123x # ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力してシークレットデータを取得します。
oc get secret -n <quay_namespace> <example-registry-config-bundle-v123x> -o jsonpath='{.data}'
$ oc get secret -n <quay_namespace> <example-registry-config-bundle-v123x> -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 >> config.yaml
フラグを渡して、データをカレントディレクトリーの YAML ファイルにデコードします。以下に例を示します。echo 'RkVBVFVSRV9VU0 ... MDAwMAo=' | base64 --decode >> config.yaml
$ echo 'RkVBVFVSRV9VU0 ... MDAwMAo=' | base64 --decode >> config.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
config.yaml
ファイルに必要な変更を加え、ファイルをconfig.yaml
として保存します。 次のコマンドを入力して、新しい
configBundleSecret
YAML を作成します。touch <new_configBundleSecret_name>.yaml
$ touch <new_configBundleSecret_name>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力し、
config.yaml
ファイルを渡して新しいconfigBundleSecret
リソースを作成します。oc -n <namespace> create secret generic <secret_name> \ --from-file=config.yaml=</path/to/config.yaml> \ --dry-run=client -o yaml > <new_configBundleSecret_name>.yaml
$ oc -n <namespace> create secret generic <secret_name> \ --from-file=config.yaml=</path/to/config.yaml> \
1 --dry-run=client -o yaml > <new_configBundleSecret_name>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<config.yaml>
はbase64 でデコード
されたconfig.yaml
ファイルです。
次のコマンドを入力して、
configBundleSecret
リソースを作成します。oc create -n <namespace> -f <new_configBundleSecret_name>.yaml
$ oc create -n <namespace> -f <new_configBundleSecret_name>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
secret/config-bundle created
secret/config-bundle created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、新しい
configBundleSecret
オブジェクトを参照するようにQuayRegistry
YAML ファイルを更新します。oc patch quayregistry <registry_name> -n <namespace> --type=merge -p '{"spec":{"configBundleSecret":"<new_configBundleSecret_name>"}}'
$ oc patch quayregistry <registry_name> -n <namespace> --type=merge -p '{"spec":{"configBundleSecret":"<new_configBundleSecret_name>"}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
quayregistry.quay.redhat.com/example-registry patched
quayregistry.quay.redhat.com/example-registry patched
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
QuayRegistry
CR が新しいconfigBundleSecret
で更新されていることを確認します。oc describe quayregistry -n <quay_namespace>
$ oc describe quayregistry -n <quay_namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
... ...
# ... Config Bundle Secret: <new_configBundleSecret_name> # ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow レジストリーにパッチを適用すると、Red Hat Quay Operator が自動的に変更を調整します。