5.3. デプロイメント後の QuayRegistry CR の変更
Red Hat Quay Operator をインストールして初期デプロイメントを作成した後、QuayRegistry
カスタムリソース(CR)を変更して Red Hat Quay 環境の要素をカスタマイズまたは再設定できます。
Red Hat Quay 管理者は、次の理由により QuayRegistry CR を変更する場合があります。
-
独自のインフラストラクチャーを使用 するには、コンポーネント管理: コンポーネントを
managed: true
からmanaged: false
に切り替えます。たとえば、kind: objectstorage
を unmanaged に設定して、Google Cloud Storage や Nutanix などの外部オブジェクトストレージプラットフォームを統合することができます。 -
カスタム設定を適用する:
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
)に設定し、独自のインフラストラクチャーを使用できます。
前提条件
- admin 権限を持つユーザーとして 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
)に設定し、独自のインフラストラクチャーを使用できます。
前提条件
- cluster-admin 権限を持つユーザーとして OpenShift Container Platform クラスターにログインしている。
手順
次のコマンドを入力して、
QuayRegistry
CR を編集します。oc edit quayregistry <registry_name> -n <namespace>
$ oc edit quayregistry <registry_name> -n <namespace>
Copy to Clipboard Copied! QuayRegistry
CR に必要な変更を加えます。注記コンポーネントを管理対象外(
managed: false
)に設定すると、追加の設定が必要になる場合があります。QuayRegistry
CR で管理対象外コンポーネントを設定する方法は、依存関係への管理対象外コンポーネントの使用 を 参照してください。- 変更を保存します。
5.3.3. configBundleSecret について
spec.configBundleSecret
フィールドは、QuayRegistry リソースと同じ namespace にある Secret の metadata.name
への参照です。この Secret には config.yaml
のキー/値のペアが含まれる必要があります。この値は Red Hat Quay 設定ファイルです。
configBundleSecret
は、config.yaml
ファイルを保存します。Red Hat Quay 管理者は、config.yaml
ファイルを使用して以下の設定を定義できます。
- 認証バックエンド(OIDC、LDAP など)
- 外部 TLS ターミネーションの設定
- リポジトリー作成ポリシー
- 機能フラグ
- 通知設定
Red Hat Quay は、次の理由でこのシークレットを更新する場合があります。
- 新しい認証方法を有効にする
- カスタム SSL/TLS 証明書 UI
- 機能の有効化
- セキュリティースキャン設定の変更
このフィールドを省略すると、Red Hat Quay Operator はデフォルト値と管理コンポーネント設定に基づいて設定シークレットを自動的に生成します。フィールドを指定すると、config.yaml
の内容は基本設定として使用され、マネージドコンポーネントの値にマージされ、quay
アプリケーション Pod にマウントされる最終的な設定を形成します。
QuayRegistry
CR の設定方法によって、OpenShift Container Platform の Red Hat Quay の configBundleSecrets にどのフィールドを含める必要があるかが決まります
。次の例は、すべてのコンポーネントが Operator によって管理されている場合のデフォルトの config.yaml
ファイルを示しています。この例は、コンポーネントが管理対象か管理対象外か(managed: false
)によって異なることに注意してください。
Operator によって管理されるすべてのコンポーネントを含む YAML の例
ALLOW_PULLS_WITHOUT_STRICT_LOGGING: false AUTHENTICATION_TYPE: Database DEFAULT_TAG_EXPIRATION: 2w ENTERPRISE_LOGO_URL: /static/img/RH_Logo_Quay_Black_UX-horizontal.svg FEATURE_BUILD_SUPPORT: false FEATURE_DIRECT_LOGIN: true FEATURE_MAILING: false REGISTRY_TITLE: Red Hat Quay REGISTRY_TITLE_SHORT: Red Hat Quay SETUP_COMPLETE: true TAG_EXPIRATION_OPTIONS: - 2w TEAM_RESYNC_STALE_TIME: 60m TESTING: false
ALLOW_PULLS_WITHOUT_STRICT_LOGGING: false
AUTHENTICATION_TYPE: Database
DEFAULT_TAG_EXPIRATION: 2w
ENTERPRISE_LOGO_URL: /static/img/RH_Logo_Quay_Black_UX-horizontal.svg
FEATURE_BUILD_SUPPORT: false
FEATURE_DIRECT_LOGIN: true
FEATURE_MAILING: false
REGISTRY_TITLE: Red Hat Quay
REGISTRY_TITLE_SHORT: Red Hat Quay
SETUP_COMPLETE: true
TAG_EXPIRATION_OPTIONS:
- 2w
TEAM_RESYNC_STALE_TIME: 60m
TESTING: false
場合によっては、オブジェクトストレージなど、特定のコンポーネントを独自に管理することもできます。このシナリオでは、QuayRegistry
CR を次のように変更します。
管理対象外のオブジェクトストレージコンポーネント
# ... - kind: objectstorage managed: false # ...
# ...
- kind: objectstorage
managed: false
# ...
独自のコンポーネントを管理する場合は、そのコンポーネントに必要な情報またはリソースを含めるようにデプロイメントを設定する必要があります。たとえば、objectstorage
コンポーネントが managed: false
に設定されている場合は、config.yaml
ファイル内にストレージプロバイダーに応じて関連情報が含まれます。次の例は、Google Cloud Storage を使用した分散ストレージ設定を示しています。
objectstorage が管理対象外の場合に必要な情報
# ... DISTRIBUTED_STORAGE_CONFIG: default: - GoogleCloudStorage - access_key: <access_key> bucket_name: <bucket_name> secret_key: <secret_key> storage_path: /datastorage/registry # ...
# ...
DISTRIBUTED_STORAGE_CONFIG:
default:
- GoogleCloudStorage
- access_key: <access_key>
bucket_name: <bucket_name>
secret_key: <secret_key>
storage_path: /datastorage/registry
# ...
同様に、Horizontalpodautoscaler
コンポーネントを管理する場合は、付随する HorizontalPodAutoscaler
カスタムリソース を作成する必要があります。
5.3.3.1. OpenShift Container Platform Web コンソールを使用した設定ファイルの変更
以下の手順を使用して、OpenShift Container Platform Web コンソールを使用して configBundleSecret
によって保存される config.yaml
ファイルを変更します。
前提条件
- cluster-admin 権限を持つユーザーとして OpenShift Container Platform クラスターにログインしている。
手順
-
OpenShift Container Platform Web コンソールで、Operator
Installed Operator Quay Registry をクリックします。 - Quay Registry をクリックします。
- Red Hat Quay レジストリーの名前をクリックします(例: example-registry )。
- QuayRegistry details ページで、Config Bundle Secret の名前をクリックします(例: example-registry-config-bundle )。
-
Actions
Edit Secret をクリックします。 Value ボックスに、必要なキー/値のペアを追加します。たとえば、OpenShift Container Platform デプロイメントの Red Hat Quay にスーパーユーザーを追加するには、以下のリファレンスを追加します。
SUPER_USERS: - quayadmin
SUPER_USERS: - quayadmin
Copy to Clipboard Copied! - Save をクリックします。
検証
変更が受け入れられたことを確認します。
-
OpenShift Container Platform Web コンソールで、Operator
Installed Operator Quay Registry をクリックします。 - Quay Registry をクリックします。
- Red Hat Quay レジストリーの名前をクリックします(例: example-registry )。
Events をクリックします。成功すると、次のメッセージが表示されます。
All objects created/updated successfully
All objects created/updated successfully
Copy to Clipboard Copied!
-
OpenShift Container Platform Web コンソールで、Operator
シークレットに配置する前に、更新された config.yaml を 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
ファイルの変更は、既存の設定ファイルのデコードと変更のアップロードが必要な複数ステップの手順です。ほとんどの場合、OpenShift Container Platform Web コンソールを使用して config.yaml
ファイルに変更を加える方が簡単です。
前提条件
- cluster-admin 権限を持つユーザーとして OpenShift Container Platform クラスターにログインしている。
手順
次のコマンドを入力して、
QuayRegistry
リソースを記述します。oc describe quayregistry -n <quay_namespace>
$ oc describe quayregistry -n <quay_namespace>
Copy to Clipboard Copied! ... ...
# ... Config Bundle Secret: example-registry-config-bundle-v123x # ...
Copy to Clipboard Copied! 次のコマンドを入力してシークレットデータを取得します。
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! 出力例
{ "config.yaml": "RkVBVFVSRV9VU0 ... MDAwMAo=" }
{ "config.yaml": "RkVBVFVSRV9VU0 ... MDAwMAo=" }
Copy to Clipboard Copied! >> config.yaml
フラグを渡すことで、データを現在のディレクトリーの YAML ファイルにエクスポートできます。以下に例を示します。echo 'RkVBVFVSRV9VU0 ... MDAwMAo=' | base64 --decode >> config.yaml
$ echo 'RkVBVFVSRV9VU0 ... MDAwMAo=' | base64 --decode >> config.yaml
Copy to Clipboard Copied! -
config.yaml
ファイルに必要な変更を加え、ファイルをconfig.yaml
として保存します。 次のコマンドを入力して、新しい
configBundleSecret
YAML を作成します。touch <new_configBundleSecret_name>.yaml
$ touch <new_configBundleSecret_name>.yaml
Copy to Clipboard Copied! 次のコマンドを入力して、新しい
configBundleSecret
リソースを作成し、config.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>.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! - 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! 出力例
secret/config-bundle created
secret/config-bundle created
Copy to Clipboard Copied! 次のコマンドを入力して、
QuayRegistry
YAML ファイルを更新して、新しいconfigBundleSecret
オブジェクトを参照します。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! 出力例
quayregistry.quay.redhat.com/example-registry patched
quayregistry.quay.redhat.com/example-registry patched
Copy to Clipboard Copied!
検証
QuayRegistry
CR が新規のconfigBundleSecret
で更新されていることを確認します。oc describe quayregistry -n <quay_namespace>
$ oc describe quayregistry -n <quay_namespace>
Copy to Clipboard Copied! 出力例
... ...
# ... Config Bundle Secret: <new_configBundleSecret_name> # ...
Copy to Clipboard Copied! レジストリーにパッチを適用した後、Red Hat Quay Operator は変更を自動的に調整します。