1.3. config.yaml ファイルを編集して Red Hat Quay の変更

Config Tool では使用できない一部の高度な設定機能は、config.yaml ファイルを直接編集することで実装できます。利用可能な設定は、Red Hat Quay 設定のスキーマ で説明します。

次の例は、config.yaml ファイルで直接変更できる設定です。

1.3.1. Red Hat Quay のサインインに名前と会社を追加

次のフィールドを設定すると、ユーザーは最初のサインイン時に名前と会社の入力を求められます。これはオプションのフィールドですが、Red Hat Quay ユーザーに関する追加データを提供できます。

---
FEATURE_USER_METADATA: true
---

1.3.2. TLS プロトコルの無効化

SSL_PROTOCOLS 設定を変更して、Red Hat Quay インスタンスでサポートしない SSL プロトコルを削除できます。たとえば、デフォルトの SSL_PROTOCOLS:['TLSv1','TLSv1.1','TLSv1.2'] から TLS v1 のサポートを削除するには、以下のように変更します。

---
SSL_PROTOCOLS : ['TLSv1.1','TLSv1.2']
---

1.3.3. API コールのレート制限

config.yaml ファイルに FEATURE_RATE_LIMITS パラメーターを追加すると、nginx は特定の API 呼び出しを 1 秒あたり 30 回に制限します。FEATURE_RATE_LIMITS が設定されていない場合、API 呼び出しは 1 秒あたり 300 回に制限され、実質的に無制限になります。

レート制限は、使用可能なリソースがトラフィックで圧倒されないようにする必要がある場合に重要です。

一部の名前空間は、CI/CD にとって重要であり、優先される場合など、無制限のアクセスが必要になる場合があります。このシナリオでは、これらの名前空間は、NON_RATE_LIMITED_NAMESPACES を使用して config.yaml ファイルのリストに配置される場合があります。

1.3.4. データベースのコネクションプールの調整

Red Hat Quay は、すべてが同じコンテナー内で実行する多くの異なるプロセスで設定されています。これらのプロセスの多くは、データベースと連動しています。

DB_CONNECTION_POOLING パラメーターを使用すると、データベースと対話する各プロセスに接続プールが含まれます。これらのプロセスごとの接続プールは、最大 20 の接続を維持するように設定されます。高負荷時には、Red Hat Quay コンテナー内のすべてのプロセスの接続プールを満たすことが可能です。特定のデプロイメントや負荷の下では、Red Hat Quay がデータベースの設定された最大接続数を超えないようにするために分析が必要になる場合があります。

時間が経つと、接続プールはアイドル接続を解放します。すべての接続をすぐに解除するには、Red Hat Quay の再起動が必要です。

DB_CONNECTION_POOLINGtrue または false に設定することで、データベース接続プールを切り替えることができます。以下に例を示します。

---
DB_CONNECTION_POOLING: true
---

DB_CONNECTION_POOLING が有効になっている場合、config.yamlDB_CONNECTION_ARGS で接続プールの最大サイズを変更できます。以下に例を示します。

---
DB_CONNECTION_ARGS:
  max_connections: 10
---

1.3.4.1. データベース接続引数

Red Hat Quay のデータベース接続設定は、config.yaml ファイル内でカスタマイズすることができます。これらは、デプロイメントのデータベースドライバー (Postgres の場合は psycopg2、MySQL の場合は pymysql など) に依存します。Peewee の接続プールメカニズムで使用される引数を渡すこともできます。以下に例を示します。

---
DB_CONNECTION_ARGS:
  max_connections: n  # Max Connection Pool size. (Connection Pooling only)
  timeout: n  # Time to hold on to connections. (Connection Pooling only)
  stale_timeout: n  # Number of seconds to block when the pool is full. (Connection Pooling only)
---

1.3.4.2. データベース SSL 設定

DB_CONNECTION_ARGS フィールドで定義されているキーと値のペアには、一般的なものもあれば、データベース固有のものもあります。特に、SSL 設定は、デプロイするデータベースによって異なります。

1.3.4.2.1. PostgreSQL SSL 接続引数

次の YAML は、サンプルの PostgreSQL SSL 設定を示しています。

---
DB_CONNECTION_ARGS:
  sslmode: verify-ca
  sslrootcert: /path/to/cacert
---

