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 调用 复制链接链接已复制到粘贴板!
在 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: 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 数据库连接设置。它们取决于您的部署的数据库驱动程序,例如 psycopg2
for Postgres 和 pymysql
for MySQL。您也可以传递 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 连接将与服务器协商的 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 ---
---
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 操作
- minimum: 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 允许使用环境变量覆盖默认行为。下表列出并描述了每个变量以及可以期望的值。
变量 | Description | 值 |
---|---|---|
WORKER_COUNT_REGISTRY |
指定在 | 8 到 64 之间的整数 |
WORKER_COUNT_WEB | 指定处理容器中的 UI/Web 请求的进程数量。 | 整数 2 到 32 |
WORKER_COUNT_SECSCAN | 指定处理容器中安全扫描的进程数量(如 Clair)集成。 | 2 到 4 之间的整数 |
DB_CONNECTION_POOLING | 切换数据库连接池。 | "true" or "false" |
1.3.4.6. 关闭连接池 复制链接链接已复制到粘贴板!
具有大量用户活动的 Red Hat Quay 部署可定期点击 2k 最大数据库连接限制。在这样的情形中,Red Hat Quay 启用了连接池(默认为启用)可能会导致数据库连接数倍增加,并需要您关闭连接池。
如果关闭连接池不足以防止达到 2k 数据库连接限制,您需要执行额外的步骤来处理问题。如果发生这种情况,您可能需要增加最大数据库连接以更好地适合您的工作负载。