第3章 スタンドアロンの 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-15Clair デプロイメント用に 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" extension.(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.15.4 config secret- 設定ツールにログインし、UI の Security Scanner セクションで Enable Security Scanning をクリックします。
-
quay-serverシステムでまだ使用されていないポート (8081など) を使用して、Clair の HTTP エンドポイントを設定します。 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.15.4注記複数の Clair コンテナーを実行することもできますが、単一のコンテナーを超えるデプロイシナリオでは、Kubernetes や OpenShift Container Platform などのコンテナーオーケストレーターを使用することが強く推奨されます。
3.1. Clair PostgreSQL データベースのアップグレード リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Quay をバージョン 13 にアップグレードする場合は、Clair PostgreSQL データベースのバージョンを PostgreSQL バージョン 13
Clair PostgreSQL データベースをバージョン 13 からバージョン 15 にアップグレードするには、次の手順に従います。
移行手順が成功した後、Clair セキュリティースキャンが一時的に中断される可能性があります。
手順
次のコマンドを実行して、Red Hat Quay コンテナーを停止します。
$ sudo podman stop <quay_container_name>次のコマンドを実行して、Clair コンテナーを停止します。
$ sudo podman stop <clair_container_id>SCLOrg の データ移行 手順から次の Podman プロセスを実行します。これにより、リモート PostgreSQL サーバーからのデータ移行が可能になります。
$ 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- 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$ setfacl -m u:26:-wx /host/data/clair-postgresql15-directoryこれにより、新しいコンテナーによってデータが上書きされるのを防ぎます。
Clair PostgreSQL 13 コンテナーを停止します。
$ sudo podman stop <clair_postgresql13_container_name>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次のコマンドを実行して、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}次のコマンドを実行して 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}
詳細は、Data Migration を参照してください。