第 3 章 在独立 Red Hat Quay 部署中设置 Clair


对于独立的 Red Hat Quay 部署,您可以手动设置 Clair。

流程

  1. 在 Red Hat Quay 安装目录中,为 Clair 数据库数据创建一个新目录:

    $ mkdir /home/<user-name>/quay-poc/postgres-clairv4
    Copy to Clipboard Toggle word wrap
  2. 输入以下命令为 postgres-clairv4 文件设置适当的权限:

    $ setfacl -m u:26:-wx /home/<user-name>/quay-poc/postgres-clairv4
    Copy to Clipboard Toggle word wrap
  3. 输入以下命令部署 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-15
    Copy to Clipboard Toggle word wrap
  4. 为您的 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'
    Copy to Clipboard Toggle word wrap

    输出示例

    CREATE EXTENSION
    Copy to Clipboard Toggle word wrap

    注意

    Clair 需要 uuid-ossp 扩展添加到其 PostgreSQL 数据库中。对于具有适当特权的用户,Clair 会自动添加创建扩展。如果用户没有正确的特权,则必须在启动 Clair 前添加扩展。

    如果扩展不存在,则 Clair 尝试启动时会显示以下错误: ERROR: Please load the "uuid-ossp" 扩展。(SQLSTATE 42501)

  5. 如果 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.15.1 config secret
    Copy to Clipboard Toggle word wrap
  6. 登录到配置工具,点 UI 的 Security Scanner 部分中的 Enable Security Scanning
  7. 使用尚未在 quay-server 系统上使用端口设置 Clair 的 HTTP 端点,如 8081
  8. 使用 Generate PSK 按钮创建预共享密钥(PSK)。

    安全扫描器 UI

    Security Scanner

  9. 验证并下载 Red Hat Quay 的 config.yaml 文件,然后停止运行配置编辑器的 Quay 容器。
  10. 将新配置捆绑包提取到 Red Hat Quay 安装目录中,例如:

    $ tar xvf quay-config.tar.gz -d /home/<user-name>/quay-poc/
    Copy to Clipboard Toggle word wrap
  11. 为您的 Clair 配置文件创建一个文件夹,例如:

    $ mkdir /etc/opt/clairv4/config/
    Copy to Clipboard Toggle word wrap
  12. 进入 Clair 配置文件夹:

    $ cd /etc/opt/clairv4/config/
    Copy to Clipboard Toggle word wrap
  13. 创建 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"
    Copy to Clipboard Toggle word wrap

    有关 Clair 配置格式的更多信息,请参阅 Clair 配置参考

  14. 使用容器镜像启动 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.15.1
    Copy to Clipboard Toggle word wrap
    注意

    也可以运行多个 Clair 容器,但在单一容器之外,强烈建议使用 Kubernetes 或 OpenShift Container Platform 等容器编配器的部署场景。

3.1. 升级 Clair PostgreSQL 数据库

如果要将 Red Hat Quay 升级到 13,则必须将 Clair PostgreSQL 数据库版本从 PostgreSQL 版本 13 版本 15 迁移。这需要关闭 Clair PostgreSQL 13 数据库并运行迁移脚本来启动该进程。

使用以下步骤将 Clair PostgreSQL 数据库从版本 13 升级到 15。

重要

在迁移过程成功后,Clair 安全扫描可能会临时中断。

流程

  1. 输入以下命令停止 Red Hat Quay 容器:

    $ sudo podman stop <quay_container_name>
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令来停止 Clair 容器:

    $ sudo podman stop <clair_container_id>
    Copy to Clipboard Toggle word wrap
  3. 从 SCLOrg 的数据迁移流程运行以下 Podman 进程,它允许从远程 PostgreSQL 服务器迁移数据: https://github.com/sclorg/postgresql-container/tree/master/13#data-migration

    $ sudo podman run -d --name <clair_migration_postgresql_database> 
    1
    
      -e POSTGRESQL_MIGRATION_REMOTE_HOST=<container_ip_address> \ 
    2
    
      -e POSTGRESQL_MIGRATION_ADMIN_PASSWORD=remoteAdminP@ssword \
      -v </host/data/directory:/var/lib/pgsql/data:Z> \ 
    3
    
      [ OPTIONAL_CONFIGURATION_VARIABLES ]
      registry.redhat.io/rhel8/postgresql-15
    Copy to Clipboard Toggle word wrap
    1
    为您的 Clair PostgreSQL 15 迁移数据库插入名称。
    2
    您的新 Clair PostgreSQL 15 数据库容器 IP 地址。可以通过运行以下命令来获取: sudo podman inspect -f "{{.NetworkSettings.IPAddress}}" postgresql-quay
    3
    您必须指定与初始 Clair PostgreSQL 13 部署中不同的卷挂载点,并修改上述目录的访问控制列表。例如:
    $ mkdir -p /host/data/clair-postgresql15-directory
    Copy to Clipboard Toggle word wrap
    $ setfacl -m u:26:-wx /host/data/clair-postgresql15-directory
    Copy to Clipboard Toggle word wrap

    这可防止数据被新容器覆盖。

  4. 停止 Clair PostgreSQL 13 容器:

    $ sudo podman stop <clair_postgresql13_container_name>
    Copy to Clipboard Toggle word wrap
  5. 完成 PostgreSQL 迁移后,使用步骤 3 中的新数据卷挂载运行 Clair PostgreSQL 15 容器,例如 </ host/data/clair-postgresql15-directory:/var/lib/postgresql/data>

    $ sudo podman run -d --rm --name <postgresql15-clairv4> \
      -e POSTGRESQL_USER=<clair_username> \
      -e POSTGRESQL_PASSWORD=<clair_password> \
      -e POSTGRESQL_DATABASE=<clair_database_name> \
      -e POSTGRESQL_ADMIN_PASSWORD=<admin_password> \
      -p 5433:5432 \
      -v </host/data/clair-postgresql15-directory:/var/lib/postgresql/data:Z> \
        registry.redhat.io/rhel8/postgresql-15
    Copy to Clipboard Toggle word wrap
  6. 输入以下命令启动 Red Hat Quay 容器:

    $ sudo podman run -d --rm -p 80:8080 -p 443:8443 --name=quay \
    -v /home/<quay_user>/quay-poc/config:/conf/stack:Z \
    -v /home/<quay_user>/quay-poc/storage:/datastorage:Z \
    {productrepo}/{quayimage}:{productminv}
    Copy to Clipboard Toggle word wrap
  7. 输入以下命令启动 Clair 容器:

    $ sudo podman run -d --name clairv4 \
    -p 8081:8081 -p 8088:8088 \
    -e CLAIR_CONF=/clair/config.yaml \
    -e CLAIR_MODE=combo \
    registry.redhat.io/quay/clair-rhel8:{productminv}
    Copy to Clipboard Toggle word wrap

如需更多信息,请参阅 数据迁移

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat