6.2. 外部 Redis の設定
このセクションの内容に沿って、外部 Redis デプロイメントをセットアップします。
6.2.1. 管理対象外 Redis データベースの使用
外部 Redis データベースをセットアップするには、次の手順を実行します。
手順
次の Redis フィールドを使用して
config.yaml
ファイルを作成します。# ... BUILDLOGS_REDIS: host: <quay-server.example.com> port: 6379 ssl: false # ... USER_EVENTS_REDIS: host: <quay-server.example.com> port: 6379 ssl: false # ...
次のコマンドを入力して、設定ファイルを使用してシークレットを作成します。
$ oc create secret generic --from-file config.yaml=./config.yaml config-bundle-secret
Redis コンポーネントを
unmanaged
に設定し、作成されたシークレットを参照するquayregistry.yaml
ファイルを作成します。apiVersion: quay.redhat.com/v1 kind: QuayRegistry metadata: name: example-registry namespace: quay-enterprise spec: configBundleSecret: config-bundle-secret components: - kind: redis managed: false # ...
- 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 の更新または再設定時、またはイベントの再スケジューリング中のダウンタイムを容易に回避できます。
HorizontalPodAutoscaler
コンポーネントを無効にして、HPA リソース自体を編集し、minReplicas
フィールドの値を増やそうとすると、既知の問題が発生します。このセットアップを試行すると、Quay
アプリケーション Pod は管理されていない HPA によりスケールアウトされ、60 秒後にレプリカ数が Red Hat Quay Operator により調整されます。その結果、HPA Pod は Operator によって継続的に作成され、削除されます。
この問題を解決するには、Red Hat Quay デプロイメントを少なくともバージョン 3.12.5 または 3.13.1 にアップグレードし、次の例を使用して問題を回避する必要があります。
この問題は、Red Hat Quay の将来のバージョンで修正される予定です。詳細は、PROJQUAY-6474 を参照してください。
6.2.2.1. Horizontal Pod Autoscaler の無効化
自動スケーリングを無効にするか、独自の HorizontalPodAutoscaler
コンポーネントを作成するには、QuayRegistry
カスタムリソース定義でコンポーネントを unmanaged
として指定します。上記の既知の問題を回避するには、QuayRegistry
CRD オブジェクトを変更し、quay
、clair
、および mirror
コンポーネントのレプリカを null
に設定する必要があります。
手順
QuayRegistry
CRD を編集して、quay
コンポーネントの場合は、次のreplicas: null
を含めます。$ oc edit quayregistry <quay_registry_name> -n <quay_namespace>
apiVersion: quay.redhat.com/v1 kind: QuayRegistry metadata: name: quay-registry namespace: quay-enterprise spec: components: - kind: horizontalpodautoscaler managed: false - kind: quay managed: true overrides: replicas: null 1 - kind: clair managed: true overrides: replicas: null - kind: mirror managed: true overrides: replicas: null # ...
- 1
QuayRegistry
CRD でreplicas: null
を設定すると、Quay
アプリケーションのデプロイメントマニフェストがreplicas: 1
に変更されるため、新しいレプリカセットが生成される場合があります。
検証
カスタマイズされた
HorizontalPodAutoscalers
CRD を作成し、minReplicas
の量をより高い値 (たとえば3
) に増やします。kind: HorizontalPodAutoscaler apiVersion: autoscaling/v2 metadata: name: quay-registry-quay-app namespace: quay-enterprise spec: scaleTargetRef: kind: Deployment name: quay-registry-quay-app apiVersion: apps/v1 minReplicas: 3 maxReplicas: 20 metrics: - type: Resource resource: name: memory target: type: Utilization averageUtilization: 90 - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 90
次のコマンドを入力して、
QuayRegistry
アプリケーションが正常に起動したことを確認します。$ oc get pod | grep quay-app
出力例
quay-registry-quay-app-5b8fd49d6b-7wvbk 1/1 Running 0 34m quay-registry-quay-app-5b8fd49d6b-jslq9 1/1 Running 0 3m42s quay-registry-quay-app-5b8fd49d6b-pskpz 1/1 Running 0 43m quay-registry-quay-app-upgrade-llctl 0/1 Completed 0 51m
次のコマンドを入力して、
HorizontalPodAutoscalers
が正常に起動していることを確認します。$ oc get hpa
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE quay-registry-quay-app Deployment/quay-registry-quay-app 67%/90%, 54%/90% 3 20 3 51m
6.2.3. Route コンポーネントの無効化
Red Hat Quay Operator がルートを作成できないようにするには、次の手順を使用します。
手順
コンポーネントを
quayregistry.yaml
ファイルでmanaged: false
と設定します。apiVersion: quay.redhat.com/v1 kind: QuayRegistry metadata: name: example-registry namespace: quay-enterprise spec: components: - kind: route managed: false
config.yaml
ファイルを編集して、Red Hat Quay が SSL/TLS を処理するように指定します。以下に例を示します。# ... EXTERNAL_TLS_TERMINATION: false # ... SERVER_HOSTNAME: example-registry-quay-quay-enterprise.apps.user1.example.com # ... PREFERRED_URL_SCHEME: https # ...
管理対象外ルートを正しく設定しないと、次のエラーが返されます。
{ { "kind":"QuayRegistry", "namespace":"quay-enterprise", "name":"example-registry", "uid":"d5879ba5-cc92-406c-ba62-8b19cf56d4aa", "apiVersion":"quay.redhat.com/v1", "resourceVersion":"2418527" }, "reason":"ConfigInvalid", "message":"required component `route` marked as unmanaged, but `configBundleSecret` is missing necessary fields" }
デフォルトルートを無効にするということは、Red Hat Quay インスタンスにアクセスするために Route
、Service
、または Ingress
を作成する必要があることを意味します。さらに、使用する DNS は Red Hat Quay 設定の SERVER_HOSTNAME
と一致する必要があります。
6.2.4. モニタリングコンポーネントの無効化
Red Hat Quay Operator を単一の namaspace にインストールすると、モニタリングコンポーネントは自動的に managed: false
に設定されます。監視を明示的に無効にするには、次の参照を使用してください。
管理対象外のモニタリング
apiVersion: quay.redhat.com/v1 kind: QuayRegistry metadata: name: example-registry namespace: quay-enterprise spec: components: - kind: monitoring managed: false
Red Hat Quay Operator が単一の名前空間にインストールされている場合、監視を有効にすることはできません。
6.2.5. ミラーリングコンポーネントの無効化
ミラーリングを無効にするには、次の YAML 設定を使用します。
管理対象外ミラーリングの YAML 設定の例
apiVersion: quay.redhat.com/v1 kind: QuayRegistry metadata: name: example-registry namespace: quay-enterprise spec: components: - kind: mirroring managed: false