7.2. 在独立的 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.0 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.0
注意也有可能运行多个 Clair 容器,但对于单一容器以外的部署场景,我们强烈建议使用 Kubernetes 或 OpenShift Container Platform 等容器编配器。