1.3. 编辑 config.yaml 文件以修改 Red Hat Quay
可以通过直接编辑 config.yaml
文件来实现一些无法通过 Config Tool 提供的高级配置功能。Red Hat Quay 配置的 Schema 描述了可用的设置
以下示例是您可以在 config.yaml
文件中直接更改的设置。
1.3.1. 将 name 和 company 添加到 Red Hat Quay Sign-in
通过设置以下字段,在用户第一次登录时,系统将提示用户输入其名称和公司。这是一个可选字段,但可以为您的 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 调用限制为 30-per-second。如果没有设置 FEATURE_RATE_LIMITS
,API 调用将限制为 300-per-second,则有效地使其无限。
如果您必须确保可用资源不在流量,则速率限制很重要。
有些命名空间可能需要无限访问,例如,它们对 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. 数据库连接参数
您可以在 config.yaml
文件中自定义 Red Hat Quay 数据库连接设置。它们取决于您的部署的数据库驱动程序,例如 psycopg2
for Postgres 和 pymysql
for MySQL。您也可以传递 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 连接将与服务器协商的 SSL TCP/IP 连接。sslmode
参数有六个模式:
- 模糊: 仅尝试非 SSL 连接。
- 允许 :首先尝试非 SSL 连接。失败时,尝试 SSL 连接。
- 首选 :默认.首先尝试 SSL 连接。失败时,尝试非 SSL 连接。
-
需要 :仅尝试 SSL 连接。如果存在 root 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 的有效连接参数的更多信息,请参阅使用 URI-Like Strings 或 Key-Value Pairs 连接到服务器。
1.3.4.3. HTTP 连接数
您可以使用环境变量指定同步 HTTP 连接的数量。环境变量可以作为一个整体指定,也可以指定用于特定组件。每个进程的默认值为 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 端点来处理 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
- 最大: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 数据库连接限制,您需要执行额外的步骤来处理问题。如果发生这种情况,您可能需要增加最大数据库连接以更好地适合您的工作负载。