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
---

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_NAMESPACESconfig.yaml 文件中的列表中。

1.3.4. 调整数据库连接池

Red Hat Quay 由多个不同进程组成,它们都在同一个容器中运行。这些进程中的很多进程与数据库交互。

使用 DB_CONNECTION_POOLING 参数时,与数据库交互的每个进程都将包含一个连接池。这些每个进程连接池配置为维护最多 20 个连接。在负载非常重时,可以为 Red Hat Quay 容器中的每个进程填充连接池。在某些部署和负载下,可能需要分析以确保 Red Hat Quay 没有超过数据库配置的最大连接数。

随着时间的推移,连接池将释放闲置连接。要立即发布所有连接,必须重启 Red Hat Quay。

通过将 DB_CONNECTION_POOLING 设置为 truefalse 可切换数据库连接池。例如:

---
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 操作

    • 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 允许使用环境变量覆盖默认行为。下表列出并描述了每个变量以及可以期望的值。

表 1.1. worker 数环境变量

变量Description

WORKER_COUNT_REGISTRY

指定在 Quay 容器中处理 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 数据库连接限制,您需要执行额外的步骤来处理问题。如果发生这种情况,您可能需要增加最大数据库连接以更好地适合您的工作负载。