7.2. OpenShift ではない Red Hat Quay のデプロイメントに Clair をセットアップ
OpenShift 上で稼働していない Red Hat Quay のデプロイメントでは、Clair のセキュリティースキャンを手動で設定することが可能です。すでに Clair V2 を実行している Red Hat Quay のデプロイメントは、以下の手順で Clair V4 をデプロイメントに追加することができます。
(フォールトトレラントが望ましい) Postgres データベースサーバーを導入します。なお、Clair は Postgres データベースに
uuid-ossp
エクステンションを追加する必要があります。Clair のconfig.yaml
で指定されたユーザーが、拡張機能を作成するのに必要な権限を持っている場合は、Clair 自身によって自動的に追加されます。そうでない場合は、Clair を起動する前に拡張機能を追加する必要があります。この拡張子がない場合は、Clair を起動しようとすると以下のエラーが表示されます。ERROR: Please load the "uuid-ossp" extension. (SQLSTATE 42501)
特定のフォルダーで Clair 設定ファイルを作成します (例:
/etc/clairv4/config/config.yaml
)。config.yaml
introspection_addr: :8089 http_listen_addr: :8080 log_level: debug indexer: connstring: host=clairv4-postgres port=5432 dbname=clair user=postgres password=postgres sslmode=disable scanlock_retry: 10 layer_scan_concurrency: 5 migrations: true matcher: connstring: host=clairv4-postgres port=5432 dbname=clair user=postgres password=postgres sslmode=disable max_conn_pool: 100 run: "" migrations: true indexer_addr: clair-indexer notifier: connstring: host=clairv4-postgres port=5432 dbname=clair user=postgres password=postgres sslmode=disable delivery_interval: 1m poll_interval: 5m migrations: true # tracing and metrics trace: name: "jaeger" probability: 1 jaeger: agent_endpoint: "localhost:6831" service_name: "clair" metrics: name: "prometheus"
Clair の設定フォーマットの詳細は、アップストリームの Clair ドキュメント に記載されています。
コンテナーイメージ経由で Clair を実行し、作成したファイルから設定をマウントします。
$ podman run -p 8080:8080 -p 8089:8089 -e CLAIR_CONF=/clair/config.yaml -e CLAIR_MODE=combo -v /etc/clair4/config:/clair -d registry.redhat.io/quay/clair-rhel8:v3.5.7
- 新しい Clair V4 エンドポイントを使用するために Red Hat Quay を設定するには、前のセクションの残りの指示に従ってください。
この形で複数の Clair コンテナーを実行することも可能ですが、1 つのコンテナーを超えるデプロイメントシナリオでは、Kubernetes や OpenShift などのコンテナーオーケストレーターの使用を強く推奨します。