搜索

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

download PDF

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

流程

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

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

    $ setfacl -m u:26:-wx /home/<user-name>/quay-poc/postgres-clairv4
  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-13:1-109
  4. 为您的 Clair 部署安装 PostgreSQL uuid-ossp 模块:

    $ 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: 载入 "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 \
      {productrepo}/{quayimage}:{productminv} config secret
  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/
  11. 为您的 Clair 配置文件创建一个文件夹,例如:

    $ mkdir /etc/opt/clairv4/config/
  12. 进入 Clair 配置文件夹:

    $ cd /etc/opt/clairv4/config/
  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"

    有关 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.11.1
    注意

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

3.1. 使用带有上游 Red Hat Quay 的 Clair

对于大多数用户,需要独立于当前版本的 Clair 升级(4.7.2)。然而,在某些情况下,出于各种原因,客户可能希望从 上游存储库 中拉取 Clair 镜像,如特定程序错误修复或尝试尚未发布下游的新功能。您可以使用 Red Hat Quay 运行 Clair 的上游版本。

重要

Clair 的上游版本还没有经过全面测试,以便与 Red Hat Quay 的兼容性。因此,这个组合可能会导致部署出现问题。

流程

  1. 如果 Clair 正在运行,输入以下命令来停止 Clair:

    $ podman stop <clairv4_container_name>
  2. 导航到 上游存储库,找到要使用的 Clair 版本,并将它拉取到本地机器。例如:

    $ podman pull quay.io/projectquay/clair:nightly-2024-02-03
  3. 使用容器镜像启动 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
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.