sslmode パラメーターは、安全な SSL TCP/IP 接続がサーバーにネゴシエートされるかどうか、その優先度を決定します。sslmode パラメーターには 6 つのモードがあります。

  • disabl: SSL 以外の接続のみを試行します。
  • allow: 最初に SSL 以外の接続を試行します。失敗した場合は、SSL 接続を試みます。
  • prefer: デフォルト。最初に SSL 接続を試してください。失敗した場合は、SSL 以外の接続を試してください。
  • require: SSL 接続のみを試行します。ルート CA ファイルが存在する場合は、verify-ca が指定された場合と同じ方法で接続を検証します。
  • verify-ca: SSL 接続のみを試行し、信頼された認証局 (CA) によりサーバー証明書が発行されていることを確認します。
  • verify-full: SSL 接続のみを試行します。信頼された CA によりサーバー証明書が発行され、要求されたサーバーのホスト名が証明書のホスト名と一致することを確認します。

PostgreSQL の有効な引数の詳細は、Database Connection Control Functions を参照してください。

1.3.4.2.2. MySQL SSL 接続引数

次の YAML は、サンプルの MySQL SSL 設定を示しています。

---
DB_CONNECTION_ARGS:
  ssl:
    ca: /path/to/cacert
---

MySQL の有効な接続引数の詳細については、Connecting to the Server Using URI-Like Strings or Key-Value Pairs を参照してください。

1.3.4.3. HTTP 接続回数

環境変数を使用して、HTTP の同時接続数を指定することができます。環境変数は、全体として、または特定のコンポーネントに対して指定できます。それぞれのデフォルトは、1 プロセスあたり 50 並列接続です。環境変数の例については、次の YAML を参照してください。

---
WORKER_CONNECTION_COUNT_REGISTRY=n
WORKER_CONNECTION_COUNT_WEB=n
WORKER_CONNECTION_COUNT_SECSCAN=n
WORKER_CONNECTION_COUNT=n
---
注記

特定のコンポーネントの数を指定すると、WORKER_CONNECTION_COUNT 設定フィールドに設定されたすべての値が上書きされます。

1.3.4.4. ダイナミックなプロセスカウント

ダイナミックサイズのプロセスの量を推定するために、デフォルトでは以下の計算が行われます。

注記

Red Hat Quay は、マシン全体から利用可能な CPU 数を照会します。kubernetes またはその他の仮想化されていないメカニズムを使用して適用される制限は、この動作には影響しません。Red Hat Quay は、ノード上のプロセッサーの総数に基づいて計算を行います。記載されているデフォルト値は単なる目標値であり、最大値を超えてはならず、最小値を下回ってはならない。

以下の各プロセス量は、以下に指定する環境変数でオーバーライドすることができます。

  • registry - レジストリーアクションを処理するための HTTP エンドポイントを提供します。

    • 最小値: 8
    • 最大値: 64
    • デフォルト: $CPU_COUNT x 4
    • 環境変数: WORKER_COUNT_REGISTRY
  • web - ウェブベースのインターフェイス用の HTTP エンドポイントを提供します

    • 最小値: 2
    • 最大値: 32
    • デフォルト: $CPU_COUNT x 2
    • 環境変数: WORKER_COUNT_WEB
  • secscan - Clair と相互作用します。

    • 最小値: 2
    • 最大値: 4
    • デフォルト: $CPU_COUNT x 2
    • 環境変数: WORKER_COUNT_SECSCAN

1.3.4.5. 環境変数

Red Hat Quay では、環境変数を使用してデフォルトの動作をオーバーライドすることができます。以下の表では、各変数と、使用できる値を一覧にして説明しています。

表1.1 ワーカー数の環境変数

変数説明

WORKER_COUNT_REGISTRY

Quay コンテナー内のレジストリー要求を処理するプロセス数を指定します。

8 ~ 64 の整数

WORKER_COUNT_WEB

コンテナー内で UI/Web リクエストを処理するプロセスの数を指定します。

2 ~ 32 の整数

WORKER_COUNT_SECSCAN

コンテナー内でセキュリティースキャン (Clair など) の統合を処理するプロセス数を指定します。

2 ~ 4 の整数

DB_CONNECTION_POOLING

データベースのコネクションプーリングを切り替えます。

true または false

1.3.4.6. コネクションプーリングの停止

大量のユーザーアクティビティーを伴う Red Hat Quay の展開では、定期的に最大 2k のデータベース接続制限に達することがあります。このような場合、Red Hat Quay でデフォルトで有効になっているコネクションプーリングは、データベース接続数が指数関数的に増加する原因となるため、コネクションプーリングをオフにする必要があります。

接続プールをオフにするだけでは、データベース接続制限値の 2k に達することを阻止できない場合は、問題に対処するための追加の手順を踏む必要があります。この場合、ワークロードに合わせてデータベースの最大接続数を増やす必要があるかもしれません。