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_POOLING
を true
または false
に設定することで、データベース接続プールを切り替えることができます。以下に例を示します。
--- DB_CONNECTION_POOLING: true ---
DB_CONNECTION_POOLING
が有効になっている場合、config.yaml
の DB_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 では、環境変数を使用してデフォルトの動作をオーバーライドすることができます。以下の表では、各変数と、使用できる値を一覧にして説明しています。
変数 | 説明 | 値 |
---|---|---|
WORKER_COUNT_REGISTRY |
| 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 に達することを阻止できない場合は、問題に対処するための追加の手順を踏む必要があります。この場合、ワークロードに合わせてデータベースの最大接続数を増やす必要があるかもしれません。