7.2. スタンドアロンの Red Hat Quay デプロイメントでの Clair のセットアップ

スタンドアロンの 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 Postgres データベースをデプロイします。

    $ 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:5433 \
      -v /home/<user-name>/quay-poc/postgres-clairv4:/var/lib/pgsql/data:Z \
      {postgresimage}
  4. Clair デプロイメント用に Postgres 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 拡張機能を Postgres データベースに追加する必要があります。適切な権限を持つユーザーの場合は、拡張機能を作成すると、Clair によって自動的に追加されます。ユーザーが適切な権限を持っていない場合は、Clair を開始する前に拡張機能を追加する必要があります。

    拡張機能が存在しない場合は、Clair が起動しようとすると、ERROR: Please load the "uuid-ossp" extension.(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 システムでまだ使用されていないポート (8081 など) を使用して、Clair の HTTP エンドポイントを設定します。
  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
      run: ""
      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.8.15
    注記

    複数の Clair コンテナーを実行することもできますが、単一のコンテナーを超えるデプロイシナリオでは、Kubernetes や OpenShift Container Platform などのコンテナーオーケストレーターを使用することが強く推奨されます。