1.3. 编辑 config.yaml 文件以修改 Red Hat Quay
可通过直接编辑 config.yaml
文件来实现通过 Config Tool 不提供的一些高级配置功能。Red Hat Quay 配置的 Schema中描述了可用的设置
以下示例是您可以在 config.yaml
文件中直接更改的设置。
1.3.1. 在 Red Hat Quay 登录中添加名称和公司 复制链接链接已复制到粘贴板!
通过设置以下字段,用户首次登录时会提示您输入其名称和公司。这是一个可选字段,但可以为您提供有关 Red Hat Quay 用户的额外数据。
--- FEATURE_USER_METADATA: true ---
---
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'] ---
---
SSL_PROTOCOLS : ['TLSv1.1','TLSv1.2']
---
1.3.3. 速率限制 API 调用 复制链接链接已复制到粘贴板!
将 FEATURE_RATE_LIMITS
参数添加到 config.yaml
文件会导致 nginx
将特定 API 调用限制为 30-per-second。如果没有设置 FEATURE_RATE_LIMITS
,API 调用将每秒限制为 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: true
---
启用 DB_CONNECTION_POOLING
时,您可以使用 config.yaml
中的 DB_CONNECTION_ARGS
更改连接池的最大大小。例如:
--- DB_CONNECTION_ARGS: max_connections: 10 ---
---
DB_CONNECTION_ARGS:
max_connections: 10
---
1.3.4.1. 数据库连接参数 复制链接链接已复制到粘贴板!
您可以在 config.yaml
文件中自定义 Red Hat Quay 数据库连接设置。它们取决于您的部署的数据库驱动程序,例如,用于 Postgres 的 psycopg2
,以及 MySQL 的 pymysql
。您还可以传递 Peewee 连接池机制使用的参数。例如:
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 ---
---
DB_CONNECTION_ARGS:
sslmode: verify-ca
sslrootcert: /path/to/cacert
---
sslmode
参数决定是否与服务器协商安全 SSL TCP/IP 连接的优先级。sslmode
参数有六个模式:
- Disabl : 仅尝试非 SSL 连接。
- Allow :首先测试非 SSL 连接。出现故障时,尝试 SSL 连接。
- 首选: Default。首先尝试 SSL 连接。失败时,尝试非 SSL 连接。
-
需要 :仅尝试 SSL 连接。如果存在 root CA 文件,请使用与指定
verify-ca
相同的方式验证连接。 - verify-ca :仅尝试 SSL 连接,并验证服务器证书是否由信任证书颁发机构(CA)发布。
- verify-full: 只尝试 SSL 连接。验证服务器证书是否由信任 CA 发布,并且请求的服务器主机名是否与证书中的匹配。
有关 PostgreSQL 有效参数的更多信息,请参阅 数据库连接控制功能。
1.3.4.2.2. MySQL SSL 连接参数 复制链接链接已复制到粘贴板!
以下 YAML 显示了一个 MySQL SSL 配置示例:
--- DB_CONNECTION_ARGS: ssl: ca: /path/to/cacert ---
---
DB_CONNECTION_ARGS:
ssl:
ca: /path/to/cacert
---
有关 MySQL 有效连接参数的更多信息,请参阅使用 URI-Like Strings 或 Key-Value Pairs 连接到服务器。
1.3.4.3. HTTP 连接数 复制链接链接已复制到粘贴板!
您可以使用环境变量指定同时 HTTP 连接的数量。环境变量可以指定为整个组件,也可以指定特定组件。每个进程的默认值为 50 个并行连接。有关环境变量的示例,参阅以下 YAML:
为特定组件指定计数将覆盖 WORKER_CONNECTION_COUNT
配置字段中设置的值。
1.3.4.4. 动态进程计数 复制链接链接已复制到粘贴板!
要估算动态大小的进程的数量,默认使用以下计算。
Red Hat Quay 从整个机器查询可用的 CPU 数量。使用 kubernetes 或其他非虚拟机制应用的任何限制都不会影响此行为。Red Hat Quay 根据节点上的处理器总数计算其计算。列出的默认值只是目标,但不应超过最大值或低于最小值。
以下每个进程数量都可以使用以下指定的环境变量覆盖:
registry - 提供 HTTP 端点来处理 registry 操作
- 最小值: 8
- 最大:64
- 默认:$CPU_COUNT x 4
- 环境变量:WORKER_COUNT_REGISTRY
Web - 为基于 Web 的界面提供 HTTP 端点
- 最小值: 2
- 最大: 32
- 默认: $CPU_COUNT x 2
- Environment_variable: WORKER_COUNT_WEB
secscan - 与 Clair 进行交互
- 最小值: 2
- maximum: 4
- 默认: $CPU_COUNT x 2
- 环境变量:WORKER_COUNT_SECSCAN
1.3.4.5. 环境变量 复制链接链接已复制到粘贴板!
Red Hat Quay 允许使用环境变量覆盖默认行为。下表列出了并描述了每个变量及其预期的值。
变量 | 描述 | 值 |
---|---|---|
WORKER_COUNT_REGISTRY |
指定处理 |
|
WORKER_COUNT_WEB | 指定处理容器中的 UI/Web 请求的进程数量。 |
|
WORKER_COUNT_SECSCAN | 指定处理安全扫描(如 Clair)集成的进程数量。 |
整数.因为 Operator 为资源请求和限值指定 2 个 vCPU,所以在 |
DB_CONNECTION_POOLING | 切换数据库连接池。 |
|
1.3.4.6. 关闭连接池 复制链接链接已复制到粘贴板!
具有大量用户活动的 Red Hat Quay 部署可定期达到 2k 最大数据库连接限制。在这些情况下,Red Hat Quay 默认启用的连接池可能会导致数据库连接数量指数高,并要求您关闭连接池。
如果关闭连接池不足以防止达到 2k 数据库连接限制,则需要执行额外的步骤来处理问题。如果发生这种情况,您可能需要增加最大数据库连接以更好地适合您的工作负载。