第 3 章 在独立 Red Hat Quay 部署中设置 Clair
对于独立的 Red Hat Quay 部署,您可以手动设置 Clair。
流程
在 Red Hat Quay 安装目录中,为 Clair 数据库数据创建一个新目录:
$ mkdir /home/<user-name>/quay-poc/postgres-clairv4输入以下命令为
postgres-clairv4文件设置适当的权限:$ setfacl -m u:26:-wx /home/<user-name>/quay-poc/postgres-clairv4输入以下命令部署 Clair PostgreSQL 数据库:
$ sudo podman run -d --name postgresql-clairv4 \ -e POSTGRESQL_USER=clairuser \ -e POSTGRESQL_PASSWORD=clairpass \ -e POSTGRESQL_DATABASE=clair \ -e POSTGRESQL_ADMIN_PASSWORD=adminpass \ -p 5433:5432 \ -v /home/<user-name>/quay-poc/postgres-clairv4:/var/lib/pgsql/data:Z \ registry.redhat.io/rhel8/postgresql-13:1-109为您的 Clair 部署安装 PostgreSQL
uuid-ossp模块:$ sudo podman exec -it postgresql-clairv4 /bin/bash -c 'echo "CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\"" | psql -d clair -U postgres'输出示例
CREATE EXTENSION注意Clair 需要
uuid-ossp扩展添加到其 PostgreSQL 数据库中。对于具有适当特权的用户,Clair 会自动添加创建扩展。如果用户没有正确的特权,则必须在启动 Clair 前添加扩展。如果扩展不存在,则 Clair 尝试启动时会显示以下错误:
ERROR: Please load the "uuid-ossp" 扩展。(SQLSTATE 42501)。如果
Quay容器正在运行并在配置模式中重启它,请将现有配置作为卷载入:$ sudo podman run --rm -it --name quay_config \ -p 80:8080 -p 443:8443 \ -v $QUAY/config:/conf/stack:Z \ registry.redhat.io/quay/quay-rhel8:v3.12.9 config secret- 登录到配置工具,点 UI 的 Security Scanner 部分中的 Enable Security Scanning。
-
使用尚未在
quay-server系统上使用端口设置 Clair 的 HTTP 端点,如8081。 使用 Generate PSK 按钮创建预共享密钥(PSK)。
安全扫描器 UI
-
验证并下载 Red Hat Quay 的
config.yaml文件,然后停止运行配置编辑器的Quay容器。 将新配置捆绑包提取到 Red Hat Quay 安装目录中,例如:
$ tar xvf quay-config.tar.gz -d /home/<user-name>/quay-poc/为您的 Clair 配置文件创建一个文件夹,例如:
$ mkdir /etc/opt/clairv4/config/进入 Clair 配置文件夹:
$ cd /etc/opt/clairv4/config/创建 Clair 配置文件,例如:
http_listen_addr: :8081 introspection_addr: :8088 log_level: debug indexer: connstring: host=quay-server.example.com port=5433 dbname=clair user=clairuser password=clairpass sslmode=disable scanlock_retry: 10 layer_scan_concurrency: 5 migrations: true matcher: connstring: host=quay-server.example.com port=5433 dbname=clair user=clairuser password=clairpass sslmode=disable max_conn_pool: 100 migrations: true indexer_addr: clair-indexer notifier: connstring: host=quay-server.example.com port=5433 dbname=clair user=clairuser password=clairpass sslmode=disable delivery_interval: 1m poll_interval: 5m migrations: true auth: psk: key: "MTU5YzA4Y2ZkNzJoMQ==" iss: ["quay"] # tracing and metrics trace: name: "jaeger" probability: 1 jaeger: agent: endpoint: "localhost:6831" service_name: "clair" metrics: name: "prometheus"有关 Clair 配置格式的更多信息,请参阅 Clair 配置参考。
使用容器镜像启动 Clair,挂载在来自您创建的文件中的配置中:
$ sudo podman run -d --name clairv4 \ -p 8081:8081 -p 8088:8088 \ -e CLAIR_CONF=/clair/config.yaml \ -e CLAIR_MODE=combo \ -v /etc/opt/clairv4/config:/clair:Z \ registry.redhat.io/quay/clair-rhel8:v3.12.9注意也可以运行多个 Clair 容器,但在单一容器之外,强烈建议使用 Kubernetes 或 OpenShift Container Platform 等容器编配器的部署场景。
3.1. 将 Clair 与上游镜像用于 Red Hat Quay 复制链接链接已复制到粘贴板!
对于大多数用户,不需要从当前版本(4.7.4)中独立升级 Clair。然而,在某些情况下,客户可能希望出于各种原因从上游 存储库拉取 Clair 镜像,如出于特定程序错误修复或尝试尚未发布下游的新功能。您可以使用以下步骤在 Red Hat Quay 中运行 Clair 的上游版本。
Clair 的上游版本尚未经过充分测试,以便与 Red Hat Quay 兼容。因此,这种组合可能会导致部署出现问题。
流程
如果 Clair 正在运行,输入以下命令停止 Clair:
$ podman stop <clairv4_container_name>导航到 上游存储库,找到要使用的 Clair 版本,并将它拉取到您的本地计算机。例如:
$ podman pull quay.io/projectquay/clair:nightly-2024-02-03使用容器镜像启动 Clair,挂载在来自您创建的文件中的配置中:
$ podman run -d --name clairv4 \ -p 8081:8081 -p 8088:8088 \ -e CLAIR_CONF=/clair/config.yaml \ -e CLAIR_MODE=combo \ -v /etc/opt/clairv4/config:/clair:Z \ quay.io/projectquay/clair:nightly-2024-02-03