3.2. Quay コンポーネント

Quay は強力なコンテナーレジストリープラットフォームであるため、十分な数の依存関係が必要となります。これらには、データベース、オブジェクトストレージ、Redis などが含まれます。Quay Operator は、Kubernetes 上で Quay とその依存関係に指向したデプロイメントを管理します。これらの依存関係は コンポーネント として処理され、QuayRegistry API で設定されます。

QuayRegistry カスタムリソースでは、spec.components フィールドでコンポーネントを設定します。各コンポーネントには、kind (コンポーネントの名前) と managed (コンポーネントのライフサイクルを Operator が処理するかどうかを示すブール値) の 2 つのフィールドがあります。デフォルトでは (このフィールドを省略)、すべてのコンポーネントが管理され、調整時に表示できるように自動的に入力されます。

spec:
  components:
    - managed: true
      kind: clair
    - managed: true
      kind: postgres
    - managed: true
      kind: objectstorage
    - managed: true
      kind: redis
    - managed: true
      kind: horizontalpodautoscaler
    - managed: true
      kind: route
    - managed: true
      kind: mirror
    - managed: true
      kind: monitoring

QuayRegistry カスタムリソースが 指定しない場合、Operator は以下の管理コンポーネントについてデフォルトを使用します。

  • postgres はレジストリーのメタデータを保存します。Software Collections から Postgres 10 のバージョンを使用します。
  • redis は Quay ビルダーの調整および一部のロギングを処理します。
  • objectstorage はイメージ レイヤー Blob を保存します。Noobaa/RHOCS によって提供される ObjectBucketClaim Kubernetes API を活用します。
  • clair はイメージの脆弱性スキャンを提供します。
  • horizontalpodautoscaler は、メモリー/CPU の消費に応じて Quay Pod 数を調整します。
  • mirror は、リポジトリーミラーワーカーを設定します (オプションのリポジトリーミラーリングをサポートするため)。
  • route は、OpenShift の外部から Quay レジストリーへの外部エントリーポイントを提供します。
  • モニターリング機能 には、Grafana ダッシュボード、個別のメトリクスへのアクセス、Quay Pod が頻繁に再起動されていることを通知するアラートなどが含まれます。