disable
您的配置只尝试非 SSL/TLS 连接。
allow
您的配置首先尝试非 SSL/TLS 连接。失败时,尝试 SSL/TLS 连接。
首选
(默认)
您的配置首先尝试 SSL/TLS 连接。失败时,尝试非 SSL/TLS 连接。
require
您的配置只尝试 SSL/TLS 连接。如果存在 root CA 文件,它会像指定 verify-ca 一样验证证书。
verify-ca
您的配置只尝试 SSL/TLS 连接,并验证服务器证书是否由可信证书颁发机构(CA)发布。
verify-full
仅尝试 SSL/TLS 连接,并验证服务器证书是否由可信 CA 发布,并且请求的服务器的主机名是否与证书中的匹配。
如需有关 PostgreSQL 有效参数的更多信息,请参阅
数据库连接控制功能
。
3.5.2.2. MySQL SSL/TLS 连接参数
以下示例显示了 MySQL SSL/TLS 配置示例:
DB_CONNECTION_ARGS:
ca: /path/to/cacert
有关 MySQL 的有效连接参数的信息,请访问
使用类似URI的字符串或键-值对连接到服务器
。
本节详细介绍了 Red Hat Quay 中提供的镜像存储功能和配置字段。
下表描述了 Red Hat Quay 的镜像存储功能:
表 3.5. 存储配置功能
字段
|
类型
|
描述
|
FEATURE_REPO_MIRROR
如果设置为 true,请启用存储库镜像。
默认:
false
FEATURE_PROXY_STORAGE
是否通过 NGINX 代理存储中的所有直接下载 URL。
默认:
false
FEATURE_STORAGE_REPLICATION
是否在存储引擎之间自动复制。
默认:
false
|
下表描述了 Red Hat Quay 的镜像存储配置字段:
表 3.6. 存储配置字段
字段
|
类型
|
描述
|
DISTRIBUTED_STORAGE_CONFIG
(Required)
在 Red Hat Quay 中使用的存储引擎的配置。每个键代表存储引擎的唯一标识符。该值由一个元组(键、值)组成一个对象来描述存储引擎参数。
默认:
[]
DISTRIBUTED_STORAGE_DEFAULT_LOCATIONS
(Required)
字符串数组
存储引擎列表(由
DISTRIBUTED_STORAGE_CONFIG
中的 ID)应默认完全复制到所有其他存储引擎。
DISTRIBUTED_STORAGE_PREFERENCE
(Required)
字符串数组
要使用的首选存储引擎(按
DISTRIBUTED_STORAGE_CONFIG
的 ID)。首选引擎表示首先检查拉取,并且镜像被推送(push)到其中。
默认:
false
MAXIMUM_LAYER_SIZE
镜像层允许的最大值。
Pattern
:
^[0-9]+(G|M)$
示例
:
100G
Default:
20G
|
以下 YAML 显示了使用本地存储的示例配置:
DISTRIBUTED_STORAGE_CONFIG:
default:
- LocalStorage
- storage_path: /datastorage/registry
DISTRIBUTED_STORAGE_DEFAULT_LOCATIONS: []
DISTRIBUTED_STORAGE_PREFERENCE:
- default
以下 YAML 显示了一个使用 Open Container Storage/NooBaa 实例的配置示例:
DISTRIBUTED_STORAGE_CONFIG:
rhocsStorage:
- RHOCSStorage
- access_key: access_key_here
secret_key: secret_key_here
bucket_name: quay-datastore-9b2108a3-29f5-43f2-a9d5-2872174f9a56
hostname: s3.openshift-storage.svc.cluster.local
is_secure: 'true'
port: '443'
storage_path: /datastorage/registry
以下示例显示了在使用 Ceph/RadosGW 时可能的两个 YAML 配置。
以下 YAML 显示了使用 AWS S3 存储的示例配置。
DISTRIBUTED_STORAGE_CONFIG:
default:
- S3Storage 1
- host: s3.us-east-2.amazonaws.com
s3_access_key: ABCDEFGHIJKLMN
s3_secret_key: OL3ABCDEFGHIJKLMN
s3_bucket: quay_bucket
storage_path: /datastorage/registry
DISTRIBUTED_STORAGE_DEFAULT_LOCATIONS: []
DISTRIBUTED_STORAGE_PREFERENCE:
- s3Storage
-
1
-
S3Storage
存储驱动程序应该仅用于 AWS S3 存储桶。请注意,这与常规 S3 访问不同,可以使用 RadosGW 驱动程序或其他存储服务。例如,请参阅"示例 B: 使用 RadosGW 带有常规 S3 访问"。
3.6.7. Google Cloud Storage
以下 YAML 显示了使用 Google Cloud Storage 的示例配置:
DISTRIBUTED_STORAGE_CONFIG:
googleCloudStorage:
- GoogleCloudStorage
- access_key: GOOGQIMFB3ABCDEFGHIJKLMN
bucket_name: quay-bucket
secret_key: FhDAYe2HeuAKfvZCAGyOioNaaRABCDEFGHIJKLMN
storage_path: /datastorage/registry
DISTRIBUTED_STORAGE_DEFAULT_LOCATIONS: []
DISTRIBUTED_STORAGE_PREFERENCE:
- googleCloudStorage
以下 YAML 显示了一个使用 Azure Storage 的示例配置:
DISTRIBUTED_STORAGE_CONFIG:
azureStorage:
- AzureStorage
- azure_account_name: azure_account_name_here
azure_container: azure_container_here
storage_path: /datastorage/registry
azure_account_key: azure_account_key_here
sas_token: some/path/
endpoint_url: https://[account-name].blob.core.usgovcloudapi.net 1
DISTRIBUTED_STORAGE_DEFAULT_LOCATIONS: []
DISTRIBUTED_STORAGE_PREFERENCE:
- azureStorage
-
1
-
Azure 存储的
endpoint_url
参数是可选的,可用于 Microsoft Azure Government (MAG)端点。如果留空,
endpoint_url
将连接到普通的 Azure 区域。
从 Red Hat Quay 3.7 开始,您必须使用 MAG Blob 服务的主端点。使用 MAG Blob 服务的二级端点将导致以下错误:
AuthenticationErrorDetail:Cannot find the claimed account when to getProperties for the account whusc8-secondary
.
以下 YAML 显示了一个使用 Swift 存储的示例配置:
DISTRIBUTED_STORAGE_CONFIG:
swiftStorage:
- SwiftStorage
- swift_user: swift_user_here
swift_password: swift_password_here
swift_container: swift_container_here
auth_url: https://example.org/swift/v1/quay
auth_version: 1
ca_cert_path: /conf/stack/swift.cert"
storage_path: /datastorage/registry
DISTRIBUTED_STORAGE_DEFAULT_LOCATIONS: []
DISTRIBUTED_STORAGE_PREFERENCE:
- swiftStorage
以下 YAML 显示了使用 Nutanix 对象存储的示例配置。
DISTRIBUTED_STORAGE_CONFIG:
nutanixStorage: #storage config name
- RadosGWStorage #actual driver
- access_key: access_key_here #parameters
secret_key: secret_key_here
bucket_name: bucket_name_here
hostname: hostname_here
is_secure: 'true'
port: '443'
storage_path: /datastorage/registry
DISTRIBUTED_STORAGE_DEFAULT_LOCATIONS: []
DISTRIBUTED_STORAGE_PREFERENCE: #must contain name of the storage config
- nutanixStorage
本节详细介绍了 Redis 部署可用的配置字段。
以下构建日志配置字段可用于 Redis 部署:
表 3.7. 构建日志配置
字段
|
类型
|
描述
|
BUILDLOGS_REDIS
(Required)
构建日志缓存的 redis 连接详情。
.host
(Required)
可以访问 Redis 的主机名。
示例:
quay-server.example.com
.port
(Required)
Number
访问 Redis 的端口。
示例:
6379
.password
用于连接到 Redis 实例的密码。
示例:
strongpassword
.SSL
(可选)
是否启用 Redis 和 Quay 之间的 TLS 通信。默认为false。
|
以下用户事件字段可用于 Redis 部署:
表 3.8. 用户事件配置
字段
|
类型
|
描述
|
USER_EVENTS_REDIS
(Required)
用户事件处理的 redis 连接详情。
.host
(Required)
可以访问 Redis 的主机名。
示例:
quay-server.example.com
.port
(Required)
Number
访问 Redis 的端口。
示例:
6379
.password
用于连接到 Redis 实例的密码。
示例:
strongpassword
是否启用 Redis 和 Quay 之间的 TLS 通信。默认为false。
.ssl_keyfile
(Optional)
密钥数据库文件的名称,它存放要使用的客户端证书。
示例
:
ssl_keyfile: /path/to/server/privatekey.pem
.ssl_certfile
(可选)
用于指定 SSL 证书的文件路径。
示例
:
ssl_certfile: /path/to/server/certificate.pem
.ssl_cert_reqs
(可选)
用于指定在 SSL/TLS 握手期间要执行的证书验证级别。
示例
:
ssl_cert_reqs: CERT_REQUIRED
.ssl_ca_certs
(可选)
用于指定包含可信证书颁发机构(CA)证书列表的文件的路径。
示例
:
ssl_ca_certs: /path/to/ca_certs.pem
.ssl_ca_data
(Optional)
用于指定包含 PEM 格式的可信 CA 证书的字符串。
Example:
ssl_ca_data: <certificate>
.ssl_check_hostname
(可选)
在设置到服务器的 SSL/TLS 连接时使用。它指定客户端是否应该检查服务器的 SSL/TLS 证书中的主机名是否与它连接的服务器的主机名匹配。
示例:
ssl_check_hostname: true
|
以下 YAML 显示了一个使用带有可选 SSL/TLS 字段的 Redis 的示例配置:
BUILDLOGS_REDIS:
host: quay-server.example.com
password: strongpassword
port: 6379
ssl: true
USER_EVENTS_REDIS:
host: quay-server.example.com
password: strongpassword
port: 6379
ssl: true
ssl_*: <path_location_or_certificate>
如果您的部署使用 Azure Cache for Redis,并且
ssl
设置为
true
,则端口默认为
6380
。
Red Hat Quay 中提供了用于配置 ModelCache 的以下选项。
memcache 是默认的 ModelCache 配置选项。使用 Memcache 时,不需要额外的配置。
以下配置适用于具有可选只读副本的单一 Redis 实例:
DATA_MODEL_CACHE_CONFIG:
engine: redis
redis_config:
primary:
host: <host>
port: <port>
password: <password if ssl is true>
ssl: <true | false >
replica:
host: <host>
port: <port>
password: <password if ssl is true>
ssl: <true | false >
对集群的 Redis 实例使用以下配置:
DATA_MODEL_CACHE_CONFIG:
engine: rediscluster
redis_config:
startup_nodes:
- host: <cluster-host>
port: <port>
password: <password if ssl: true>
read_from_replicas: <true|false>
skip_full_coverage_check: <true | false>
ssl: <true | false >
Red Hat Quay 提供了以下标签过期配置字段:
表 3.9. 标签过期配置字段
字段
|
类型
|
描述
|
FEATURE_GARBAGE_COLLECTION
是否启用存储库垃圾回收。
Default:
True
TAG_EXPIRATION_OPTIONS
(Required)
字符串数组
如果启用,用户可以选择其命名空间中的标签过期。
Pattern:
^[0-9]+(w|m|d|h|s)$
DEFAULT_TAG_EXPIRATION
(Required)
默认可配置标签过期时间。
Pattern:
^[0-9]+(w|m|d|h|s)$
Default:
2w
FEATURE_CHANGE_TAG_EXPIRATION
用户和机构是否允许更改其命名空间中标签的标签过期。
Default:
True
|
以下 YAML 显示了标签过期配置示例:
DEFAULT_TAG_EXPIRATION: 2w
TAG_EXPIRATION_OPTIONS:
- 4w
表 3.10. 配额管理配置
字段
|
类型
|
描述
|
FEATURE_QUOTA_MANAGEMENT
为配额管理功能启用配置、缓存和验证。
**Default:** `False`
DEFAULT_SYSTEM_REJECT_QUOTA_BYTES
为所有机构启用系统默认配额拒绝字节允许。
默认情况下,不会设置限制。
QUOTA_BACKFILL
启用配额回填工作程序来计算预先存在的 Blob 的大小。
默认
:
True
QUOTA_TOTAL_DELAY_SECONDS
启动配额回填的时间延迟。滚动部署可能会导致总部署不正确。此字段
必须设置为
超过滚动部署完成所需的时间。
默认
:1
800
PERMANENTLY_DELETE_TAGS
启用与从时间窗中删除标签相关的功能。
默认
:
False
RESET_CHILD_MANIFEST_EXPIRATION
重置以子清单为目标的临时标签的过期。将这个功能设置为
True
时,子清单会立即收集垃圾回收。
默认
:
False
|
表 3.11. 代理配置
字段
|
类型
|
描述
|
FEATURE_PROXY_CACHE
使 Red Hat Quay 能够通过上游 registry 的缓存作为拉取(pull)。
默认
:
false
|
表 3.12. 基本配置
字段
|
类型
|
描述
|
REGISTRY_TITLE
如果指定,registry 的长期格式标题。在 Red Hat Quay 部署的前端中显示,例如在机构的登录页面中。不应超过 35 个字符。
默认:
Red Hat Quay
REGISTRY_TITLE_SHORT
如果指定,registry 的短格式标题。标题显示在您的机构各个页面中,例如,作为您所在机构的
教程
页面上的标题。
默认:
Red Hat Quay
CONTACT_INFO
字符串数组
如果指定,在联系页面中显示联系信息。如果只指定单一的联系信息,请联系页将直接链接。
添加发送电子邮件的链接。
Pattern:
^mailto: (.)+$
Example:
mailto:[email protected]
添加访问 IRC chat room 的链接。
Pattern:
^irc://(.)+$
Example:
irc://chat.freenode.net:6665/quay
添加一个链接来调用电话号码。+
Pattern:
^tel: (.)+$
Example:
tel:+1-888-930-3475
添加指向定义的 URL 的链接。
Pattern:
^http (s)?://(.)+$
Example:
https://twitter.com/quayio
|
表 3.13. SSL 配置
字段
|
类型
|
描述
|
PREFERRED_URL_SCHEME
http
或
https
之一。请注意,只有在从客户端到 Quay 的通信路径中没有 TLS 加密时,用户仅将
PREFERRED_URL_SCHEME
设置为
http
。
在使用 TLS 长期负载均衡器、反向代理(如 Nginx)或直接使用自定义 SSL 证书时,+ 用户必须将
PREFERRED_URL_SCHEME' 设置为 'https
。在大多数情况下,
PREFERRED_URL_SCHEME
应该为
https
。
默认:
http
SERVER_HOSTNAME
(Required)
可以访问 Red Hat Quay 的 URL,不包括网络协议。
例如:
quay-server.example.com
SSL_CIPHERS
字符串数组
如果指定,nginx 定义要启用和禁用的 SSL 密码列表
示例:
[
CAMELLIA
,
!3DES
]
SSL_PROTOCOLS
字符串数组
如果指定了,nginx 被配置为启用列表中定义的 SSL 协议列表。从列表中删除 SSL 协议会禁用 Red Hat Quay 启动过程中的协议。
Example:
['TLSv1','TLSv1.1','TLSv1.2', 'TLSv1.3
]'
SESSION_COOKIE_SECURE
是否应在会话 Cookie 上设置
secure
属性
Default:
False
Recommendation:
Set to True
|
-
将证书文件和主密钥文件复制到您的配置目录中,确保分别命名为
ssl.cert
和
ssl.key
:
$ cp ~/ssl.cert $QUAY/config
$ cp ~/ssl.key $QUAY/config
$ cd $QUAY/config
-
编辑
config.yaml
文件,并指定您希望 Quay 处理 TLS:
3.15. 在 Red Hat Quay 容器中添加 TLS 证书
要将自定义 TLS 证书添加到 Red Hat Quay,请在 Red Hat Quay config 目录下创建一个名为
extra_ca_certs/
的新目录。将任何所需的特定于站点的 TLS 证书复制到这个新目录中。
3.15.1. 将 TLS 证书添加到 Red Hat Quay
-
查看添加到容器中的证书
$ cat storage.crt
-----BEGIN CERTIFICATE-----
MIIDTTCCAjWgAwIBAgIJAMVr9ngjJhzbMA0GCSqGSIb3DQEBCwUAMD0xCzAJBgNV
[...]
-----END CERTIFICATE-----
-
创建证书目录并在其中复制证书
$ mkdir -p quay/config/extra_ca_certs
$ cp storage.crt quay/config/extra_ca_certs/
$ tree quay/config/
├── config.yaml
├── extra_ca_certs
│ ├── storage.crt
-
使用
podman ps
获取
Quay
容器的
CONTAINER ID
:
$ sudo podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
5a3e82c4a75f <registry>/<repo>/quay:v3.9.7 "/sbin/my_init" 24 hours ago Up 18 hours 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 443/tcp grave_keller
-
使用该 ID 重启容器:
$ sudo podman restart 5a3e82c4a75f
-
检查复制到容器命名空间中的证书:
$ sudo podman exec -it 5a3e82c4a75f cat /etc/ssl/certs/storage.pem
-----BEGIN CERTIFICATE-----
MIIDTTCCAjWgAwIBAgIJAMVr9ngjJhzbMA0GCSqGSIb3DQEBCwUAMD0xCzAJBgNV
表 3.14. LDAP 配置
字段
|
类型
|
描述
|
AUTHENTICATION_TYPE
(Required)
必须设置为
LDAP
。
FEATURE_TEAM_SYNCING
是否允许团队成员资格从身份验证引擎(LDAP 或 Keystone)中的后备组中同步。
默认:
true
FEATURE_NONSUPERUSER_TEAM_SYNCING_SETUP
如果启用,非超级用户可以使用 LDAP 在团队上设置同步。
默认:
false
LDAP_ADMIN_DN
用于 LDAP 身份验证的管理 DN。
LDAP_ADMIN_PASSWD
LDAP 身份验证的管理员密码。
LDAP_ALLOW_INSECURE_FALLBACK
是否允许对 LDAP 身份验证进行 SSL 不安全回退。
LDAP_BASE_DN
字符串数组
LDAP 身份验证的基本 DN。
LDAP_EMAIL_ATTR
用于 LDAP 身份验证的电子邮件属性。
LDAP_UID_ATTR
用于 LDAP 身份验证的 uid 属性。
LDAP_URI
LDAP URI。
LDAP_USER_FILTER
用于 LDAP 身份验证的用户过滤器。
LDAP_USER_RDN
字符串数组
用于 LDAP 身份验证的用户 RDN。
TEAM_RESYNC_STALE_TIME
如果为团队启用了团队同步,需要检查其成员资格和重新同步。
Pattern:
^[0-9]+(w|m|d|h|s)$
示例:
2h
Default:
30m
LDAP_SUPERUSER_FILTER
LDAP_USER_FILTER
配置字段的子集。配置后,Red Hat Quay 管理员能够在 Red Hat Quay 使用 LDAP 作为其身份验证提供程序时,将轻量级目录访问协议(LDAP)用户配置为超级用户。
使用此字段,管理员可以在无需更新 Red Hat Quay 配置文件并重新启动其部署的情况下添加或删除超级用户。
此字段需要您的
AUTHENTICATION_TYPE
设置为
LDAP
。
LDAP_RESTRICTED_USER_FILTER
LDAP_USER_FILTER
配置字段的子集。配置后,当 Red Hat Quay 使用 LDAP 作为其身份验证提供程序时,可以将轻量级目录访问协议(LDAP)用户配置为受限用户。
此字段需要您的
AUTHENTICATION_TYPE
设置为
LDAP
。
LDAP_TIMEOUT
决定与轻量级目录访问协议(LDAP)服务器建立连接的最大时间段(以秒为单位)。
+ 默认
:10
LDAP_NETWORK_TIMEOUT
定义 Red Hat Quay 在网络操作期间等待轻量级目录访问协议(LDAP)服务器的响应的最长时间(以秒为单位)。
+ 默认
:10
|
使用以下引用,使用所需的配置字段更新
config.yaml
文件。
---
AUTHENTICATION_TYPE: LDAP
LDAP_ADMIN_DN: uid=<name>,ou=Users,o=<organization_id>,dc=<example_domain_component>,dc=com
LDAP_ADMIN_PASSWD: ABC123
LDAP_ALLOW_INSECURE_FALLBACK: false
LDAP_BASE_DN:
- o=<organization_id>
- dc=<example_domain_component>
- dc=com
LDAP_EMAIL_ATTR: mail
LDAP_UID_ATTR: uid
LDAP_URI: ldaps://<ldap_url_domain_name>
LDAP_USER_FILTER: (memberof=cn=developers,ou=Users,dc=<domain_name>,dc=com)
LDAP_USER_RDN:
- ou=<example_organization_unit>
- o=<organization_id>
- dc=<example_domain_component>
- dc=com
---
AUTHENTICATION_TYPE: LDAP
LDAP_ADMIN_DN: uid=<name>,ou=Users,o=<organization_id>,dc=<example_domain_component>,dc=com
LDAP_ADMIN_PASSWD: ABC123
LDAP_ALLOW_INSECURE_FALLBACK: false
LDAP_BASE_DN:
- o=<organization_id>
- dc=<example_domain_component>
- dc=com
LDAP_EMAIL_ATTR: mail
LDAP_UID_ATTR: uid
LDAP_URI: ldap://<example_url>.com
LDAP_USER_FILTER: (memberof=cn=developers,ou=Users,o=<example_organization_unit>,dc=<example_domain_component>,dc=com)
LDAP_RESTRICTED_USER_FILTER: (<filterField>=<value>)
LDAP_USER_RDN:
- ou=<example_organization_unit>
- o=<organization_id>
- dc=<example_domain_component>
- dc=com
---
---
AUTHENTICATION_TYPE: LDAP
LDAP_ADMIN_DN: uid=<name>,ou=Users,o=<organization_id>,dc=<example_domain_component>,dc=com
LDAP_ADMIN_PASSWD: ABC123
LDAP_ALLOW_INSECURE_FALLBACK: false
LDAP_BASE_DN:
- o=<organization_id>
- dc=<example_domain_component>
- dc=com
LDAP_EMAIL_ATTR: mail
LDAP_UID_ATTR: uid
LDAP_URI: ldap://<example_url>.com
LDAP_USER_FILTER: (memberof=cn=developers,ou=Users,o=<example_organization_unit>,dc=<example_domain_component>,dc=com)
LDAP_SUPERUSER_FILTER: (<filterField>=<value>)
LDAP_USER_RDN:
- ou=<example_organization_unit>
- o=<organization_id>
- dc=<example_domain_component>
- dc=com
表 3.15. 镜像配置
字段
|
类型
|
描述
|
FEATURE_REPO_MIRROR
启用或禁用存储库镜像
默认:
false
REPO_MIRROR_INTERVAL
Number
检查存储库镜像候选者之间的秒数
默认:30
REPO_MIRROR_SERVER_HOSTNAME
替换
SERVER_HOSTNAME
作为镜像的目的地。
Default:
None
Example
:
openshift-quay-service
REPO_MIRROR_TLS_VERIFY
需要 HTTPS 并在镜像过程中验证 Quay registry 的证书。
默认:
false
REPO_MIRROR_ROLLBACK
当设置为
true
时,存储库会在镜像尝试失败后回滚。
默认
:
false
|
表 3.16. 安全扫描程序配置
字段
|
类型
|
描述
|
FEATURE_SECURITY_SCANNER
启用或禁用安全扫描程序
默认:
false
FEATURE_SECURITY_NOTIFICATIONS
如果启用了安全扫描程序,请打开或关闭安全通知
默认:
false
SECURITY_SCANNER_V4_REINDEX_THRESHOLD
此参数用于决定在重新索引之前要等待的最短时间(以秒为单位),或者自上次索引后更改了状态。数据从
manifestsecuritystatus
表中的
last_indexed datetime
中计算。这个参数用于避免在每次索引运行时重新索引每个失败的清单。re-index 的默认时间为 300 秒。
SECURITY_SCANNER_V4_ENDPOINT
V4 安全扫描程序的端点
Pattern:
^http (s)?://(.)+$
Example:
http://192.168.99.101:6060
SECURITY_SCANNER_V4_PSK
Clair 生成的预共享密钥(PSK)
SECURITY_SCANNER_ENDPOINT
V2 安全扫描程序的端点
Pattern:
^http (s)?://(.)+$
示例:
http://192.168.99.100:6060
SECURITY_SCANNER_INDEXING_INTERVAL
此参数用于决定安全扫描程序中索引间隔之间的秒数。触发索引时,Red Hat Quay 将查询其数据库以获取 Clair 必须索引的清单。这包括尚未索引的清单,以及之前索引失败的清单。
+
默认值:30
FEATURE_SECURITY_SCANNER_NOTIFY_ON_NEW_INDEX
是否允许发送有关新推送的漏洞的通知。
+
default
*:
True
|
当 Clair v4 索引清单时,结果应确定性。例如,同一清单应生成相同的索引报告。这是 true,直到扫描程序更改,因为使用不同的扫描程序将生成与报告返回的特定清单相关的不同信息。因此,Clair v4 会公开索引引擎(
/indexer/api/v1/index_state
)的状态表示,以确定扫描程序配置是否已改变。
Red Hat Quay 通过在解析到 Quay 数据库时将其保存到索引报告中来利用此索引状态。如果因为清单之前扫描以来此状态已更改,Red Hat Quay 会在定期索引过程中尝试重新索引该清单。
默认情况下,此参数被设置为 30 秒。如果用户希望索引过程更频繁运行,例如,如果他们不希望等待 30 秒在推送新标签后查看安全扫描结果,用户可能会缩短时间。如果用户希望对请求模式进行更多控制,以及要在 Red Hat Quay 数据库上执行的数据库操作的模式,用户也可以更改参数。
以下 YAML 是启用安全扫描程序功能时推荐的配置。
表 3.17. Helm 配置字段
字段
|
类型
|
描述
|
FEATURE_GENERAL_OCI_SUPPORT
启用对 OCI 工件的支持。
默认值:
True
以下 Open Container Initiative (OCI)工件类型默认内置在 Red Hat Quay 中,并通过
FEATURE_GENERAL_OCI_SUPPORT
配置字段启用:
字段
|
介质类型
|
支持的内容类型
|
application/vnd.cncf.helm.config.v1+json
application/tar+gzip
,
application/vnd.cncf.helm.chart.content.v1.tar+gzip
Cosign
application/vnd.oci.image.config.v1+json
application/vnd.dev.cosign.simplesigning.v1+json
,
application/vnd.dsse.envelope.v1+json
application/vnd.oci.image.config.v1+json
text/spdx
,
text/spdx+xml
,
text/spdx+json
application/vnd.oci.image.config.v1+json
application/vnd.syft+json
CycloneDX
application/vnd.oci.image.config.v1+json
application/vnd.cyclonedx
,
application/vnd.cyclonedx+xml
,
application/vnd.cyclonedx+json
in-toto
application/vnd.oci.image.config.v1+json
application/vnd.in-toto+json
Unknown
application/vnd.cncf.openpolicyagent.policy.layer.v1+rego
application/vnd.cncf.openpolicyagent.policy.layer.v1+rego
,
application/vnd.cncf.openpolicyagent.data.layer.v1+json
|
表 3.18. 其他 OCI 工件配置字段
字段
|
类型
|
描述
|
ALLOWED_OCI_ARTIFACT_TYPES
允许的 OCI 工件 mimetypes 和关联的层类型集合。
|
可以使用
ALLOWED_OCI_ARTIFACT_TYPES
配置字段将默认不支持的其他 OCI 工件类型添加到您的 Red Hat Quay 部署中。
使用以下引用添加额外的 OCI 工件类型:
表 3.19. 未知介质类型配置字段
字段
|
类型
|
描述
|
IGNORE_UNKNOWN_MEDIATYPES
启用后,允许容器 registry 平台对支持的工件类型忽略特定的限制,并接受任何未识别或未知的介质类型。
默认:
false
|
表 3.20. 操作日志存储配置
字段
|
类型
|
描述
|
FEATURE_LOG_EXPORT
是否允许导出操作日志。
默认值:
True
LOGS_MODEL
指定处理日志数据的首选方法。
值 :
一个数据库 ,
transition_reads_both_writes_es
,
elasticsearch
, mvapich
Default:
database
LOGS_MODEL_CONFIG
用于操作日志的日志模型配置。
LOGS_MODEL_CONFIG
[object]:操作日志的日志模型配置。
elasticsearch_config
[object]: Elasticsearch 集群配置。
access_key
[string]: Elasticsearch 用户(或 AWS ES 的 IAM 密钥)。
示例
:
some_string
Host
[string]: Elasticsearch 集群端点。
示例
:
host.elasticsearch.example
index_prefix
[string]: Elasticsearch 的索引前缀。
示例
:
logentry_
index_settings
[object]: Elasticsearch 的索引设置
use_ssl
[boolean]:将 ssl 用于 Elasticsearch。默认值为
True
。
示例
:
True
SECRET_KEY
[字符串]:Elasticsearch 密码(或 AWS ES 的 IAM secret)。
示例
:
some_secret_string
AWS_REGION
[string]: Amazon Web 服务区域。
示例
:
us-east-1
端口
[number]: Elasticsearch 集群端点端口。
示例
:
1234
kinesis_stream_config
[object]: AWS Kinesis Stream 配置。
aws_secret_key
[string]: AWS secret key。
示例
:
some_secret_key
stream_name
[string]: Kinesis 流将操作日志发送到。
示例
:
logentry-kinesis-stream
aws_access_key
[string]: AWS 访问密钥。
示例
:
some_access_key
retries
[number]:在单个请求中尝试次数。
示例
:
5
read_timeout
[number]:从连接读取时超时前的秒数。
示例
:
5
max_pool_connections
[number] :连接池中要保留的最大连接数。
示例
:10
AWS_REGION
[string]: AWS region。
示例
:
us-east-1
connect_timeout
[number]:尝试进行连接时超时前的秒数。
示例
:
5
producer
[string]:如果日志记录到 Elasticsearch,则日志制作者。
Enum
: kafka, elasticsearch, kinesis_stream
示例
:
kafka
kafka_config
[object]: Kafka 集群配置。
topic
[string]: Kafka topic 将日志条目发布到。
示例
:
logentry
bootstrap_servers
[array]:从中引导客户端的 Kafka 代理列表。
max_block_seconds
[number]: 在
send ()
期间最大要阻止的秒数,因为缓冲区已满或元数据不可用。
示例
:10
producer
[string]:
splunk
mvapich_config
[object]: Splunk 操作日志的日志模型配置或 Splunk 集群配置。
Host
[string]: Splunk 集群端点。
port
[integer]: Splunk 管理集群端点端口。
bearer_token
[string]: Splunk 的 bearer 令牌。
verify_ssl
[boolean]: 启用(
True
)或为 HTTPS 连接禁用 TLS/SSL 验证。
index_prefix
[string]: Splunk 的索引前缀。
ssl_ca_path
[字符串]:指向包含用于 SSL 验证的证书颁发机构(CA)的单个
.pem
文件的相对容器路径。
表 3.21. 操作日志轮转和归档配置
字段
|
类型
|
描述
|
FEATURE_ACTION_LOG_ROTATION
启用日志轮转和归档会将所有超过 30 天的日志移到存储。
默认:
false
ACTION_LOG_ARCHIVE_LOCATION
如果启用了操作日志存档,则在其中放置存档数据的存储引擎。
示例:
s3_us_east
ACTION_LOG_ARCHIVE_PATH
如果启用了操作日志存档,则存储中要放置存档数据的路径。
示例: archive
/actionlogs
ACTION_LOG_ROTATION_THRESHOLD
轮转日志的时间间隔。
示例:
30d
|
表 3.22. 审计日志配置字段
字段
|
类型
|
描述
|
ACTION_LOG_AUDIT_LOGINS
当设置为
True
时,请跟踪高级事件,如登录和注销、UI 和使用 Docker 进行常规用户、机器人帐户以及特定于应用的令牌帐户。
默认:
True
|
表 3.23. 构建日志配置字段
字段
|
类型
|
描述
|
FEATURE_READER_BUILD_LOGS
如果设置为 true,则构建日志可以被对存储库具有读取访问权限的用户
读取
,而不仅仅是
写入
访问或
admin
访问权限。
Default:
False
LOG_ARCHIVE_LOCATION
在
DISTRIBUTED_STORAGE_CONFIG
中定义的存储位置,用于放置归档的构建日志。
示例:
s3_us_east
LOG_ARCHIVE_PATH
配置的存储引擎下的路径,在其中将归档的构建日志放在
.JSON
格式。
示例: archive
/buildlogs
|
表 3.24. Dockerfile 构建支持
字段
|
类型
|
描述
|
FEATURE_BUILD_SUPPORT
是否支持 Dockerfile 构建。
Default:
False
SUCCESSIVE_TRIGGER_FAILURE_DISABLE_THRESHOLD
Number
如果没有设置
None
,则构建触发器前可能会出现的连续失败次数。
默认:
100
SUCCESSIVE_TRIGGER_INTERNAL_ERROR_DISABLE_THRESHOLD
Number
如果没有设置
None
,则构建触发器前可能出现的连续内部错误数量
默认为
5
|
表 3.25. GitHub 构建触发器
字段
|
类型
|
描述
|
FEATURE_GITHUB_BUILD
是否支持 GitHub 构建触发器。
默认值:
False
此 Red Hat Quay 实例注册的消费者 secret (客户端 secret)。
|
表 3.27. GitLab 构建触发器
字段
|
类型
|
描述
|
FEATURE_GITLAB_BUILD
是否支持 GitLab 构建触发器。
默认值:
False
默认情况下,Red Hat Quay 不会在运行时设置关键事件所需的关键空间事件。为此,请将
REDIS_SKIP_KEYSPACE_EVENT_SETUP
设置为
false
。
EXECUTOR
启动此类型的可执行文件定义。有效值为
kubernetes
和
ec2
。
BUILDER_NAMESPACE
将进行 Red Hat Quay 构建的 Kubernetes 命名空间。
K8S_API_SERVER
发生 Builds 的 OpenShift Container Platform 集群的 API 服务器的主机名。
K8S_API_TLS_CA
为
Quay
应用构建集群的 CA 证书的
Quay
容器中的文件路径,以便在发出 API 调用时信任。
KUBERNETES_DISTRIBUTION
指明正在使用的 Kubernetes 类型。有效值为
openshift
和
k8s
。
CONTAINER_
*
定义每个构建 Pod 的资源请求和限值。
NODE_SELECTOR_
*
定义应调度
构建
Pod 的节点选择器标签名称-值对。
CONTAINER_RUNTIME
指定 Builder 是否应该运行
docker
或
podman
。使用红帽的
quay-builder
镜像的客户应将其设置为
podman
。
SERVICE_ACCOUNT_NAME/SERVICE_ACCOUNT_TOKEN
定义
构建
Pod 将要使用的服务帐户名称或令牌。
QUAY_USERNAME/QUAY_PASSWORD
定义拉取
WORKER_IMAGE
字段中指定的 Red Hat Quay 构建 worker 镜像所需的 registry 凭证。客户应提供一个 Red Hat Service Account 凭证,如
https://access.redhat.com/RegistryAuthentication
文章中的针对 registry.redhat.io 的"创建 Registry 服务账户"部分。
WORKER_IMAGE
Red Hat Quay Builder 镜像的镜像引用。registry.redhat.io/quay/quay-builder
WORKER_TAG
需要的 Builder 镜像的标签。最新版本为 3.9。
BUILDER_VM_CONTAINER_IMAGE
对包含运行每个 Red Hat Quay Build. (
registry.redhat.io/quay/quay-builder-qemu-rhcos:3.9
)所需的内部虚拟机的完整引用。
SETUP_TIME
指定在 Build Manager 中尚未注册自身时构建超时的秒数。默认值为
500
秒。尝试重启三次的构建。如果构建在三次尝试后没有注册自己,则被视为失败。
MINIMUM_RETRY_THRESHOLD
此设置与多个可执行文件一起使用。它指示在选择不同的可执行文件前尝试启动构建的次数。设置为
0
表示对于构建作业需要的次数没有限制。这个值应该保持非常小(三个或更少),以确保在基础架构故障期间快速进行故障转移。必须为此设置指定一个值。例如,
Kubernetes
被设置为第一个 executor,
EC2
设置为第二个 executor。如果您希望最后一次尝试始终在 EC2 上执行作业,而不是在 EC2 上执行,您可以将 Kubernetes executor 的
MINIMUM_RETRY_THRESHOLD
设置为
1
,EC2 的
MINIMUM_RETRY_THRESHOLD
设置为 0 (如果未设置则为
0
)。在这种情况下,Kubernetes 的
MINIMUM_RETRY_THRESHOLD
retries_remaining (1)
将评估为
False
,因此回退到配置的第二个 executor。
SSH_AUTHORIZED_KEYS
在
ignition
配置中要引导的 SSH 密钥列表。这允许使用其他密钥通过 SSH 连接到 EC2 实例或 QEMU 虚拟机(VM)。
|
表 3.29. OAuth 字段
字段
|
类型
|
描述
|
DIRECT_OAUTH_CLIENTID_WHITELIST
字符串数组
Quay 管理
的应用程序的客户端 ID 列表,允许在不用户批准的情况下执行直接 OAuth 批准。
|
3.26.1. GitHub OAuth 配置字段
表 3.30. GitHub OAuth 字段
字段
|
类型
|
描述
|
FEATURE_GITHUB_LOGIN
是否支持 GitHub 登录
**默认:
False
GITHUB_LOGIN_CONFIG
配置使用 GitHub (Enterprise)作为外部登录提供程序。
.ALLOWED_ORGANIZATIONS
字符串数组
白名单为使用 ORG_RESTRICT 选项的 GitHub (Enterprise)组织的名称。
.API_ENDPOINT
要使用的 GitHub (Enterprise) API 的端点。必须覆盖 github.com
示例:
https://api.github.com/
.CLIENT_ID
(Required)
此 Red Hat Quay 实例注册的客户端 ID;不能与
GITHUB_TRIGGER_CONFIG
共享。
示例:
0e8dbe15c7630b6780
.CLIENT_SECRET
(Required)
此 Red Hat Quay 实例注册的客户端 secret。
示例:
e4a58ddd3d7408b7aec109e85564a0d153d3e846
.GITHUB_ENDPOINT
(Required)
GitHub (Enterprise)的端点。
示例
:
https://github.com/
.ORG_RESTRICT
如果为 true,则只有机构白名单中的用户可以使用此提供程序登录。
|
3.26.2. Google OAuth 配置字段
表 3.31. Google OAuth 字段
字段
|
类型
|
描述
|
FEATURE_GOOGLE_LOGIN
是否支持 Google 登录。
**Default:
False
GOOGLE_LOGIN_CONFIG
使用 Google 进行外部身份验证的配置。
.CLIENT_ID
(Required)
此 Red Hat Quay 实例的注册的客户端 ID。
示例:
0e8dbe15c4c7630b6780
.CLIENT_SECRET
(Required)
此 Red Hat Quay 实例注册的客户端 secret。
示例:
e4a58ddd3d7408b7aec109e85564a0d153d3e846
|
表 3.32. OIDC 字段
<string>_LOGIN_CONFIG
(Required)
包含 OIDC 配置设置的父键。通常,OIDC 供应商的名称,如
AZURE_LOGIN_CONFIG
,但接受任何任意字符串。
.CLIENT_ID
(Required)
此 Red Hat Quay 实例的注册的客户端 ID。
示例:
0e8dbe15c4c7630b6780
.CLIENT_SECRET
(Required)
此 Red Hat Quay 实例注册的客户端 secret。
示例:
e4a58ddd3d7408b7aec109e85564a0d153d3e846
.DEBUGLOG
是否启用调试。
.LOGIN_BINDING_FIELD
当内部授权设置为 LDAP 时使用。Red Hat Quay 读取此参数,并尝试使用此用户名为用户搜索 LDAP 树。如果存在,它会自动创建到该 LDAP 帐户的链接。
.LOGIN_SCOPES
添加 Red Hat Quay 用来与 OIDC 供应商通信的其他范围。
.OIDC_ENDPOINT_CUSTOM_PARAMS
支持 OIDC 端点上的自定义查询参数。支持以下端点:
authorization_endpoint
、
token_endpoint
和
user_endpoint
。
.OIDC_ISSUER
允许用户定义要验证的签发者。例如,JWT 令牌容器是一个称为 的参数,它定义谁发出了令牌。
默认情况下,这从
.well-know/openid/configuration
端点读取,该端点由每个 OIDC 供应商公开。如果此验证失败,则没有登录。
.OIDC_SERVER
(Required)
用于身份验证的 OIDC 服务器地址。
:
https://sts.windows.net/6c878…
/
.PREFERRED_USERNAME_CLAIM_NAME
将首选用户名设置为令牌中的参数。
.SERVICE_ICON
更改登录屏幕上的图标。
.SERVICE_NAME
(Required)
正在验证的服务名称。
示例:
Azure AD
.VERIFIED_EMAIL_CLAIM_NAME
用于验证用户电子邮件地址的声明名称。
|
在
FEATURE_EXTENDED_REPOSITORY_NAMES
属性下添加了对嵌套存储库路径名称的支持。此可选配置默认添加到 config.yaml 中。启用允许在存储库名称中使用
/
。
表 3.33. OCI 和嵌套软件仓库配置字段
字段
|
类型
|
描述
|
FEATURE_EXTENDED_REPOSITORY_NAMES
启用对嵌套存储库的支持
默认:
True
|
3.29. QuayIntegration 配置字段
以下配置字段可用于 QuayIntegration 自定义资源:
Name
|
描述
|
模式
|
allowlistNamespaces
(可选)
要包含的命名空间列表。
Array
clusterid
(Required)
与此集群关联的 ID。
credentialsSecret.key
(Required)
包含与 Quay registry 通信的凭据的机密。
denylistNamespaces
(可选)
要排除的命名空间列表。
Array
insecureRegistry
(Optional)
是否跳过 Quay registry 的 TLS 验证
quayHostname
(Required)
Quay registry 的主机名。
scheduledImageStreamImport
(Optional)
是否启用镜像流导入。
|
表 3.34. 邮件配置字段
字段
|
类型
|
描述
|
FEATURE_MAILING
电子邮件是否已启用
默认:
False
MAIL_DEFAULT_SENDER
如果指定了,当 Red Hat Quay 发送电子邮件时,电子邮件地址用作
from
。如果没有,则默认为
[email protected]
示例:
[email protected]
MAIL_PASSWORD
发送电子邮件时要使用的 SMTP 密码
MAIL_PORT
Number
要使用的 SMTP 端口。如果没有指定,则默认为 587。
MAIL_SERVER
用于发送电子邮件的 SMTP 服务器。只有在将 FEATURE_MAILING 设置为 true 时才需要。
Example:
smtp.example.com
MAIL_USERNAME
发送电子邮件时使用的 SMTP 用户名
MAIL_USE_TLS
如果指定,是否使用 TLS 发送电子邮件
默认:
True
|
表 3.35. 用户配置字段
字段
|
类型
|
描述
|
FEATURE_SUPER_USERS
超级用户是否被支持
默认:
true
FEATURE_USER_CREATION
是否可以创建用户(通过非超级用户)
Default:
true
FEATURE_USER_LAST_ACCESSED
是否记录用户最后一次访问的时间
默认:
true
FEATURE_USER_LOG_ACCESS
如果设置为 true,则用户有权访问其命名空间的审计日志
默认:
false
FEATURE_USER_METADATA
是否收集和支持用户元数据
默认:
false
FEATURE_USERNAME_CONFIRMATION
如果设置为 true,用户可以在通过 OpenID Connect (OIDC)登录或非数据库内部身份验证提供程序(如 LDAP)登录时确认和修改其初始用户名。
默认:
true
FEATURE_USER_RENAME
如果设置为 true,用户可以重命名自己的命名空间
默认:
false
FEATURE_INVITE_ONLY_USER_CREATION
创建的用户都必须被其他用户邀请
默认:
false
FRESH_LOGIN_TIMEOUT
新登录需要用户重新输入其密码的时间
示例
:
5m
USERFILES_LOCATION
存储引擎的 ID,在其中放置用户上传的文件
示例
:
s3_us_east
USERFILES_PATH
storage 下放置用户上传文件的路径
示例
:
userfiles
USER_RECOVERY_TOKEN_LIFETIME
恢复用户帐户的令牌的时间长度为有效的
Pattern
:
^[0-9]+(w|m|d|h|s)$
Default
:
30m
FEATURE_SUPERUSERS_FULL_ACCESS
授予超级用户从命名空间中没有拥有或具有显式权限的命名空间中从其他存储库中读取、写入和删除内容的权限。
Default:
False
FEATURE_SUPERUSERS_ORG_CREATION_ONLY
是否只允许超级用户创建机构。
Default:
False
FEATURE_RESTRICTED_USERS
当使用
RESTRICTED_USERS_WHITELIST
设置时,受限用户无法在自己的命名空间中创建机构或内容。普通权限适用于机构成员资格,例如,根据他们所属的团队,受限用户仍会在机构中具有正常权限。
Default:
False
RESTRICTED_USERS_WHITELIST
当使用
FEATURE_RESTRICTED_USERS: true
设置时,特定用户不包括在
FEATURE_RESTRICTED_USERS
设置中。
GLOBAL_READONLY_SUPER_USERS
设置后,授予此列表的用户读取所有存储库的访问权限,无论它们是公共存储库。
|
使用以下引用,使用所需的配置字段更新
config.yaml
文件。
3.31.1.1. FEATURE_SUPERUSERS_FULL_ACCESS 配置参考
---
SUPER_USERS:
- quayadmin
FEATURE_SUPERUSERS_FULL_ACCESS: True
---
3.31.1.2. GLOBAL_READONLY_SUPER_USERS 配置参考
---
GLOBAL_READONLY_SUPER_USERS:
- user1
---
3.31.1.3. FEATURE_RESTRICTED_USERS 配置参考
---
AUTHENTICATION_TYPE: Database
FEATURE_RESTRICTED_USERS: true
---
3.31.1.4. RESTRICTED_USERS_WHITELIST 配置参考
先决条件
-
在
config.yaml
文件中,
FEATURE_RESTRICTED_USERS
设置为
true
。
AUTHENTICATION_TYPE: Database
FEATURE_RESTRICTED_USERS: true
RESTRICTED_USERS_WHITELIST:
- user1
---
当设置此字段时,即使将
FEATURE_RESTRICTED_USERS
设置为
true
,也可以将白名单创建机构或从存储库中读取或写入内容。其他用户(如
user2、
user3
和
user4)
受创建机构、读取或写入内容的限制
表 3.36. reCAPTCHA 配置字段
字段
|
类型
|
描述
|
FEATURE_RECAPTCHA
用户登录和恢复是否需要 Recaptcha
Default:
False
RECAPTCHA_SECRET_KEY
如果启用了 recaptcha,则 Recaptcha 服务的 secret 键
RECAPTCHA_SITE_KEY
如果启用了 recaptcha,则 Recaptcha 服务的站点键
|
表 3.37. ACI 配置字段
字段
|
类型
|
描述
|
FEATURE_ACI_CONVERSION
是否启用转换为 ACI
默认:
False
GPG2_PRIVATE_KEY_FILENAME
用于解密 ACI 的私钥的文件名
GPG2_PRIVATE_KEY_NAME
用于为 ACI 签名的私钥的名称
GPG2_PUBLIC_KEY_FILENAME
用于加密 ACI 的公钥的文件名
|
表 3.39. 应用程序令牌配置字段
字段
|
类型
|
描述
|
FEATURE_APP_SPECIFIC_TOKENS
如果启用,用户可以创建供 Docker CLI 使用的令牌
Default:
True
APP_SPECIFIC_TOKEN_EXPIRATION
外部应用程序令牌的过期。
Default
None
Pattern:
^[0-9]+(w|m|d|h|s)$
EXPIRED_APP_SPECIFIC_TOKEN_GC
外部应用程序令牌在垃圾回收前保留的时长
默认:
1d
|
表 3.40. 其它配置字段
字段
|
类型
|
描述
|
ALLOW_PULLS_WITHOUT_STRICT_LOGGING
如果为 true,则拉取仍将成功,即使无法写入 pull audit 日志条目。如果数据库处于只读状态,且需要拉取以便在那个时间内继续,则这非常有用。
默认 :
False
AVATAR_KIND
要显示的 avatars 的类型,可生成内联(本地)或 Gravatar (gravatar)
Values:
local, gravatar
BROWSER_API_CALLS_XHR_ONLY
如果启用,则只允许被标记为来自浏览器的、由 XHR 发出的 API 调用
默认:
True
DEFAULT_NAMESPACE_MAXIMUM_BUILD_COUNT
Number
可以在命名空间中排队的默认最大构建数。
Default:
None
ENABLE_HEALTH_DEBUG_SECRET
如果指定,则会提供给健康端点的 secret,以便在不以超级用户身份进行身份验证时查看完整的调试信息
EXTERNAL_TLS_TERMINATION
如果支持 TLS,则设为
true
,但在 Quay 之前的一个层终止。当 Quay 使用自己的 SSL 证书运行时,设置为
false
,并直接接收 TLS 流量。
FRESH_LOGIN_TIMEOUT
新登录需要用户重新输入密码的时间
示例:
5m
HEALTH_CHECKER
配置的健康检查
示例:
('RDSAwareHealthCheck', {'access_key': 'foo', 'secret_key': 'bar'})
PROMETHEUS_NAMESPACE
应用到所有公开的 Prometheus 指标的前缀
默认:
quay
PUBLIC_NAMESPACES
字符串数组
如果命名空间定义在公共命名空间列表中,则它将在
所有
用户的存储库列表页上显示,无论用户是否是命名空间的成员。通常,这供企业客户用于配置一组"well-known"命名空间。
REGISTRY_STATE
registry 的状态
值:
normal
或
read-only
SEARCH_MAX_RESULT_PAGE_COUNT
Number
用户在限制前可以分页搜索的最大页面数
默认:10
SEARCH_RESULTS_PER_PAGE
Number
搜索页面返回的结果数
默认:10
V2_PAGINATION_SIZE
Number
V2 registry API 中每个页面返回的结果数量
默认:
50
WEBHOOK_HOSTNAME_BLACKLIST
字符串数组
验证时不允许 webhook 的主机名集合,而不是 localhost 之外
CREATE_PRIVATE_REPO_ON_PUSH
通过 push 创建新软件仓库是否被设置为私有可见
默认:
True
CREATE_NAMESPACE_ON_PUSH
新推送到不存在的机构时是否创建它
默认:
False
NON_RATE_LIMITED_NAMESPACES
字符串数组
如果使用
FEATURE_RATE_LIMITS
启用了速率限制,您可以为需要无限访问的特定命名空间覆盖它。
FEATURE_UI_V2
设置后,允许用户尝试 beta UI 环境。
Default:
True
FEATURE_REQUIRE_TEAM_INVITE
在将用户添加到团队时是否需要邀请
默认值:
True
FEATURE_REQUIRE_ENCRYPTED_BASIC_AUTH
未加密的密码(而不是加密令牌)都可用于基本 auth
默认值:
False
FEATURE_RATE_LIMITS
是否启用对 API 和 registry 端点的速率限制。将 FEATURE_RATE_LIMITS 设置为
true
会导致
nginx
将某些 API 调用限制为每秒 30 个。如果没有设置该功能,API 调用会每秒限制为 300 个(有效无限)。
Default:
False
FEATURE_FIPS
如果设置为 true,Red Hat Quay 将使用 FIPS 兼容哈希功能运行
Default:
False
FEATURE_AGGREGATED_LOG_COUNT_RETRIEVAL
是否允许检索聚合的日志计数
Default:
True
FEATURE_ANONYMOUS_ACCESS
是否允许匿名用户浏览和拉取公共存储库
默认值:
True
FEATURE_DIRECT_LOGIN
用户是否可以直接登录到 UI
默认值:
True
FEATURE_LIBRARY_SUPPORT
从 Docker
默认值拉取和推送时是否允许"无命名空间"存储库
默认值
FEATURE_PARTIAL_USER_AUTOCOMPLETE
如果设置为 true,则自动完成将应用到部分 usernames+
Default:
True
FEATURE_PERMANENT_SESSIONS
会话是永久的
默认值:
True
FEATURE_PUBLIC_CATALOG
如果设置为 true,
_catalog
端点会返回公共存储库。否则,只能返回私有存储库。
Default:
False
|
以下字段已弃用或过时。
表 3.41. 旧配置字段
字段
|
类型
|
描述
|
FEATURE_BLACKLISTED_EMAILS
如果设置为 true,则如果电子邮件域列入黑名单,则无法创建新的用户帐户
BLACKLISTED_EMAIL_DOMAINS
字符串数组
FEATURE_BLACKLISTED_EMAILS 设置为 true 时使用的电子邮件地址域列表
示例:"
example.com", "example.org"
BLACKLIST_V2_SPEC
Red Hat Quay 将响应 V2 的 Docker CLI 版本
不被支持
示例
: <
1.8.0
Default:
<
;1.6.0
DOCUMENTATION_ROOT
文档链接的根 URL
SECURITY_SCANNER_V4_NAMESPACE_WHITELIST
应该启用安全扫描程序的命名空间
FEATURE_RESTRICTED_V1_PUSH
如果设置为 true,则只有 V1_PUSH_WHITELIST 中列出的命名空间支持 V1 push
Default:
True
V1_PUSH_WHITELIST
字符串数组
如果 FEATURE_RESTRICTED_V1_PUSH 设置为 true,支持 V1 push 的命名空间名称的数组
FEATURE_HELM_OCI_SUPPORT
启用对 Helm 工件的支持。
默认值:
False
|
表 3.42. 用户界面 v2 配置字段
字段
|
类型
|
描述
|
FEATURE_UI_V2
设置后,允许用户尝试 beta UI 环境。
Default:
False
|
启用
FEATURE_UI_V2
后,您可以在用户界面和用户界面的新版本间切换。
这个 UI 目前处于 beta 阶段,可能会有变化。在当前状态下,用户只能创建、查看和删除组织、存储库和镜像标签。
在旧 UI 中运行 Red Hat Quay 时,超时会话要求用户在弹出窗口中再次输入密码。使用新的 UI 时,用户返回到主页面,需要输入其用户名和密码凭证。这是一个已知问题,并将在以后的 UI 版本中解决。
在旧 UI 和新 UI 之间如何报告镜像清单大小有一个差异。在传统的 UI 中,以兆字节为单位报告镜像清单。在新的 UI 中,Red Hat Quay 使用 MB (MB)的标准定义来报告镜像清单大小。
在部署的
config.yaml
文件中,添加
FEATURE_UI_V2
参数并将其设置为
true
,例如:
FEATURE_TEAM_SYNCING: false
FEATURE_UI_V2: true
FEATURE_USER_CREATION: true
登录到您的 Red Hat Quay 部署。
在 Red Hat Quay 部署的导航窗格中,会给一个可以在
Current UI
和
New UI
之间切换的选项。点切换按钮将其设置为新的 UI,然后点
Use Beta Environment
,例如:
表 3.43. IPv6 配置字段
字段
|
类型
|
描述
|
FEATURE_LISTEN_IP_VERSION
启用 IPv4、IPv6 或双栈协议系列。必须正确设置此配置字段,否则 Red Hat Quay 无法启动。
默认:
IPv4
其他配置:
IPv6
、
双栈
|
表 3.44. 品牌配置字段
字段
|
类型
|
Description
|
在 Red Hat Quay UI 中自定义徽标和 URL 的品牌。
.logo
(Required)
主徽标镜像 URL。
标头徽标默认为 205x30 PX。Web UI 的屏幕上的 Red Hat Quay 登录表格徽标默认为 356.5x39.7 PX。
示例:
/static/img/quay-horizontal-color.svg
.footer_img
UI footer 的徽标。默认为 144x34 PX.
Example:
/static/img/rhacm.svg
.footer_url
footer 镜像的链接。
示例:
https://redhat.com
|
3.40.1. Red Hat Quay 品牌配置示例
以下配置字段依赖于相同名称的 Flask API 配置字段。
表 3.45. 会话注销配置字段
字段
|
类型
|
描述
|
PERMANENT_SESSION_LIFETIME
用于设置永久会话的过期日期
的时间增量
。默认值为 31 天,这会在大约一个月后保持永久会话。
默认:
2678400
|
以下 YAML 是启用会话生命周期时的建议配置。
不建议更改会话生命周期。在设置会话超时时,管理员应了解分配的时间。如果您设置的时间过早,它可能会中断您的工作流。
Red Hat Quay 支持许多用于动态配置的环境变量。
所有区域应当使用相同的配置,但存储后端除外,这些后端可以使用
QUAY_DISTRIBUTED_STORAGE_PREFERENCE
环境变量明确进行配置。
表 4.1. geo-replication 配置
变量
|
类型
|
描述
|
QUAY_DISTRIBUTED_STORAGE_PREFERENCE
要使用的首选存储引擎(由 DISTRIBUTED_STORAGE_CONFIG 中的 ID)。
|
Red Hat Quay 由很多不同的进程组成,它们都在同一个容器中运行。很多进程与数据库交互。
如果启用,与数据库交互的每个进程都将包含一个连接池。这些每个进程连接池配置为最多维护 20 个连接。在负载过重时,可以为 Red Hat Quay 容器中的每个进程填充连接池。在某些部署和负载下,这可能需要分析以确保 Red Hat Quay 不会超过配置的数据库的最大连接数。
连接池将释放闲置连接。要立即发布所有连接,Red Hat Quay 需要重启。
通过将环境变量
DB_CONNECTION_POOLING
设置为
true
或
false
,可以切换数据库连接池。
表 4.2. 数据库连接池配置
变量
|
类型
|
描述
|
DB_CONNECTION_POOLING
启用或禁用数据库连接池
如果启用了数据库连接池,则可以更改连接池的最大大小。这可以通过以下
config.yaml
选项完成:
可以使用环境变量指定同时 HTTP 连接的数量。它们可以指定为整个组件,也可以指定特定组件。每个进程的默认值为
50
个并行连接。
表 4.3. HTTP 连接计数配置
变量
|
类型
|
描述
|
WORKER_CONNECTION_COUNT
Number
同时 HTTP 连接
默认:
50
WORKER_CONNECTION_COUNT_REGISTRY
Number
同步 registry 的 HTTP 连接
默认:
WORKER_CONNECTION_COUNT
WORKER_CONNECTION_COUNT_WEB
Number
Web UI 同时 HTTP 连接
默认:
WORKER_CONNECTION_COUNT
WORKER_CONNECTION_COUNT_SECSCAN
Number
Clair 的 HTTP 连接
Default:
WORKER_CONNECTION_COUNT
|
表 4.4. worker 计数变量
变量
|
类型
|
描述
|
WORKER_COUNT
Number
进程数量的通用覆盖
WORKER_COUNT_REGISTRY
Number
指定处理
Quay
容器中 Registry 请求的进程数量
值:
8
到
64
之间的整数
WORKER_COUNT_WEB
Number
指定处理容器中的 UI/Web 请求的进程数量
值:
2
到
32
之间的整数
WORKER_COUNT_SECSCAN
Number
指定处理容器中的安全扫描(如 Clair)集成的进程数量
值:
整数。因为 Operator 为资源请求和限值指定 2 个 vCPU,所以在
2
到
4
之间设置这个值是安全的。但是,如果保证,用户可以运行更多,例如
16
个。
|
Red Hat Quay 上提供以下调试变量。
表 4.5. 调试配置变量
变量
|
类型
|
描述
|
DEBUGLOG
是否启用或禁用调试日志。
用户_DEBUG
整数.
0
或
1
。
用于在明文中调试 LDAP 操作,包括密码。必须与
DEBUGLOG=TRUE
一起使用。
设置
192.168.1.0/24_DEBUG=1
以明文形式公开凭据。在调试后,应该从 Red Hat Quay 部署中删除此变量。此环境变量生成的日志文件应该被修改,在发送到其他用户前应删除密码。请谨慎使用。
|
第 5 章 Clair for Red Hat Quay
Clair v4 (Clair)是一个开源应用程序,它利用静态代码分析来解析镜像内容和报告影响内容的漏洞。Clair 与 Red Hat Quay 打包,并可用于独立和 Operator 部署。它可以在高度可扩展的配置中运行,其中组件可根据企业环境单独扩展。
Clair 由一个结构化的 YAML 文件配置。每个 Clair 节点都需要指定其将在其中运行的模式,以及通过 CLI 标志或环境变量的配置文件的路径。例如:
$ clair -conf ./path/to/config.yaml -mode indexer
$ clair -conf ./path/to/config.yaml -mode matcher
以上命令各自使用相同的配置文件启动两个 Clair 节点。一个运行索引功能,另一个则运行匹配的功能。
如果您以
组合
模式运行 Clair,则必须在配置中提供索引器、匹配器和通知程序配置块。
以下 YAML 显示了一个 Clair 配置示例:
http_listen_addr: ""
introspection_addr: ""
log_level: ""
tls: {}
indexer:
connstring: ""
scanlock_retry: 0
layer_scan_concurrency: 5
migrations: false
scanner: {}
airgap: false
matcher:
connstring: ""
indexer_addr: ""
migrations: false
period: ""
disable_updaters: false
update_retention: 2
matchers:
names: nil
config: nil
updaters:
sets: nil
config: nil
notifier:
connstring: ""
migrations: false
indexer_addr: ""
matcher_addr: ""
poll_interval: ""
delivery_interval: ""
disable_summary: false
webhook: null
amqp: null
stomp: null
auth:
psk: nil
trace:
name: ""
probability: null
jaeger:
agent:
endpoint: ""
collector:
endpoint: ""
username: null
password: null
service_name: ""
tags: nil
buffer_max: 0
metrics:
name: ""
prometheus:
endpoint: null
dogstatsd:
url: ""
为了完整,以上 YAML 文件列出了每个键。使用此配置文件原样将导致一些选项不会正常设置默认值。
下表描述了 Clair 部署可用的常规配置字段。
字段
|
Typhttp_listen_ae
|
描述
|
http_listen_addr
配置公开 HTTP API 的位置。
默认:
:6060
introspection_addr
配置 Clair 的指标和健康端点公开的位置。
log_level
设置日志级别。需要以下字符串之一:
debug-color
、
debug
、
info
、
warn
、
error
、
fatal
、
panic
包含提供 TLS/SSL 和 HTTP/2 的 HTTP API 配置的映射。
.cert
要使用的 TLS 证书。必须是全链证书。
|
常规 Clair 字段的配置示例
以下示例显示了 Clair 配置。
下表描述了 Clair 的
indexer
组件的配置字段。
字段
|
类型
|
描述
|
indexer
提供 Clair 索引器节点配置。
.airgap
为索引器和获取者禁用对互联网的 HTTP 访问。允许私有 IPv4 和 IPv6 地址。数据库连接不受影响。
.connstring
Postgres 连接字符串。接受格式为 URL 或 libpq 连接字符串。
.index_report_request_concurrency
速率限制索引报告创建请求的数量。把它设置为
0,
以自动调整此值的大小。设置负值意味着无限。自动大小是可用内核数的倍数。
如果超过并发状态,API 会返回
429
状态代码。
.scanlock_retry
代表秒的正整数。在清单扫描时并发索引器锁定,以避免冲突。这个值调整等待索引器轮询锁定的频率。
.layer_scan_concurrency
正整数限制并发层扫描的数量。Indexers 将同时匹配清单的层。这个值调整索引程序并行扫描的层数。
.migrations
索引器节点是否处理迁移到其数据库的迁移。
.scanner
索引器配置。
扫描程序允许将配置选项传递给层扫描程序。如果设计这样做,扫描程序会将此配置传递给它。
.scanner.dist
特定扫描程序名称和任意 YAML 作为值的映射。
.scanner.package
特定扫描程序名称和任意 YAML 作为值的映射。
.scanner.repo
特定扫描程序名称和任意 YAML 作为值的映射。
|
indexer 配置示例
以下示例显示了 Clair 的 hypothetical indexer 配置。
下表描述了 Clair 的
matcher
组件的配置字段。
与
matchers
配置字段不同。
字段
|
类型
|
描述
|
matcher
提供 Clair 匹配器节点配置。
.cache_age
控制用户应提示缓存响应的时间。
.connstring
Postgres 连接字符串。接受格式为 URL 或 libpq 连接字符串。
.max_conn_pool
限制数据库连接池大小。
Clair 允许自定义连接池大小。这个数字直接设定同时允许的活跃数据库连接的数量。
这个参数将在以后的发行版本中被忽略。用户应该通过连接字符串进行配置。
.indexer_addr
匹配者联系索引程序来创建漏洞报告。需要此索引器的位置。
默认值为
30m
。
.migrations
匹配器节点是否处理迁移到其数据库的迁移。
.period
决定新安全公告的更新频率。
默认值为
30m
。
.disable_updaters
是否运行后台更新。
Default:
False
.update_retention
设置在垃圾回收周期之间保留的更新操作数量。这应该根据数据库大小限制设置为安全 MAX 值。
默认值为
10m
。
如果提供小于
0
的值,则禁用垃圾回收。
2
是确保可将更新与通知进行比较的最小值。
|
matcher 配置示例
下表描述了 Clair 的
matchers
组件的配置字段。
与
matcher
配置字段不同。
表 5.1. matchers 配置字段
字段
|
类型
|
描述
|
matchers
字符串数组
为树内
匹配器提供配置
。
.names
一个字符串值列表,用于告知匹配者工厂关于启用的匹配者信息。如果值设为
null
,则默认匹配者列表将运行。以下字符串被接受:
alpine-matcher
,
aws-matcher
,
debian-matcher
,
gobin
,
java-maven
,
oracle
,
photon
,
python
, rhel ,
rhel
-container-matcher
,
ruby
, suse ,
suse
,
ubuntu-matcher
.config
为特定匹配程序提供配置。
由匹配者名称的键的映射,其中包含将提供给 matchers 工厂构造器的子对象。例如:
|
matchers 配置示例
以下示例显示了一个假设的 Clair 部署,它只需要
alpine
,
aws
,
debian
,
oracle
matchers。
5.1.7. Clair updaters 配置字段
下表描述了 Clair 的 updaters 组件
的配置字段
。
表 5.2. 更新器配置字段
字段
|
类型
|
描述
|
updaters
为匹配器的更新管理器提供配置。
.sets
一个值列表,告知更新管理器要运行的更新程序。
如果值设为
null
,则默认更新程序将运行以下内容:
alpine
,
aws
,
clair.cvss
,
debian
,
oracle
,
photon
,
osv
,
rhel
,
rhcc
suse
,
0.11.0-
如果留空,则运行零 updaters。
.config
为特定更新器集提供配置。
由 updater 集名称的键的映射,其中包含将提供给 updater 设置构造器的子对象。有关每个 updater 的子对象列表,请参阅"高级更新器配置"。
|
updaters 配置示例
在以下配置中,仅配置
rhel
集。也定义了特定于
rhel
更新器的
ignore_unpatched
变量。
Clair 的一般通知程序配置字段如下。
字段
|
类型
|
描述
|
提供 Clair notifier 节点配置。
.connstring
postgres 连接字符串。接受格式为 URL 或 libpq 连接字符串。
.migrations
通知节点是否处理迁移到其数据库的迁移。
.indexer_addr
通知程序联系索引器来创建或获取受漏洞影响的清单。需要此索引器的位置。
.matcher_addr
通知程序联系一个匹配者来列出更新操作并获取 diffs。这个匹配器的位置是必需的。
.poll_interval
通知程序查询匹配程序更新操作的频率。
.delivery_interval
通知程序尝试发送创建的频率,或者以前失败的通知。
.disable_summary
控制是否应为每个清单将通知总结到一个。
|
通知程序配置示例
以下
通知程序
片断用于最小配置。
5.1.8.1. Clair Webhook 配置字段
以下 Webhook 字段可用于 Clair 通知程序环境。
表 5.3. Clair Webhook 字段
.webhook
配置 webhook 交付通知程序。
.webhook.target
发送 webhook 的 URL。
.webhook.callback
检索通知的回调 URL。通知 ID 将附加到此 URL。
这通常是托管 Clair notifier 的位置。
.webhook.headers
将标头名称与值列表关联的映射。
|
Webhook 配置示例
以下高级消息队列协议(AMQP)字段可用于 Clair 通知程序环境。
.amqp
配置用于 AMQP 交付的通知。
[NOTE] ==== Clair 不自行声明任何 AMQP 组件。所有尝试使用交换或队列的尝试都是被动的,将失败。代理管理员应提前设置交换和队列。===
.amqp.direct
如果为
true
,则通知程序会将各个通知(而非回调)提供给配置的 AMQP 代理。
.amqp.rollup
当
amqp.direct
设为
true
时,这个值会告知通知通知在直接发送中发送多少通知。例如,如果
直接
设置为
true
,并且
amqp.rollup
设置为
5
,则通知程序在单个 JSON 有效负载中为代理提供超过 5 个通知。将值设为
0
实际的效果是将其设置为
1
。
.amqp.exchange
要连接的 AMQP 交换。
.amqp.exchange.name
要连接的交换名称。
.amqp.exchange.type
交换的类型。通常,以下之一:
direct
、
fanout
、
topic
、
Header
。
.amqp.exchange.durability
配置的队列是 durable。
.amqp.exchange.auto_delete
配置的队列是否使用
auto_delete_policy
。
.amqp.routing_key
每个通知的路由键的名称。
.amqp.callback
如果
amqp.direct
设为
false
,则此 URL 在发送到代理的通知回调中提供。此 URL 应该指向 Clair 的通知 API 端点。
.amqp.uris
要连接的一个或多个 AMQP 代理的列表,按优先级顺序进行。
.amqp.tls
配置到 AMQP 代理的 TLS/SSL 连接。
.amqp.tls.root_ca
可以读取 root CA 的文件系统路径。
.amqp.tls.cert
可以读取 TLS/SSL 证书的文件系统路径。
[NOTE] ==== Clair 还允许
SSL_CERT_DIR
,如 Go
crypto/x509
软件包所记录。====
.amqp.tls.key
读取 TLS/SSL 私钥的文件系统路径。
|
AMQP 配置示例
以下示例显示了 Clair 的 hypothetical AMQP 配置。
5.1.8.3. Clair STOMP 配置字段
Clair 通知程序环境提供了以下简单文本导向型消息协议(STOMP)字段。
.stomp
|
对象
|
为 STOMP 发送配置通知程序。
|
.stomp.direct
如果为
true
,则通知程序会向配置的 STOMP 代理提供单独的通知(而非回调)。
.stomp.rollup
如果
stomp.direct
设为
true
,则该值限制在单个直接交付中发送的通知数量。例如,如果
直接
设置为
true
,并且
rollup
设置为
5
,则通知程序在单个 JSON 有效负载中为代理提供超过 5 个通知。将值设为
0
实际的效果是将其设置为
1
。
.stomp.callback
如果
stomp.callback
设为
false
,则通知回调中提供的 URL 将发送到代理。此 URL 应该指向 Clair 的通知 API 端点。
.stomp.destination
要发送通知的 STOMP 目的地。
.stomp.uris
按顺序连接的一个或多个 STOMP 代理的列表。
.stomp.tls
配置到 STOMP 代理的 TLS/SSL 连接。
.stomp.tls.root_ca
可以读取 root CA 的文件系统路径。
[NOTE] ==== Clair 还尊重
SSL_CERT_DIR
,如 Go
crypto/x509
软件包所记录。====
.stomp.tls.cert
可以读取 TLS/SSL 证书的文件系统路径。
.stomp.tls.key
读取 TLS/SSL 私钥的文件系统路径。
.stomp.user
为 STOMP 代理配置登录详情。
.stomp.user.login
要连接的 STOMP 登录。
.stomp.user.passcode
要连接的 STOMP passcode。
|
STOMP 配置示例
以下示例显示了 Clair 的 hypothetical STOMP 配置。
以下授权配置字段可用于 Clair。
字段
|
类型
|
描述
|
定义 Clair 的外部和服务内 JWT 身份验证。如果定义了多个
auth
机制,Clair 会选择一个。目前,不支持多种机制。
定义预共享密钥身份验证。
.psk.key
所有方签名和验证 JWT 之间分发的共享 base64 编码密钥。
.psk.iss
用于验证的 JWT 签发者列表。空列表接受 JWT 声明中的任何签发者。
|
授权配置示例
以下
授权
片断用于最小配置。
以下 trace 配置字段可用于 Clair。
字段
|
类型
|
描述
|
trace
定义基于 OpenTelemetry 的分布式追踪配置。
.name
应用程序跟踪的名称将属于。
.probability
会发生 trace 的概率。
.jaeger
定义 Jaeger 追踪的值。
.jaeger.agent
定义配置发送到 Jaeger 代理的值。
.jaeger.agent.endpoint
<
host>:<post>
; 语法中的地址,可以提交 trace。
.jaeger.collector
为配置发送到 Jaeger 收集器定义值。
.jaeger.collector.endpoint
<
host>:<post>
; 语法中的地址,可以提交 trace。
.jaeger.collector.username
Jaeger 用户名。
.jaeger.collector.password
Jaeger 密码。
.jaeger.service_name
在 Jaeger 中注册的服务名称。
.jaeger.tags
用于提供额外的元数据的键值对。
.jaeger.buffer_max
在将内存缓冲到 Jaeger 后端前可缓冲的最大 span 数量,以存储和分析。
|
trace 配置示例
以下示例显示了 Clair 的 hypothetical trace 配置。
以下指标配置字段可用于 Clair。
字段
|
类型
|
描述
|
metrics
定义基于 OpenTelemetry 的分布式追踪配置。
.name
使用的指标的名称。
.prometheus
配置 Prometheus 指标导出器。
.prometheus.endpoint
定义提供指标的路径。
|
指标配置示例
以下示例显示了 Clair 的 hypothetical 指标配置。
|
|
|