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 をクリックします。
-
目的のコンポーネントの
managedフィールドをTrueまたはFalseに調整します。 Save をクリックします。
注記コンポーネントを管理対象外 (
managed: false) に設定すると、追加の設定が必要になる場合があります。QuayRegistryCR で管理対象外コンポーネントを設定する方法は、依存関係への管理対象外コンポーネントの使用 を 参照してください。
5.3.2. CLI を使用して QuayRegistry CR を変更する リンクのコピーリンクがクリップボードにコピーされました!
QuayRegistry CR は CLI を使用して変更できます。これにより、管理対象コンポーネントを管理対象外 (managed: false) に設定し、独自のインフラストラクチャーを使用できるようになります。
前提条件
- 管理者権限を持つユーザーとして OpenShift Container Platform クラスターにログインしている。
手順
次のコマンドを入力して、
QuayRegistryCR を編集します。oc edit quayregistry <registry_name> -n <namespace>
$ oc edit quayregistry <registry_name> -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow QuayRegistryCR に必要な変更を加えます。注記コンポーネントを管理対象外 (
managed: false) に設定すると、追加の設定が必要になる場合があります。QuayRegistryCR で管理対象外コンポーネントを設定する方法は、依存関係への管理対象外コンポーネントの使用 を 参照してください。- 変更を保存します。
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) によって異なることに注意してください。
場合によっては、オブジェクトストレージなど、特定のコンポーネントを自身で管理することを選択できます。このシナリオでは、QuayRegistry CR を次のように変更します。
# ...
- kind: objectstorage
managed: false
# ...
# ...
- kind: objectstorage
managed: false
# ...
独自のコンポーネントを管理している場合は、そのコンポーネントに必要な情報またはリソースが含まれるようにデプロイメントを設定する必要があります。たとえば、objectstorage コンポーネントが managed: false に設定されている場合、config.yaml ファイル内に、ストレージプロバイダーに応じた関連情報を含めます。次の例は、Google Cloud Storage を使用した分散ストレージ設定を示しています。
同様に、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: - quayadminCopy 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 successfullyCopy 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.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
config.yamlファイルに必要な変更を加え、ファイルをconfig.yamlとして保存します。 次のコマンドを入力して、新しい
configBundleSecretYAML を作成します。touch <new_configBundleSecret_name>.yaml
$ touch <new_configBundleSecret_name>.yamlCopy 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> \ --dry-run=client -o yaml > <new_configBundleSecret_name>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
- </path/to/config.yaml>
-
base64 デコードされた
config.yamlファイルを指定します。
次のコマンドを入力して、
configBundleSecretリソースを作成します。oc create -n <namespace> -f <new_configBundleSecret_name>.yaml
$ oc create -n <namespace> -f <new_configBundleSecret_name>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow secret/config-bundle created
secret/config-bundle createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、新しい
configBundleSecretオブジェクトを参照するようにQuayRegistryYAML ファイルを更新します。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 patchedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
QuayRegistryCR が新しい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 が自動的に変更を調整します。