Red Hat Quay の設定


Red Hat Quay 3

設定オプションを使用した Red Hat Quay のカスタマイズ

Red Hat OpenShift Documentation Team

概要

Red Hat Quay の設定

第1章 Red Hat Quay 設定の開始

Red Hat Quay は、独立したスタンドアロン設定でデプロイすることも、OpenShift Container Platform の Red Hat Quay Operator を使用してデプロイすることもできます。

Red Hat Quay 設定を作成、取得、更新、および検証する方法は、使用しているデプロイメントのタイプによって異なります。ただし、コア設定オプションはどちらのデプロイメントタイプでも同じです。コア設定は主に config.yaml ファイルを通じて設定されますが、設定 API を使用して設定することもできます。

Red Hat Quay のスタンドアロンデプロイメントの場合は、レジストリーを開始する前に、最低限必要な設定パラメーターを指定する必要があります。Red Hat Quay レジストリーを開始するための最小要件は、「現在の設定の取得」セクションに記載されています。

Red Hat Quay Operator を使用して OpenShift Container Platform に Red Hat Quay をインストールする場合、Red Hat Quay Operator はレジストリーをデプロイするためのデフォルト情報を提供するため、設定パラメーターを指定する必要はありません。

目的の設定で Red Hat Quay をデプロイしたら、デプロイから完全な設定を取得して保存する必要があります。完全な設定には、システムの再始動またはアップグレード時に必要になる可能性がある追加の生成値が含まれています。

第2章 Red Hat Quay 設定の免責事項

一部の機能と設定パラメーターは、Red Hat Quay のスタンドアロンデプロイメントでも Operator ベースのデプロイメントでも、積極的には使用または実装されていません。そのため、一部の機能を有効または無効にするフラグなどの機能フラグや、Red Hat サポートによって明示的に文書化されていない、または文書化が要求されていない設定パラメーターは、慎重に変更する必要があります。未使用の機能やパラメーターは、完全にテストまたはサポートされていない場合や、Red Hat Quay との互換性がない場合があります。未使用の機能パラメーターを変更すると、予期しない問題やデプロイメントの停止が発生する可能性があります。

スタンドアロンデプロイメントでの Red Hat Quay の設定は、Red Hat Quay の高度な設定 を参照してください。

Red Hat Quay Operator デプロイメントの設定は、OpenShift Container Platform での Red Hat Quay の設定 を参照してください。

2.1. Red Hat Quay 3.12 の設定更新

以下のセクションでは、Red Hat Quay 3.12 で追加された新しい設定フィールドを詳しく説明します。

2.1.1. レジストリーの自動プルーニング設定フィールド

Red Hat Quay の自動プルーニング機能に次の設定フィールドが追加されました。

フィールド

タイプ

説明

NOTIFICATION_TASK_RUN_MINIMUM_INTERVAL_MINUTES

整数

有効期限が切れるイメージに関する通知を再実行する頻度を定義する間隔 (分単位)。

デフォルト: 300

DEFAULT_NAMESPACE_AUTOPRUNE_POLICY

オブジェクト

組織全体のデフォルトの自動プルーニングポリシー。

    .method: number_of_tags

オブジェクト

保持するタグの数を指定するオプション。

    .value: <integer>

整数

method: number_of_tags と一緒に使用した場合に、保持するタグの数を示します。

たとえば、2 つのタグを保持するには、2 を指定します。

    .method: creation_date

オブジェクト

タグを保持する期間を指定するオプション。

    .value: <integer>

整数

creation_date と一緒に使用した場合に、タグを保持する期間を示します。

秒 (s)、日 (d)、月 (m)、週 (w)、または年 (y) に設定できます。有効な整数を含める必要があります。たとえば、タグを 1 年間保持するには、1y を指定します。

AUTO_PRUNING_DEFAULT_POLICY_POLL_PERIOD

整数

自動プルーナーワーカーをレジストリーレベルで実行する期間。デフォルトでは、1 日に 1 回 (24 時間に 1 回) 実行されるように設定されています。値は秒単位で指定する必要があります。

2.1.2. OAuth アクセストークンの再割り当て設定フィールド

OAuth アクセストークンの再割り当て用に次の設定フィールドが追加されました。

フィールド

タイプ

説明

FEATURE_ASSIGN_OAUTH_TOKEN

ブール値

組織管理者が他のユーザーに OAuth トークンを割り当てることを許可します。

OAuth アクセストークン再割り当ての YAML の例

# ...
FEATURE_ASSIGN_OAUTH_TOKEN: true
# ...

2.1.3. 脆弱性検出通知設定フィールド

セキュリティーレベルに基づいて検出された脆弱性をユーザーに通知するために、次の設定フィールドが追加されました。

フィールド

タイプ

説明

NOTIFICATION_MIN_SEVERITY_ON_NEW_INDEX

文字列

検出された脆弱性に関する新しい通知の最低セキュリティーレベルを設定します。最初のインデックスの後に大量の通知が作成されるのを回避します。定義されていない場合は、デフォルトで High になります。使用可能なオプションには、CriticalHighMediumLowNegligibleUnknown があります。

イメージ脆弱性通知の YAML の例

NOTIFICATION_MIN_SEVERITY_ON_NEW_INDEX: High

2.1.4. OCI リファラー API 設定フィールド

次の設定フィールドを使用すると、ユーザーが v2 API を使用してリポジトリー配下のマニフェストの OCI リファラーをリスト表示できるようになります。

フィールド

タイプ

説明

FEATURE_REFERRERS_API

ブール値

OCI 1.1 のリファラー API を有効にします。

OCI リファラー有効化の YAML の例

# ...
FEATURE_REFERRERS_API: true
# ...

2.1.5. 厳密なロギング設定フィールドの無効化

監査ログの送信先として設定された外部システム (Splunk や ElasticSearch など) が断続的に利用できなくなる場合に対処するために、次の設定フィールドが追加されました。True に設定すると、ロギングイベントが代わりに stdout に記録されます。

フィールド

タイプ

説明

ALLOW_WITHOUT_STRICT_LOGGING

ブール値

True に設定すると、Splunk や ElasticSearch などの外部ログシステムが断続的に利用できなくなる場合でも、ユーザーが通常どおりイメージをプッシュできます。代わりに、イベントは stdout に記録されます。オーバーライド ALLOW_PULLS_WITHOUT_STRICT_LOGGING が設定されている場合。

厳密なロギングの YAML の例

# ...
ALLOW_WITHOUT_STRICT_LOGGING: True
# ...

2.1.6. 通知間隔設定フィールド

Red Hat Quay の通知を強化するために、次の設定フィールドが追加されました。

フィールド

タイプ

説明

NOTIFICATION_TASK_RUN_MINIMUM_INTERVAL_MINUTES

整数

有効期限が切れるイメージに関する通知を再実行する頻度を定義する間隔 (分単位)。デフォルトでは、このフィールドは発生するイベントを 5 時間ごとに Red Hat Quay ユーザーに通知するように設定されています。

通知再実行の YAML の例

# ...
NOTIFICATION_TASK_RUN_MINIMUM_INTERVAL_MINUTES: 10
# ...

2.1.7. Clair のインデックス化レイヤーサイズ設定フィールド

Clair セキュリティースキャナーに以下の設定フィールドが追加されました。これにより、Red Hat Quay 管理者はインデックス作成に許可される最大レイヤーサイズを設定できます。

フィールド

タイプ

説明

SECURITY_SCANNER_V4_INDEX_MAX_LAYER_SIZE

文字列

インデックス化に許可される最大レイヤーサイズ。レイヤーサイズが設定済みのサイズを超えると、Red Hat Quay UI は、The manifest for this tag has layer(s) that are too large to index by the Quay Security Scanner メッセージを返します。デフォルトは 8G で、推奨される最大値は 10G です。
: 8G

2.2. 設定ファイルの編集

Red Hat Quay のスタンドアロンインスタンスをデプロイするには、最小限の設定情報を提供する必要があります。最小設定の要件は、「Red Hat Quay の最小設定」に記載されています。

必須フィールドに入力したら、設定を検証できます。問題がある場合は強調表示されます。

変更を有効にするには、レジストリーを再起動する必要があります。

2.3. スタンドアロンデプロイメントにおける設定ファイルの場所

Red Hat Quay のスタンドアロンデプロイメントの場合、Red Hat Quay レジストリーを開始するときに config.yaml ファイルを指定する必要があります。このファイルは設定ボリュームにあります。たとえば、次のコマンドで Red Hat Quay をデプロイする場合、設定ファイルは $QUAY/config/config.yaml にあります。

$ sudo podman run -d --rm -p 80:8080 -p 443:8443 \
   --name=quay \
   -v $QUAY/config:/conf/stack:Z \
   -v $QUAY/storage:/datastorage:Z \
   registry.redhat.io/quay/quay-rhel8:v3.13.1

2.4. 最小設定

Red Hat Quay のスタンドアロンデプロイメントには、以下の設定オプションが必要です。

  • サーバーのホスト名
  • HTTP または HTTPS
  • 認証タイプ (データベースや LDAP (Lightweight Directory Access Protocol) など)
  • データ暗号化用の秘密鍵
  • イメージのストレージ
  • メタデータ用のデータベース
  • ビルドログおよびユーザーイベント用の Redis
  • タグの有効期限オプション

2.4.1. 最小設定ファイルの例

次の例は、イメージにローカルストレージを使用する最小限の設定ファイルの例を示しています。

AUTHENTICATION_TYPE: Database
BUILDLOGS_REDIS:
    host: quay-server.example.com
    password: strongpassword
    port: 6379
    ssl: false
DATABASE_SECRET_KEY: 0ce4f796-c295-415b-bf9d-b315114704b8
DB_URI: postgresql://quayuser:quaypass@quay-server.example.com:5432/quay
DEFAULT_TAG_EXPIRATION: 2w
DISTRIBUTED_STORAGE_CONFIG:
    default:
        - LocalStorage
        - storage_path: /datastorage/registry
DISTRIBUTED_STORAGE_DEFAULT_LOCATIONS: []
DISTRIBUTED_STORAGE_PREFERENCE:
    - default
PREFERRED_URL_SCHEME: http
SECRET_KEY: e8f9fe68-1f84-48a8-a05f-02d72e6eccba
SERVER_HOSTNAME: quay-server.example.com
SETUP_COMPLETE: true
TAG_EXPIRATION_OPTIONS:
    - 0s
    - 1d
    - 1w
    - 2w
    - 4w
    - 3y
USER_EVENTS_REDIS:
    host: quay-server.example.com
    port: 6379
    ssl: false

2.4.2. ローカルストレージ

イメージへのローカルストレージの使用は、概念実証 の目的のためにレジストリーをデプロイする場合に限り推奨されます。

ローカルストレージを設定する場合は、レジストリーの起動時にコマンドラインでストレージを指定します。

次のコマンドは、ローカルディレクトリー $QUAY/storage をコンテナー内の datastorage ストレージパスにマップします。

$ sudo podman run -d --rm -p 80:8080 -p 443:8443 \
   --name=quay \
   -v $QUAY/config:/conf/stack:Z \
   -v $QUAY/storage:/datastorage:Z \
   registry.redhat.io/quay/quay-rhel8:v3.13.1

2.4.3. クラウドストレージ

ストレージの設定は、イメージストレージ セクションを参照してください。一部のユーザーにとっては、Google Cloud Platform とローカルストレージ設定の違いを比較すると役立つ場合があります。たとえば、次の YAML は Google Cloud Platform のストレージ設定を表しています。

$QUAY/config/config.yaml

DISTRIBUTED_STORAGE_CONFIG:
    default:
        - GoogleCloudStorage
        - access_key: GOOGQIMFB3ABCDEFGHIJKLMN
          bucket_name: quay_bucket
          secret_key: FhDAYe2HeuAKfvZCAGyOioNaaRABCDEFGHIJKLMN
          storage_path: /datastorage/registry
          boto_timeout: 120 1
DISTRIBUTED_STORAGE_DEFAULT_LOCATIONS: []
DISTRIBUTED_STORAGE_PREFERENCE:
    - default

1
オプション: 接続から読み取ろうとしたときにタイムアウト例外が出力されるまでの時間 (秒単位)。デフォルトは 60 秒です。また、接続を試行するときにタイムアウト例外が出力されるまでの時間 (秒単位) も含まれます。デフォルトは 60 秒です。

クラウドストレージを使用してレジストリーを起動する場合は、コマンドラインでの設定が必要ありません。以下に例を示します。

$ sudo podman run -d --rm -p 80:8080 -p 443:8443 \
   --name=quay \
   -v $QUAY/config:/conf/stack:Z \
   registry.redhat.io/quay/quay-rhel8:v3.13.1

第3章 設定フィールド

このセクションでは、Red Hat Quay のデプロイ時に必須および任意の設定フィールドの両方を説明します。

3.1. 必須の設定フィールド

Red Hat Quay の設定で必須のフィールドは、以下のセクションで説明されています。

3.2. 自動化オプション

以下のセクションでは、Red Hat Quay デプロイメントで利用可能な自動化オプションを説明します。

3.3. 任意の設定フィールド

Red Hat Quay の任意のフィールドは、以下のセクションで説明します。

3.4. 一般的な必須フィールド

以下の表は、Red Hat Quay デプロイメントの必須設定フィールドを説明しています。

表3.1 一般的な必須フィールド
フィールドタイプ説明

AUTHENTICATION_TYPE
(必須)

文字列

認証情報の認証に使用する認証エンジン。

値:
DatabaseLDAPJWTKeystoneOIDC のいずれか。

デフォルト: Database

PREFERRED_URL_SCHEME
(必須)

文字列

Red Hat Quay へのアクセスに使用する URL スキーム。

値:
http, https のいずれか。

デフォルト: http

SERVER_HOSTNAME
(必須)

文字列

スキームなしで Red Hat Quay にアクセスできる URL。

例:
quay-server.example.com

DATABASE_SECRET_KEY
(必須)

文字列

データベース内で機密フィールドを暗号化するのに使用されるキー。この値は、一度設定したら変更しないでください。変更すると、リポジトリーのミラーユーザー名やパスワード設定など、すべての信頼できるフィールドが無効になります。
この値は、Operator ベースのデプロイメントの場合、Red Hat Quay Operator によって自動的に設定されます。スタンドアロンデプロイメントの場合、管理者は Open SSL または同様のツールを使用して独自のキーを提供できます。キーの長さが 63 文字を超えないようにしてください。

SECRET_KEY
(必須)

文字列

ユーザーセッションを正しく解釈するために必要なセッション Cookie と CSRF トークンを暗号化するために使用されるキー。設定時に値を変更しないでください。すべての Red Hat Quay インスタンスで永続的である必要があります。すべてのインスタンスで永続的でない場合、ログインの失敗やセッションの永続性に関連するその他のエラーが発生する可能性があります。

SETUP_COMPLETE
(必須)

ブール値

これは、以前のバージョンのソフトウェアからそのまま残っているアーティファクトです。現時点では値を true に指定する 必要があります

3.5. データベースの設定

このセクションでは、Red Hat Quay デプロイメントで利用可能なデータベース設定フィールドを説明します。

3.5.1. データベース URI

Red Hat Quay では、必要な DB_URI フィールドを使用してデータベースへの接続を設定します。

以下の表は DB_URI 設定フィールドを説明します。

表3.2 データベース URI
フィールドタイプ説明

DB_URI
(必須)

文字列

認証情報を含む、データベースにアクセスするための URI。

DB_URI フィールドの例:

postgresql://quayuser:quaypass@quay-server.example.com:5432/quay

3.5.2. データベース接続引数

オプションの接続引数は、DB_CONNECTION_ARGS パラメーターで設定されます。DB_CONNECTION_ARGS で定義されたキーと値のペアの一部は汎用的なものも、データベース固有のものもあります。

以下の表は、データベース接続引数を説明します。

表3.3 データベース接続引数
フィールドタイプ説明

DB_CONNECTION_ARGS

オブジェクト

タイムアウトや SSL/TLS などのデータベースの任意の接続引数。

.autorollback

ブール値

スレッドローカル接続を使用するかどうか。
常に true にする必要があります。

.threadlocals

ブール値

自動ロールバック接続を使用するかどうか。
常に true にする必要があります。

3.5.2.1. PostgreSQL SSL/TLS 接続引数

SSL/TLS では、設定はデプロイするデータベースによって異なります。次の例は、PostgreSQL SSL/TLS 設定を示しています。

DB_CONNECTION_ARGS:
  sslmode: verify-ca
  sslrootcert: /path/to/cacert

sslmode オプションは、セキュアな SSL/TLS TCP/IP 接続がサーバーにネゴシエートされるかどうか、その優先度を決定します。モードは 6 つあります。

表3.4 SSL/TLS オプション
モード説明

disable

この設定では、非 SSL/TLS 接続のみが試行されます。

allow

設定では、まず非 SSL/TLS 接続が試行されます。失敗すると、SSL/TLS 接続が試行されます。

prefer
(デフォルト)

設定では、まず SSL/TLS 接続が試行されます。失敗すると、非 SSL/TLS 接続が試行されます。

require

設定では SSL/TLS 接続のみが試行されます。ルート CA ファイルが存在する場合は、verify-ca が指定されているのと同じ方法で証明書が検証されます。

verify-ca

設定では SSL/TLS 接続のみが試行され、サーバー証明書が信頼された認証局 (CA) によって発行されたかどうかが検証されます。

verify-full

SSL/TLS 接続のみを試行し、サーバー証明書が信頼できる CA によって発行されていること、および要求されたサーバーのホスト名が証明書内のホスト名と一致することが確認されます。

PostgreSQL の有効な引数の詳細は、Database Connection Control Functions を参照してください。

3.5.2.2. MySQL SSL/TLS 接続引数

次の例は、MySQL SSL/TLS 設定のサンプルを示しています。

DB_CONNECTION_ARGS:
  ssl:
    ca: /path/to/cacert

MySQL の有効な接続引数に関する情報は、Connecting to the Server Using URI-Like Strings or Key-Value Pairs を参照してください。

3.6. イメージストレージ

このセクションでは、Red Hat Quay で利用可能なイメージストレージ機能と設定フィールドを説明します。

3.6.1. イメージストレージ機能

以下の表は、Red Hat Quay のイメージストレージ機能を説明しています。

表3.5 ストレージ設定機能
フィールドタイプ説明

FEATURE_REPO_MIRROR

ブール値

true に設定されている場合は、リポジトリーのミラーリングを有効にします。

デフォルト: false

FEATURE_PROXY_STORAGE

ブール値

NGINX を使用してストレージ内のすべての直接ダウンロード URL をプロキシーするかどうか。

デフォルト: false

FEATURE_STORAGE_REPLICATION

ブール値

ストレージエンジン間で自動的にレプリケートするかどうか。

のデフォルト: false

3.6.2. イメージストレージ設定フィールド

以下の表は、Red Hat Quay のイメージストレージ設定フィールドを説明しています。

表3.6 ストレージ設定フィールド
フィールドタイプ説明

DISTRIBUTED_STORAGE_CONFIG
(必須)

オブジェクト

Red Hat Quay で使用するストレージエンジンの設定。各キーは、ストレージエンジンの一意の ID を表します。この値は、ストレージエンジンパラメーターを記述するオブジェクトのタプル (キー、値) で構成されます。

デフォルト: []

DISTRIBUTED_STORAGE_DEFAULT_LOCATIONS
(必須)

文字列の配列

イメージをデフォルトで他のすべてのストレージエンジンに対して完全にレプリケートする必要のあるストレージエンジンの一覧 (DISTRIBUTED_STORAGE_CONFIG の ID 別)。

DISTRIBUTED_STORAGE_PREFERENCE
(必須)

文字列の配列

使用する優先ストレージエンジン (DISTRIBUTED_STORAGE_CONFIGの ID 別)。優先エンジンとは、プルする必要がないかを先にチェックしてから、イメージがプッシュされることを意味します。

デフォルト: false

MAXIMUM_LAYER_SIZE

文字列

イメージレイヤーの最大許容サイズ。

パターン: ^[0-9]+(G|M)$

: 100G

デフォルト: 20G

3.6.3. ローカルストレージ

以下の YAML は、ローカルストレージを使用した設定のサンプルを示しています。

DISTRIBUTED_STORAGE_CONFIG:
  default:
    - LocalStorage
    - storage_path: /datastorage/registry
DISTRIBUTED_STORAGE_DEFAULT_LOCATIONS: []
DISTRIBUTED_STORAGE_PREFERENCE:
    - default

3.6.4. OpenShift Container Storage/NooBaa

以下の YAML は、OpenShift Container Storage/NooBaa インスタンスを使用した設定例を示しています。

DISTRIBUTED_STORAGE_CONFIG:
  rhocsStorage:
    - RHOCSStorage
    - access_key: access_key_here
      secret_key: secret_key_here
      bucket_name: quay-datastore-9b2108a3-29f5-43f2-a9d5-2872174f9a56
      hostname: s3.openshift-storage.svc.cluster.local
      is_secure: 'true'
      port: '443'
      storage_path: /datastorage/registry
      maximum_chunk_size_mb: 100 1
      server_side_assembly: true 2
1
最終コピーの最大チャンクサイズ (MB 単位) を定義します。server_side_assemblyfalse に設定されている場合、効果はありません。
2
オプション: Red Hat Quay がクライアントアセンブリーではなく、サーバー側アセンブリーと最終的なチャンクコピーの使用を試みるかどうか指定します。デフォルトは true です。

3.6.5. Ceph Object Gateway/RadosGW ストレージ

次の YAML は、Ceph/RadosGW を使用したサンプル設定を示しています。

注記

RadosGW は、オンプレミスの S3 互換ストレージソリューションです。これは、Amazon Web Services S3 で使用するために特別に設計された一般的な AWS S3Storage とは異なることに注意してください。つまり、RadosGW は S3 API を実装し、access_keysecret_keybucket_name などの認証情報が必要になります。Ceph Object Gateway および S3 API に関する詳細は、Ceph Object Gateway および S3 API を参照してください。

一般的な s3 アクセスのある RadosGW

DISTRIBUTED_STORAGE_CONFIG:
  radosGWStorage: 1
    - RadosGWStorage
    - access_key: <access_key_here>
      bucket_name: <bucket_name_here>
      hostname: <hostname_here>
      is_secure: true
      port: '443'
      secret_key: <secret_key_here>
      storage_path: /datastorage/registry
      maximum_chunk_size_mb: 100 2
      server_side_assembly: true 3

1
一般的な s3 アクセスに使用します。一般的な s3 アクセスは、厳密には Amazon Web Services (AWS) s3 に限定されず、RadosGW または他のストレージサービスでも使用できることに注意してください。AWS S3 ドライバーを使用した一般的な s3 アクセスの例は、「AWS S3 ストレージ」を参照してください。
2
オプション: 最終コピーの最大チャンクサイズ (MB 単位) を定義します。server_side_assemblyfalse に設定されている場合、効果はありません。
3
オプション: Red Hat Quay がクライアントアセンブリーではなく、サーバー側アセンブリーと最終的なチャンクコピーの使用を試みるかどうか指定します。デフォルトは true です。

3.6.6. AWS S3 ストレージ

以下の YAML は、AWS S3 ストレージを使用した設定のサンプルを示しています。

# ...
DISTRIBUTED_STORAGE_CONFIG:
  default:
    - S3Storage 1
    - host: s3.us-east-2.amazonaws.com
      s3_access_key: ABCDEFGHIJKLMN
      s3_secret_key: OL3ABCDEFGHIJKLMN
      s3_bucket: quay_bucket
      s3_region: <region> 2
      storage_path: /datastorage/registry
DISTRIBUTED_STORAGE_DEFAULT_LOCATIONS: []
DISTRIBUTED_STORAGE_PREFERENCE:
    - default
# ...
1
S3Storage ストレージドライバーは、AWS S3 バケットにのみ使用してください。これは、RadosGW ドライバーや他のストレージサービスを使用できる一般的な S3 アクセスとは異なることに注意してください。例は、「例 B: 一般的な S3 アクセスで RadosGW を使用する」を参照してください。
2
オプション: Amazon Web Services のリージョン。デフォルトは us-east-1 です。
3.6.6.1. AWS STS S3 ストレージ

次の YAML は、OpenShift Container Platform 設定で Amazon Web Services (AWS) Security Token Service (STS) を Red Hat Quay で使用するための設定例を示しています。

# ...
DISTRIBUTED_STORAGE_CONFIG:
   default:
    - STSS3Storage
    - sts_role_arn: <role_arn> 1
      s3_bucket: <s3_bucket_name>
      storage_path: <storage_path>
      sts_user_access_key: <s3_user_access_key> 2
      sts_user_secret_key: <s3_user_secret_key> 3
      s3_region: <region> 4
DISTRIBUTED_STORAGE_DEFAULT_LOCATIONS: []
DISTRIBUTED_STORAGE_PREFERENCE:
    - default
# ...
1
一意の Amazon Resource Name (ARN)。
2
生成された AWS S3 ユーザーアクセスキー。
3
生成された AWS S3 ユーザー秘密鍵。
4
オプション: Amazon Web Services のリージョン。デフォルトは us-east-1 です。

3.6.7. Google Cloud Storage

以下の YAML は、Google Cloud Storage を使用した設定例を示しています。

DISTRIBUTED_STORAGE_CONFIG:
    googleCloudStorage:
        - GoogleCloudStorage
        - access_key: GOOGQIMFB3ABCDEFGHIJKLMN
          bucket_name: quay-bucket
          secret_key: FhDAYe2HeuAKfvZCAGyOioNaaRABCDEFGHIJKLMN
          storage_path: /datastorage/registry
          boto_timeout: 120 1
DISTRIBUTED_STORAGE_DEFAULT_LOCATIONS: []
DISTRIBUTED_STORAGE_PREFERENCE:
    - googleCloudStorage
1
オプション: 接続から読み取ろうとしたときにタイムアウト例外が出力されるまでの時間 (秒単位)。デフォルトは 60 秒です。また、接続を試行するときにタイムアウト例外が出力されるまでの時間 (秒単位) も含まれます。デフォルトは 60 秒です。

3.6.8. Azure Storage

以下の YAML は、Azure Storage を使用した設定のサンプルを示しています。

DISTRIBUTED_STORAGE_CONFIG:
  azureStorage:
    - AzureStorage
    - azure_account_name: azure_account_name_here
      azure_container: azure_container_here
      storage_path: /datastorage/registry
      azure_account_key: azure_account_key_here
      sas_token: some/path/
      endpoint_url: https://[account-name].blob.core.usgovcloudapi.net 1
DISTRIBUTED_STORAGE_DEFAULT_LOCATIONS: []
DISTRIBUTED_STORAGE_PREFERENCE:
    - azureStorage
1
Azure ストレージの endpoint_url パラメーターは任意であり、Microsoft Azure Government (MAG) エンドポイントで使用できます。空白のままにすると、endpoint_url は通常の Azure リージョンに接続します。

Red Hat Quay 3.7 以降では、MAG Blob サービスのプライマリーエンドポイントを使用する必要があります。MAG Blob サービスのセカンダリーエンドポイントを使用すると、AuthenticationErrorDetail:Cannot find the claimed account when trying to GetProperties for the account whusc8-secondary エラーが発生します。

3.6.9. Swift ストレージ:

以下の YAML は、Swift ストレージを使用した設定のサンプルを示しています。

DISTRIBUTED_STORAGE_CONFIG:
  swiftStorage:
    - SwiftStorage
    - swift_user: swift_user_here
      swift_password: swift_password_here
      swift_container: swift_container_here
      auth_url: https://example.org/swift/v1/quay
      auth_version: 3
      os_options:
        tenant_id: <osp_tenant_id_here>
        user_domain_name: <osp_domain_name_here>
      ca_cert_path: /conf/stack/swift.cert"
      storage_path: /datastorage/registry
DISTRIBUTED_STORAGE_DEFAULT_LOCATIONS: []
DISTRIBUTED_STORAGE_PREFERENCE:
    - swiftStorage

3.6.10. Nutanix オブジェクトストレージ

以下の YAML は、Nutanix オブジェクトストレージを使用した設定例を示しています。

DISTRIBUTED_STORAGE_CONFIG:
  nutanixStorage: #storage config name
    - RadosGWStorage #actual driver
    - access_key: access_key_here #parameters
      secret_key: secret_key_here
      bucket_name: bucket_name_here
      hostname: hostname_here
      is_secure: 'true'
      port: '443'
      storage_path: /datastorage/registry
DISTRIBUTED_STORAGE_DEFAULT_LOCATIONS: []
DISTRIBUTED_STORAGE_PREFERENCE: #must contain name of the storage config
    - nutanixStorage

3.6.11. IBM Cloud オブジェクトストレージ

次の YAML は、IBM Cloud オブジェクトストレージを使用したサンプル設定を示しています。

DISTRIBUTED_STORAGE_CONFIG:
  default:
  - IBMCloudStorage #actual driver
  - access_key: <access_key_here> #parameters
    secret_key: <secret_key_here>
    bucket_name: <bucket_name_here>
    hostname: <hostname_here>
    is_secure: 'true'
    port: '443'
    storage_path: /datastorage/registry
    maximum_chunk_size_mb: 100mb 1
DISTRIBUTED_STORAGE_DEFAULT_LOCATIONS:
- default
DISTRIBUTED_STORAGE_PREFERENCE:
- default
1
オプション: 100mb に設定することを推奨します。

3.6.12. NetApp ONTAP S3 オブジェクトストレージ

次の YAML は、NetApp ONTAP S3 を使用したサンプル設定を示しています。

DISTRIBUTED_STORAGE_CONFIG:
  local_us:
  - RadosGWStorage
  - access_key: <access_key>
    bucket_name: <bucket_name>
    hostname: <host_url_address>
    is_secure: true
    port: <port>
    secret_key: <secret_key>
    storage_path: /datastorage/registry
    signature_version: v4
DISTRIBUTED_STORAGE_DEFAULT_LOCATIONS:
- local_us
DISTRIBUTED_STORAGE_PREFERENCE:
- local_us

3.6.13. 日立コンテンツプラットフォームオブジェクトストレージ

次の YAML は、オブジェクトストレージに HCP を使用するサンプル設定を示しています。

HCP ストレージ設定の例

DISTRIBUTED_STORAGE_CONFIG:
  hcp_us:
  - RadosGWStorage
  - access_key: <access_key>
    bucket_name: <bucket_name>
    hostname: <hitachi_hostname_example>
    is_secure: true
    secret_key: <secret_key>
    storage_path: /datastorage/registry
    signature_version: v4
DISTRIBUTED_STORAGE_DEFAULT_LOCATIONS:
- hcp_us
DISTRIBUTED_STORAGE_PREFERENCE:
- hcp_us

3.7. Redis 設定フィールド

このセクションでは、Redis デプロイメントで利用可能な設定フィールドを説明します。

3.7.1. ビルドログ

Redis デプロイメントには、以下のビルドログ設定フィールドを利用できます。

表3.7 ビルドログの設定
フィールドタイプ説明

BUILDLOGS_REDIS
(必須)

オブジェクト

ビルドログキャッシュ用の Redis 接続の詳細。

.host
(必須)

文字列

Redis にアクセスできるホスト名。
例:
quay-server.example.com

.port
(必須)

数値

Redis にアクセスできるポート。
例:
6379

.password

文字列

Redis インスタンスに接続するためのパスワード。
例:
strongpassword

.ssl
(オプション)

ブール値

Redis と Quay 間の TLS 通信を有効にするかどうか。デフォルトは false です。

3.7.2. ユーザーイベント

Redis デプロイメントには、以下のユーザーイベントフィールドを使用できます。

表3.8 ユーザーイベント設定
フィールドタイプ説明

USER_EVENTS_REDIS
(必須)

オブジェクト

ユーザーイベント処理の Redis 接続の詳細。

.host
(必須)

文字列

Redis にアクセスできるホスト名。
例:
quay-server.example.com

.port
(必須)

数値

Redis にアクセスできるポート。
例:
6379

.password

文字列

Redis インスタンスに接続するためのパスワード。
例:
strongpassword

.ssl

ブール値

Redis と Quay 間の TLS 通信を有効にするかどうか。デフォルトは false です。

.ssl_keyfile
(オプション)

文字列

使用するクライアント証明書を格納する鍵データベースファイルの名前。
例:
ssl_keyfile:/path/to/server/privatekey.pem

.ssl_certfile
(オプション)

文字列

SSL 証明書のファイルパスを指定するために使用されます。
例:
ssl_certfile:/path/to/server/certificate.pem

.ssl_cert_reqs
(オプション)

文字列

SSL/TLS ハンドシェーク中に実行される証明書検証のレベルを指定するために使用されます。
例:
ssl_cert_reqs: CERT_REQUIRED

.ssl_ca_certs
(オプション)

文字列

信頼された認証局 (CA) 証明書のリストを含むファイルへのパスを指定するために使用されます。
例:
ssl_ca_certs:/path/to/ca_certs.pem

.ssl_ca_data
(オプション)

文字列

信頼できる CA 証明書を含む文字列を PEM 形式で指定するために使用されます。
例:
ssl_ca_data: <certificate>

.ssl_check_hostname
(オプション)

ブール値

サーバーへの SSL/TLS 接続をセットアップするときに使用されます。サーバーの SSL/TLS 証明書のホスト名が、接続先のサーバーのホスト名と一致することをクライアントが確認する必要があるかどうかを指定します。
例:
ssl_check_hostname: true

3.7.3. redis の設定例

次の YAML は、オプションの SSL/TLS フィールドを持つ Redis を使用したサンプル設定を示しています。

BUILDLOGS_REDIS:
  host: quay-server.example.com
  password: strongpassword
  port: 6379
  ssl: true


USER_EVENTS_REDIS:
  host: quay-server.example.com
  password: strongpassword
  port: 6379
  ssl: true
  ssl_*: <path_location_or_certificate>
注記

デプロイで Azure Cache for Redis を使用し、ssltrue に設定されていると、ポートはデフォルトで 6380 になります。

3.8. ModelCache 設定オプション

以下のオプションは、ModelCache を設定するために Red Hat Quay で利用できます。

3.8.1. Memcache 設定オプション

Memcache は、デフォルトの ModelCache 設定オプションです。Memcache を使用すると、追加の設定は必要ありません。

3.8.2. 単一の Redis 設定オプション

以下の設定は、オプションの読み取り専用レプリカを持つ単一の Redis インスタンス用です。

    DATA_MODEL_CACHE_CONFIG:
      engine: redis
      redis_config:
        primary:
            host: <host>
            port: <port>
            password: <password if ssl is true>
           ssl: <true | false >
        replica:
            host: <host>
            port: <port>
            password: <password if ssl is true>
           ssl: <true | false >

3.8.3. クラスター化された Redis 設定オプション

クラスター化された Redis インスタンスには、次の設定を使用します。

    DATA_MODEL_CACHE_CONFIG:
      engine: rediscluster
      redis_config:
        startup_nodes:
          - host: <cluster-host>
            port: <port>
        password: <password if ssl: true>
        read_from_replicas: <true|false>
        skip_full_coverage_check: <true | false>
        ssl: <true | false >

3.9. タグの有効期限の設定フィールド

以下のタグの有効期限設定フィールドは Red Hat Quay で利用できます。

表3.9 タグの有効期限の設定フィールド
フィールドタイプ説明

FEATURE_GARBAGE_COLLECTION

ブール値

リポジトリーのガベージコレクションを有効にするかどうか。

デフォルト: True

TAG_EXPIRATION_OPTIONS
(必須)

文字列の配列

有効にすると、ユーザーが名前空間内のタグの有効期限について選択できるオプション。

パターン:
^[0-9]+(年 | 月 | 日 | 時 | 秒)$

DEFAULT_TAG_EXPIRATION
(必須)

文字列

タイムマシンのデフォルトの設定可能なタグの有効期限。

パターン:
^[0-9]+(w|m|d|h|s)$
デフォルト 2w

FEATURE_CHANGE_TAG_EXPIRATION

ブール値

ユーザーおよび組織が namespace のタグの有効期限を変更できるかどうか。

デフォルト: True

FEATURE_AUTO_PRUNE

ブール値

True に設定すると、タグの自動プルーニングに関連する機能が有効になります。
デフォルト: False

NOTIFICATION_TASK_RUN_MINIMUM_INTERVAL_MINUTES

整数

有効期限が切れるイメージに関する通知を再実行する頻度を定義する間隔 (分単位)。

デフォルト: 300

DEFAULT_NAMESPACE_AUTOPRUNE_POLICY

オブジェクト

組織全体のデフォルトの自動プルーニングポリシー。

    .method: number_of_tags

オブジェクト

保持するタグの数を指定するオプション。

    .value: <integer>

整数

method: number_of_tags と一緒に使用した場合に、保持するタグの数を示します。

たとえば、2 つのタグを保持するには、2 を指定します。

    .creation_date

オブジェクト

タグを保持する期間を指定するオプション。

    .value: <integer>

整数

creation_date と一緒に使用した場合に、タグを保持する期間を示します。

秒 (s)、日 (d)、月 (m)、週 (w)、または年 (y) に設定できます。有効な整数を含める必要があります。たとえば、タグを 1 年間保持するには、1y を指定します。

AUTO_PRUNING_DEFAULT_POLICY_POLL_PERIOD

整数

自動プルーナーワーカーをレジストリーレベルで実行する期間。デフォルトでは、1 日に 1 回 (24 時間に 1 回) 実行されるように設定されています。値は秒単位で指定する必要があります。

3.9.1. タグの有効期限の設定例

次の YAML の例は、タグの有効期限の設定例を示しています。

# ...
DEFAULT_TAG_EXPIRATION: 2w
TAG_EXPIRATION_OPTIONS:
    - 0s
    - 1d
    - 1w
    - 2w
    - 4w
    - 3y
# ...

3.9.2. レジストリー全体の自動プルーニングポリシーの例

次の YAML の例は、タグの数と作成日に基づくレジストリー全体の自動プルーニングの例を示しています。

タグの数に基づくレジストリー自動プルーニングポリシーの例

# ...
DEFAULT_NAMESPACE_AUTOPRUNE_POLICY:
  method: number_of_tags
  value: 10 1
# ...

1
この場合、10 個のタグが残ります。

作成日に基づくレジストリー自動削除ポリシーの例

# ...
DEFAULT_NAMESPACE_AUTOPRUNE_POLICY:
  method: creation_date
  value: 1y
# ...

3.10. クォータ管理設定フィールド

表3.10 クォータ管理設定
フィールドタイプ説明

FEATURE_QUOTA_MANAGEMENT

ブール値

クォータ管理機能の設定、キャッシュ、検証を有効にします。

**Default:** `False`

DEFAULT_SYSTEM_REJECT_QUOTA_BYTES

文字列

すべての組織に対してシステムのデフォルトクォータ拒否バイト許容量を有効にします。

デフォルトでは、制限は設定されていません。

QUOTA_BACKFILL

ブール値

クォータバックフィルワーカーが既存の Blob のサイズを計算できるようにします。

デフォルト: True

QUOTA_TOTAL_DELAY_SECONDS

文字列

クォータバックフィルを開始するまでの遅延時間。ローリングデプロイメントでは、合計が不正確になる可能性があります。このフィールドは、ローリングデプロイメントが完了するまでにかかる時間よりも長い時間を設定する 必要があります

デフォルト: 1800

PERMANENTLY_DELETE_TAGS

ブール値

タイムマシンウィンドウからのタグの削除に関連する機能を有効にします。

デフォルト:False

RESET_CHILD_MANIFEST_EXPIRATION

ブール値

子マニフェストを対象とする一時タグの有効期限をリセットします。この機能を True に設定すると、子マニフェストはすぐにガベージコレクションされます。

デフォルト:False

3.10.1. クォータ管理設定の例

次の YAML は、クォータ管理を有効にするときに推奨される設定です。

クォータ管理 YAML 設定

FEATURE_QUOTA_MANAGEMENT: true
FEATURE_GARBAGE_COLLECTION: true
PERMANENTLY_DELETE_TAGS: true
QUOTA_TOTAL_DELAY_SECONDS: 1800
RESET_CHILD_MANIFEST_EXPIRATION: true

3.11. プロキシーキャッシュ設定フィールド

表3.11 プロキシー設定
フィールドタイプ説明

FEATURE_PROXY_CACHE

ブール値

Red Hat Quay がアップストリームレジストリーのプルスルーキャッシュとして機能できるようにします。

デフォルト: false

3.12. ロボットアカウント設定フィールド

表3.12 ロボットアカウント設定フィールド
フィールドタイプ説明

ROBOTS_DISALLOW

ブール値

true に設定すると、ロボットアカウントの作成だけでなく、すべてのインタラクションが禁止されます。
デフォルト: False

3.13. 自動化のための Red Hat Quay の事前設定

Red Hat Quay は、自動化を可能にするいくつかの設定オプションをサポートします。ユーザーはデプロイメント前にこれらのオプションを設定して、ユーザーインターフェイスとの対話の必要性を減らすことができます。

3.13.1. API による最初のユーザー作成の許可

最初のユーザーを作成するには、FEATURE_USER_INITIALIZE パラメーターを true に設定し、/api/v1/user/initialize API を呼び出す必要があります。既存の組織の OAuth アプリケーションによって生成された OAuth トークンを必要とする他のすべてのレジストリー API 呼び出しとは異なり、API エンドポイントは認証を必要としません。

他のユーザーが作成されていない場合、ユーザーは Red Hat Quay のデプロイ後に API を使用して quayadmin などのユーザーを作成できます。詳細は、API を使用して最初のユーザーを作成する を参照してください。

3.13.2. API 一般アクセスの有効化

Red Hat Quay レジストリー API への一般アクセスを許可するには、BROWSER_API_CALLS_XHR_ONLY 設定オプションを false に設定する必要があります。

3.13.3. スーパーユーザーの追加

Red Hat Quay をデプロイしたら、ユーザーを作成し、最初のユーザーに完全な権限を持つ管理者権限を付与できます。SUPER_USER 設定オブジェクトを使用すると、事前に完全な権限を設定できます。以下に例を示します。

# ...
SERVER_HOSTNAME: quay-server.example.com
SETUP_COMPLETE: true
SUPER_USERS:
  - quayadmin
# ...

3.13.4. ユーザー作成の制限

スーパーユーザーを設定した後、FEATURE_USER_CREATIONfalse に設定することで、新しいユーザーを作成できる権限をスーパーユーザーグループに制限できます。以下に例を示します。

# ...
FEATURE_USER_INITIALIZE: true
BROWSER_API_CALLS_XHR_ONLY: false
SUPER_USERS:
- quayadmin
FEATURE_USER_CREATION: false
# ...

3.13.5. Red Hat Quay 3.13 の新機能の有効化

Red Hat Quay 3.13 の新機能を使用するには、次の機能の一部またはすべてを有効にします。

# ...
FEATURE_UI_V2: true
FEATURE_UI_V2_REPO_SETTINGS: true
FEATURE_AUTO_PRUNE: true
ROBOTS_DISALLOW: false
# ...

3.13.6. 自動化の推奨設定

自動化には、以下の config.yaml パラメーターが推奨されます。

# ...
FEATURE_USER_INITIALIZE: true
BROWSER_API_CALLS_XHR_ONLY: false
SUPER_USERS:
- quayadmin
FEATURE_USER_CREATION: false
# ...

3.13.7. 初期設定を使用した Red Hat Quay Operator のデプロイ

以下の手順に従って、初期設定を使用して OpenShift Container Platform に Red Hat Quay をデプロイします。

前提条件

  • oc CLI がインストールされている。

手順

  1. 設定ファイルを使用してシークレットを作成します。

    $ oc create secret generic -n quay-enterprise --from-file config.yaml=./config.yaml init-config-bundle-secret
  2. quayregistry.yaml ファイルを作成します。以下のように、管理対象外のコンポーネントを特定し、作成されたシークレットを参照します。

    apiVersion: quay.redhat.com/v1
    kind: QuayRegistry
    metadata:
      name: example-registry
      namespace: quay-enterprise
    spec:
      configBundleSecret: init-config-bundle-secret
  3. Red Hat Quay レジストリーをデプロイします。

    $ oc create -n quay-enterprise -f quayregistry.yaml

3.13.8. API を使用した最初のユーザーの作成

以下の手順に従って、Red Hat Quay 組織で最初のユーザーを作成します。

前提条件

  • 設定オプション FEATURE_USER_INITIALIZEtrue に設定する。
  • データベースにユーザーが存在していない。
手順

この手順では、"access_token": true を指定して OAuth トークンを要求します。

  1. Red Hat Quay 設定ファイルを開き、以下の設定フィールドを更新します。

    FEATURE_USER_INITIALIZE: true
    SUPER_USERS:
         -  quayadmin
  2. 次のコマンドを入力して、Red Hat Quay サービスを停止します。

    $ sudo podman stop quay
  3. 次のコマンドを入力して、Red Hat Quay サービスを開始します。

    $ sudo podman run -d -p 80:8080 -p 443:8443 --name=quay -v $QUAY/config:/conf/stack:Z  -v $QUAY/storage:/datastorage:Z {productrepo}/{quayimage}:{productminv}
  4. 次の CURL コマンドを実行して、ユーザー名、パスワード、電子メール、およびアクセストークンを使用して新しいユーザーを生成します。

    $ curl -X POST -k  http://quay-server.example.com/api/v1/user/initialize --header 'Content-Type: application/json' --data '{ "username": "quayadmin", "password":"quaypass12345", "email": "quayadmin@example.com", "access_token": true}'

    成功すると、このコマンドはユーザー名、メール、および暗号化されたパスワードが含まれるオブジェクトを返します。以下に例を示します。

    {"access_token":"6B4QTRSTSD1HMIG915VPX7BMEZBVB9GPNY2FC2ED", "email":"quayadmin@example.com","encrypted_password":"1nZMLH57RIE5UGdL/yYpDOHLqiNCgimb6W9kfF8MjZ1xrfDpRyRs9NUnUuNuAitW","username":"quayadmin"} # gitleaks:allow

    データベースにユーザーが存在している場合は、エラーが返されます。

    {"message":"Cannot initialize user in a non-empty database"}

    パスワードが 8 文字以上でない場合や、空白が含まれている場合には、エラーが返されます。

    {"message":"Failed to initialize user: Invalid password, password must be at least 8 characters and contain no whitespace."}
  5. 以下のコマンドを入力して、Red Hat Quay デプロイメントにログインします。

    $ sudo podman login -u quayadmin -p quaypass12345 http://quay-server.example.com --tls-verify=false

    出力例

    Login Succeeded!

3.13.8.1. OAuth トークンの使用

API の呼び出し後に、返される OAuth コードを指定して残りの Red Hat Quay API を呼び出すことができます。

前提条件

  • /api/v1/user/initialize API を呼び出し、ユーザー名、パスワード、およびメールアドレスに渡している。

手順

  • 以下のコマンドを入力して、現在のユーザーの一覧を取得します。

    $ curl -X GET -k -H "Authorization: Bearer 6B4QTRSTSD1HMIG915VPX7BMEZBVB9GPNY2FC2ED" https://example-registry-quay-quay-enterprise.apps.docs.quayteam.org/api/v1/superuser/users/

    出力例:

    {
        "users": [
            {
                "kind": "user",
                "name": "quayadmin",
                "username": "quayadmin",
                "email": "quayadmin@example.com",
                "verified": true,
                "avatar": {
                    "name": "quayadmin",
                    "hash": "3e82e9cbf62d25dec0ed1b4c66ca7c5d47ab9f1f271958298dea856fb26adc4c",
                    "color": "#e7ba52",
                    "kind": "user"
                },
                "super_user": true,
                "enabled": true
            }
        ]
    }

    このインスタンスでは、これまで作成した唯一のユーザーであるため、quayadmin ユーザーの詳細が返されます。

3.13.8.2. API を使用した組織の作成

以下の手順では、API を使用して Red Hat Quay 組織を作成する方法を説明します。

前提条件

  • /api/v1/user/initialize API を呼び出し、ユーザー名、パスワード、およびメールアドレスに渡している。
  • 返された OAuth コードを指定して、残りの Red Hat Quay API を呼び出している。

手順

  1. 組織を作成するには、api/v1/organization/ エンドポイントへの POST 呼び出しを使用します。

    $ curl -X POST -k --header 'Content-Type: application/json' -H "Authorization: Bearer 6B4QTRSTSD1HMIG915VPX7BMEZBVB9GPNY2FC2ED" https://example-registry-quay-quay-enterprise.apps.docs.quayteam.org/api/v1/organization/ --data '{"name": "testorg", "email": "testorg@example.com"}'

    出力例:

    "Created"
  2. 以下のコマンドを入力して、作成した組織の詳細を取得できます。

    $ curl -X GET -k --header 'Content-Type: application/json' -H "Authorization: Bearer 6B4QTRSTSD1HMIG915VPX7BMEZBVB9GPNY2FC2ED" https://min-registry-quay-quay-enterprise.apps.docs.quayteam.org/api/v1/organization/testorg

    出力例:

    {
        "name": "testorg",
        "email": "testorg@example.com",
        "avatar": {
            "name": "testorg",
            "hash": "5f113632ad532fc78215c9258a4fb60606d1fa386c91b141116a1317bf9c53c8",
            "color": "#a55194",
            "kind": "user"
        },
        "is_admin": true,
        "is_member": true,
        "teams": {
            "owners": {
                "name": "owners",
                "description": "",
                "role": "admin",
                "avatar": {
                    "name": "owners",
                    "hash": "6f0e3a8c0eb46e8834b43b03374ece43a030621d92a7437beb48f871e90f8d90",
                    "color": "#c7c7c7",
                    "kind": "team"
                },
                "can_view": true,
                "repo_count": 0,
                "member_count": 1,
                "is_synced": false
            }
        },
        "ordered_teams": [
            "owners"
        ],
        "invoice_email": false,
        "invoice_email_address": null,
        "tag_expiration_s": 1209600,
        "is_free_account": true
    }

3.14. 基本設定フィールド

表3.13 Basic configuration
フィールドタイプ説明

REGISTRY_TITLE

文字列

指定されている場合、レジストリーの長いタイトル。Red Hat Quay デプロイメントのフロントエンド (組織のサインインページなど) に表示されます。35 文字を超えないようにしてください。
デフォルト:
Red Hat Quay

REGISTRY_TITLE_SHORT

文字列

指定されている場合は、省略形式のレジストリーのタイトル。タイトルは、組織のさまざまなページに表示されます。たとえば、組織の Tutorial ページのチュートリアルのタイトルとして表示されます。
デフォルト:
Red Hat Quay

CONTACT_INFO

文字列の配列

指定されている場合は、連絡先ページに表示される連絡先情報。連絡先が 1 つしか指定されていない場合は、連絡先のフッターが直接リンクされます。

[0]

文字列

電子メールを送信するためのリンクを追加します。

パターン:
^mailto:(.)+$
例:
mailto:support@quay.io

[1]

文字列

IRC チャットルームにアクセスするためのリンクを追加します。

パターン:
^irc://(.)+$
例:
irc://chat.freenode.net:6665/quay

[2]

文字列

電話番号を呼び出すリンクを追加します。

パターン:
^tel:(.)+$
例:
tel:+1-888-930-3475

[3]

文字列

定義された URL へのリンクを追加します。

パターン:
^http(s)?://(.)+$
Example:
https://twitter.com/quayio

3.15. SSL 設定フィールド

表3.14 SSL 設定
フィールドタイプ説明

PREFERRED_URL_SCHEME

文字列

http または https のいずれか。クライアントから Quay への通信パスに TLS 暗号化がない場合に限り、ユーザーは PREFERRED_URL_SCHEMEhttp に設定することに注意してください。
TLS を終了するロードバランサー、リバースプロキシー (Nginx など) を使用する場合、またはカスタム SSL 証明書で Quay を直接使用する場合、ユーザーは PREFERRED_URL_SCHEME を https に設定する必要があります。ほとんどの場合、PREFERRED_URL_SCHEMEhttps である必要があります。
デフォルト: http

SERVER_HOSTNAME
(必須)

文字列

スキームなしで Red Hat Quay にアクセスできる URL。

例:
quay-server.example.com

SSL_CIPHERS

文字列の配列

指定した場合、nginx で定義された SSL 暗号のリストが有効または無効になります。

例:
[ECDHE-RSA-AES128-GCM-SHA256, ECDHE-ECDSA-AES128-GCM-SHA256, ECDHE-RSA-AES256-GCM-SHA384, ECDHE-ECDSA-AES256-GCM-SHA384, DHE-RSA-AES128-GCM-SHA256, DHE-DSS-AES128-GCM-SHA256, kEDH+AESGCM, ECDHE-RSA-AES128-SHA256, ECDHE-ECDSA-AES128-SHA256, ECDHE-RSA-AES128-SHA, ECDHE-ECDSA-AES128-SHA, ECDHE-RSA-AES256-SHA384, ECDHE-ECDSA-AES256-SHA384, ECDHE-RSA-AES256-SHA, ECDHE-ECDSA-AES256-SHA, DHE-RSA-AES128-SHA256, DHE-RSA-AES128-SHA, DHE-DSS-AES128-SHA256, DHE-RSA-AES256-SHA256, DHE-DSS-AES256-SHA, DHE-DSS-AES256-SHA, AES128-GCM-SHA256, AES256-GCM-SHA384, AES128-SHA256, AES256-SHA256, AES128-SHA, AES256-SHA, AES, !3DES", !aNULL, !eNULL, !EXPORT, DES, !RC4, MD5, !PSK, !aECDH, !EDH-DSS-DES-CBC3-SHA, !EDH-RSA-DES-CBC3-SHA, !KRB5-DES-CBC3-SHA]

SSL_PROTOCOLS

文字列の配列

指定されている場合、nginx は、リストで定義される SSL プロトコルのリストを有効にするように設定されます。リストから SSL プロトコルを削除すると、Red Hat Quay の起動時にそのプロトコルが無効になります。

例:
['TLSv1','TLSv1.1','TLSv1.2', `TLSv1.3]`

SESSION_COOKIE_SECURE

ブール値

セッションクッキーに secure プロパティーを設定するべきであるかどうか。

デフォルト:
False

推奨:
SSL を使用するインストールの場合はすべて、True に n 設定します。

3.15.1. SSL の設定

  1. 証明書ファイルとプライマリーキーファイルを設定ディレクトリーにコピーして、それぞれ ssl.certssl.key という名前が付けられていることを確認します。

    $ cp ~/ssl.cert $QUAY/config
    $ cp ~/ssl.key $QUAY/config
    $ cd $QUAY/config
  2. config.yaml ファイルを編集し、Quay で TLS を処理できるように指定します。

    config.yaml

    ...
    SERVER_HOSTNAME: quay-server.example.com
    ...
    PREFERRED_URL_SCHEME: https
    ...

  3. Quay コンテナーを停止し、レジストリーを再起動します。

3.16. Red Hat Quay コンテナーへの認証局の追加

extra_ca_certs ディレクトリーは、信頼できる証明書のセットを拡張するために認証局 (CA) を追加で保存できるディレクトリーです。これらの証明書は、Red Hat Quay によって外部サービスとの SSL/TLS 接続を検証するために使用されます。Red Hat Quay をデプロイするときに、必要な CA をこのディレクトリーに配置して、LDAP、OIDC、ストレージシステムなどのサービスへの接続が適切に保護され、検証されるようにすることができます。

スタンドアロンの Red Hat Quay デプロイメントの場合は、このディレクトリーを作成し、追加の CA 証明書をそのディレクトリーにコピーする必要があります。

前提条件

  • 希望するサービス用の CA があります。

手順

  1. 次のコマンドを入力して、コンテナーに追加する証明書を表示します。

    $ cat storage.crt

    出力例

    -----BEGIN CERTIFICATE-----
    MIIDTTCCAjWgAwIBAgIJAMVr9ngjJhzbMA0GCSqGSIb3DQEBCwUAMD0xCzAJBgNV...
    -----END CERTIFICATE-----

  2. 次のコマンドを入力して、Red Hat Quay ディレクトリーの /config フォルダーに extra_ca_certs を作成します。

    $ mkdir -p /path/to/quay_config_folder/extra_ca_certs
  3. CA ファイルを extra_ca_certs フォルダーにコピーします。以下に例を示します。

    $ cp storage.crt /path/to/quay_config_folder/extra_ca_certs/
  4. 次のコマンドを入力して、extra_ca_certs フォルダー内に storage.crt ファイルが存在することを確認します。

    $ tree /path/to/quay_config_folder/extra_ca_certs

    出力例

    /path/to/quay_config_folder/extra_ca_certs
    ├── storage.crt----

  5. 次のコマンドを入力して、QuayCONTAINER ID を取得します。

    $ podman ps

    出力例

    CONTAINER ID        IMAGE                                COMMAND                  CREATED             STATUS              PORTS
    5a3e82c4a75f        <registry>/<repo>/quay:{productminv} "/sbin/my_init"          24 hours ago        Up 18 hours         0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 443/tcp   grave_keller

  6. 次のコマンドを入力してコンテナーを再起動します。

    $ podman restart 5a3e82c4a75f
  7. 次のコマンドを実行して、証明書がコンテナー名前空間にコピーされたことを確認します。

    $ podman exec -it 5a3e82c4a75f cat /etc/ssl/certs/storage.pem

    出力例

    -----BEGIN CERTIFICATE-----
    MIIDTTCCAjWgAwIBAgIJAMVr9ngjJhzbMA0GCSqGSIb3DQEBCwUAMD0xCzAJBgNV...
    -----END CERTIFICATE-----

3.17. LDAP 設定フィールド

表3.15 LDAP の設定
フィールドタイプ説明

AUTHENTICATION_TYPE
(必須)

文字列

LDAP に設定する必要があります。

FEATURE_TEAM_SYNCING

ブール値

認証エンジン (OIDC、LDAP または Keystone) のバッキンググループからのチームメンバーシップの同期を許可するかどうか。

デフォルト: true

FEATURE_NONSUPERUSER_TEAM_SYNCING_SETUP

ブール値

有効にすると、スーパーユーザー以外のユーザーもチームの同期を設定できます。

デフォルト: false

LDAP_ADMIN_DN

文字列

LDAP 認証の管理 DN。

LDAP_ADMIN_PASSWD

文字列

LDAP 認証の管理パスワード。

LDAP_ALLOW_INSECURE_FALLBACK

ブール値

LDAP 認証で SSL の非セキュアなフォールバックを許可するかどうか。

LDAP_BASE_DN

文字列の配列

LDAP 認証のベース DN。

LDAP_EMAIL_ATTR

文字列

LDAP 認証のメール属性。

LDAP_UID_ATTR

文字列

LDAP 認証の uid 属性。

LDAP_URI

文字列

LDAP URI。

LDAP_USER_FILTER

文字列

LDAP 認証のユーザーフィルター。

LDAP_USER_RDN

文字列の配列

LDAP 認証のユーザー RDN。

LDAP_SECONDARY_USER_RDNS

文字列の配列

ユーザーオブジェクトが存在する組織単位が複数ある場合は、Secondary User Relative DNs を指定します。

TEAM_RESYNC_STALE_TIME

文字列

チームでチーム同期が有効になっている場合は、そのメンバーシップを確認し、必要に応じて再同期する頻度。

パターン:
^[0-9]+(w|m|d|h|s)$
例:
2h
デフォルト:
30m

LDAP_SUPERUSER_FILTER

文字列

LDAP_USER_FILTER 設定フィールドのサブセット。設定すると、Red Hat Quay 管理者は、Red Hat Quay が認証プロバイダーとして LDAP を使用する場合に、Lightweight Directory Access Protocol (LDAP) ユーザーをスーパーユーザーとして設定できます。

このフィールドを使用すると、管理者は Red Hat Quay 設定ファイルを更新してデプロイメントを再起動することなく、スーパーユーザーを追加または削除できます。

このフィールドでは、AUTHENTICATION_TYPELDAP に設定されている必要があります。

GLOBAL_READONLY_SUPER_USERS

文字列

設定すると、公開リポジトリーかどうかに関係なく、このリストのユーザーにすべてのリポジトリーへの読み取りアクセスが許可されます。LDAP_SUPERUSER_FILTER 設定フィールドで定義されたスーパーユーザーでのみ機能します。

LDAP_RESTRICTED_USER_FILTER

文字列

LDAP_USER_FILTER 設定フィールドのサブセット。設定すると、Red Hat Quay 管理者は、Red Hat Quay が認証プロバイダーとして LDAP を使用する場合に、Lightweight Directory Access Protocol (LDAP) ユーザーを制限付きユーザーとして設定できます。

このフィールドでは、AUTHENTICATION_TYPELDAP に設定されている必要があります。

FEATURE_RESTRICTED_USERS

ブール値

LDAP_RESTRICTED_USER_FILTER をアクティブにして True に設定すると、定義された LDAP グループにリストされているユーザーのみが制限されます。

デフォルト: False

LDAP_TIMEOUT

整数

LDAP 操作の時間制限を秒単位で指定します。これにより、LDAP 検索、バインド、またはその他の操作にかかる時間が制限されます。ldapsearch-l オプションと同様に、クライアント側の操作のタイムアウトを設定します。

デフォルト: 10

LDAP_NETWORK_TIMEOUT

整数

LDAP サーバーへの接続を確立するための時間制限を秒単位で指定します。これは、ldapsearch-o nettimeout オプションと同様に、ネットワーク操作中に Red Hat Quay が応答を待機する最大時間です。

デフォルト: 10

3.17.1. LDAP 設定リファレンス

次の参照を使用して、config.yaml ファイルを必要な LDAP 設定で更新します。

3.17.1.1. 基本的な LDAP 設定

基本的な LDAP 設定は、以下を参照してください。

---
AUTHENTICATION_TYPE: LDAP 1
---
LDAP_ADMIN_DN: uid=<name>,ou=Users,o=<organization_id>,dc=<example_domain_component>,dc=com 2
LDAP_ADMIN_PASSWD: ABC123 3
LDAP_ALLOW_INSECURE_FALLBACK: false 4
LDAP_BASE_DN: 5
  - dc=example
  - dc=com
LDAP_EMAIL_ATTR: mail 6
LDAP_UID_ATTR: uid 7
LDAP_URI: ldap://<example_url>.com 8
LDAP_USER_FILTER: (memberof=cn=developers,ou=Users,dc=<domain_name>,dc=com) 9
LDAP_USER_RDN: 10
  - ou=people
LDAP_SECONDARY_USER_RDNS: 11
    - ou=<example_organization_unit_one>
    - ou=<example_organization_unit_two>
    - ou=<example_organization_unit_three>
    - ou=<example_organization_unit_four>
1
必須。LDAP に設定する必要があります。
2
必須。LDAP 認証の管理 DN。
3
必須。LDAP 認証の管理パスワード。
4
必須。LDAP 認証に SSL/TLS の安全でないフォールバックを許可するかどうか。
5
必須。LDAP 認証のベース DN。
6
必須。LDAP 認証のメール属性。
7
必須。LDAP 認証の UID 属性。
8
必須。LDAP URI。
9
必須。LDAP 認証のユーザーフィルター。
10
必須。LDAP 認証のユーザー RDN。
11
オプション: ユーザーオブジェクトが存在する組織単位が複数ある場合の Secondary User Relative DN。
3.17.1.2. LDAP 制限付きユーザー設定

LDAP 制限ユーザー設定は、次のリファレンスを使用してください。

# ...
AUTHENTICATION_TYPE: LDAP
# ...
FEATURE_RESTRICTED_USERS: true 1
# ...
LDAP_ADMIN_DN: uid=<name>,ou=Users,o=<organization_id>,dc=<example_domain_component>,dc=com
LDAP_ADMIN_PASSWD: ABC123
LDAP_ALLOW_INSECURE_FALLBACK: false
LDAP_BASE_DN:
    - o=<organization_id>
    - dc=<example_domain_component>
    - dc=com
LDAP_EMAIL_ATTR: mail
LDAP_UID_ATTR: uid
LDAP_URI: ldap://<example_url>.com
LDAP_USER_FILTER: (memberof=cn=developers,ou=Users,o=<example_organization_unit>,dc=<example_domain_component>,dc=com)
LDAP_RESTRICTED_USER_FILTER: (<filterField>=<value>) 2
LDAP_USER_RDN:
    - ou=<example_organization_unit>
    - o=<organization_id>
    - dc=<example_domain_component>
    - dc=com
# ...
1
LDAP 制限ユーザーを設定する場合は true に設定する必要があります。
2
指定されたユーザーを制限されたユーザーとして設定します。
3.17.1.3. LDAP スーパーユーザー設定リファレンス

LDAP スーパーユーザー設定は、次のリファレンスを使用してください。

# ...
AUTHENTICATION_TYPE: LDAP
# ...
LDAP_ADMIN_DN: uid=<name>,ou=Users,o=<organization_id>,dc=<example_domain_component>,dc=com
LDAP_ADMIN_PASSWD: ABC123
LDAP_ALLOW_INSECURE_FALLBACK: false
LDAP_BASE_DN:
    - o=<organization_id>
    - dc=<example_domain_component>
    - dc=com
LDAP_EMAIL_ATTR: mail
LDAP_UID_ATTR: uid
LDAP_URI: ldap://<example_url>.com
LDAP_USER_FILTER: (memberof=cn=developers,ou=Users,o=<example_organization_unit>,dc=<example_domain_component>,dc=com)
LDAP_SUPERUSER_FILTER: (<filterField>=<value>) 1
LDAP_USER_RDN:
    - ou=<example_organization_unit>
    - o=<organization_id>
    - dc=<example_domain_component>
    - dc=com
# ...
1
指定されたユーザーをスーパーユーザーとして設定します。

3.18. 設定フィールドのミラーリング

表3.16 ミラーリング設定
フィールドタイプ説明

FEATURE_REPO_MIRROR

ブール値

リポジトリーミラーリングを有効または無効にします。

デフォルト: false

REPO_MIRROR_INTERVAL

数値

次にリポジトリーミラー候補をチェックするまでの秒数。
デフォルト: 30

REPO_MIRROR_SERVER_HOSTNAME

文字列

SERVER_HOSTNAME は、ミラーリングの宛先に置き換えます。

デフォルト: None

:
openshift-quay-service

REPO_MIRROR_TLS_VERIFY

ブール値

HTTPS を必要とし、ミラー時に Quay レジストリーの証明書を検証します。

デフォルト: true

REPO_MIRROR_ROLLBACK

ブール値

true に設定されている場合、リポジトリーはミラー試行の失敗後にロールバックします。

デフォルト: false

3.19. セキュリティースキャナー設定フィールド

表3.17 セキュリティースキャナーの設定
フィールドタイプ説明

FEATURE_SECURITY_SCANNER

ブール値

セキュリティースキャナー。

デフォルト: false

FEATURE_SECURITY_NOTIFICATIONS

ブール値

セキュリティースキャナーが有効になっている場合、セキュリティー通知を有効にするか、オフにします

デフォルト値: false

SECURITY_SCANNER_V4_REINDEX_THRESHOLD

文字列

このパラメーターは、最終のインデックス作成から状態が変更されたか、以前に失敗したマニフェストのインデックスをもう一度作成するまで待機する最小時間を判断するのに使用します。データは manifestsecuritystatus テーブルの last_indexed datetime から計算されます。インデックス作成実行時に必ず、失敗したマニフェストのインデックスを再度作成しないように、このパラメーターを使用します。再インデックスのデフォルト時間は 300 秒です。

SECURITY_SCANNER_V4_ENDPOINT

文字列

V4 セキュリティースキャナーのエンドポイント。

パターン:
^http(s)?://(.)+$

例:
http://192.168.99.101:6060

SECURITY_SCANNER_V4_PSK

文字列

Clair 用に生成された共有キー (PSK)。

SECURITY_SCANNER_ENDPOINT

文字列

V2 セキュリティースキャナーのエンドポイント。

パターン:
^http(s)?://(.)+$

例:
http://192.168.99.100:6060

SECURITY_SCANNER_INDEXING_INTERVAL

整数

このパラメーターは、セキュリティースキャナーのインデックス作成の間隔 (秒単位) を決定するために使用されます。インデックスのトリガーが発生すると、Red Hat Quay は、Clair でインデックス化する必要のあるマニフェストに対してそのデータベースをクエリーします。これには、インデックス付けされていないマニフェストや、以前にインデックス付けに失敗したマニフェストが含まれます。

デフォルト: 30

FEATURE_SECURITY_SCANNER_NOTIFY_ON_NEW_INDEX

ブール値

新しいプッシュの脆弱性に関する通知の送信を許可するかどうか。
デフォルト: True

SECURITY_SCANNER_V4_MANIFEST_CLEANUP

ブール値

Red Hat Quay ガベージコレクターが、他のタグまたはマニフェストによって参照されていないマニフェストを削除するかどうか。
デフォルト: True

NOTIFICATION_MIN_SEVERITY_ON_NEW_INDEX

文字列

検出された脆弱性に関する新しい通知の最低セキュリティーレベルを設定します。最初のインデックスの後に大量の通知が作成されるのを回避します。定義されていない場合は、デフォルトで High になります。使用可能なオプションには、CriticalHighMediumLowNegligibleUnknown があります。

SECURITY_SCANNER_V4_INDEX_MAX_LAYER_SIZE

文字列

インデックス化に許可される最大レイヤーサイズ。レイヤーサイズが設定済みのサイズを超えると、Red Hat Quay UI は、The manifest for this tag has layer(s) that are too large to index by the Quay Security Scanner メッセージを返します。デフォルトは 8G で、推奨される最大値は 10G です。受け入れられる値は BKMT、および G です。
デフォルト: 8G

3.19.1. Clair v4 によるインデックスの再作成

Clair v4 がマニフェストをインデックス化する場合は、結果として、決定論的なものである必要があります。たとえば、同じマニフェストが同じインデックスレポートを生成する必要があります。これは、異なるスキャナーを使用するとレポートで返される特定のマニフェストに関連して異なる情報を生成するため、スキャナーが変更されるまで True となります。そのため、Clair v4 はインデックスエンジン (/indexer/api/v1/index_state) の状態表現を公開し、スキャナー設定が変更されたかどうかを判別します。

Red Hat Quay は、Quay のデータベースの解析時にこれをインデックスレポートに保存し、このインデックス状態を活用します。以前にスキャンされてからこの状態が変更された場合、Red Hat Quay は定期的なインデックスプロセス時にマニフェストの再作成を試行します。

デフォルトでは、このパラメーターは 30 秒に設定されています。インデックス作成のプロセスをより頻繁に実行する場合は、時間を短縮します。たとえば、新規タグをプッシュしてから、30 秒待たずに、UI でセキュリティースキャンの結果を表示する場合などです。また、ユーザーは要求パターンを Clair に制御し、Red Hat Quay データベースで実行されるデータベース操作のパターンをより詳細に制御する必要がある場合にパラメーターを変更することもできます。

3.19.2. セキュリティースキャナーの設定の例

次の YAML は、セキュリティースキャナー機能を有効にする場合の推奨設定です。

セキュリティースキャナーの YAML 設定

FEATURE_SECURITY_NOTIFICATIONS: true
FEATURE_SECURITY_SCANNER: true
FEATURE_SECURITY_SCANNER_NOTIFY_ON_NEW_INDEX: true
...
SECURITY_SCANNER_INDEXING_INTERVAL: 30
SECURITY_SCANNER_V4_MANIFEST_CLEANUP: true
SECURITY_SCANNER_V4_ENDPOINT: http://quay-server.example.com:8081
SECURITY_SCANNER_V4_PSK: MTU5YzA4Y2ZkNzJoMQ==
SERVER_HOSTNAME: quay-server.example.com
SECURITY_SCANNER_V4_INDEX_MAX_LAYER_SIZE: 8G 1
...

1
推奨最大値は 10G です。

3.20. Helm 設定フィールド

表3.18 Helm 設定フィールド
フィールドタイプ説明

FEATURE_GENERAL_OCI_SUPPORT

ブール値

OCI アーティファクトのサポートを有効にします。

デフォルト: True

次の Open Container Initiative (OCI) アーティファクトタイプは、デフォルトで Red Hat Quay に組み込まれており、FEATURE_GENERAL_OCI_SUPPORT 設定フィールドを通じて有効になります。

フィールドメディアタイプサポートされているコンテンツタイプ

Helm

application/vnd.cncf.helm.config.v1+json

application/tar+gzipapplication/vnd.cncf.helm.chart.content.v1.tar+gzip

Cosign

application/vnd.oci.image.config.v1+json

application/vnd.dev.cosign.simplesigning.v1+jsonapplication/vnd.dsse.envelope.v1+json

SPDX

application/vnd.oci.image.config.v1+json

text/spdxtext/spdx+xmltext/spdx+json

Syft

application/vnd.oci.image.config.v1+json

application/vnd.syft+json

CycloneDX

application/vnd.oci.image.config.v1+json

application/vnd.cyclonedxapplication/vnd.cyclonedx+xmlapplication/vnd.cyclonedx+json

In-toto

application/vnd.oci.image.config.v1+json

application/vnd.in-toto+json

Unknown

application/vnd.cncf.openpolicyagent.policy.layer.v1+rego

application/vnd.cncf.openpolicyagent.policy.layer.v1+regoapplication/vnd.cncf.openpolicyagent.data.layer.v1+json

3.20.1. Helm の設定

次の YAML は、Helm を有効にする場合の設定例です。

Helm YAML 設定

FEATURE_GENERAL_OCI_SUPPORT: true

3.21. Open Container Initiative 設定フィールド

表3.19 追加の OCI アーティファクト設定フィールド
フィールドタイプ説明

FEATURE_REFERRERS_API

ブール値

OCI 1.1 のリファラー API を有効にします。

OCI リファラー有効化の YAML の例

# ...
FEATURE_REFERRERS_API: True
# ...

3.22. 不明なメディアタイプ

表3.20 不明なメディアタイプ設定フィールド
フィールドタイプ説明

IGNORE_UNKNOWN_MEDIATYPES

ブール値

有効にすると、コンテナーレジストリープラットフォームは、サポートされているアーティファクトタイプに関する特定の制限を無視し、認識されないメディアタイプまたは未知のメディアタイプを受け入れることができます。

デフォルト: false

3.22.1. 不明なメディアタイプの設定

次の YAML は、不明なメディアタイプまたは認識されないメディアタイプを有効にする場合の設定例です。

不明なメディアタイプの YAML 設定

IGNORE_UNKNOWN_MEDIATYPES: true

3.23. アクションログ設定フィールド

3.23.1. アクションログストレージ設定

表3.21 アクションログストレージ設定
フィールドタイプ説明

FEATURE_LOG_EXPORT

ブール値

アクションログのエクスポートを許可するかどうか。

デフォルト: True

LOGS_MODEL

文字列

ログデータを処理するための推奨される方法を指定します。

値: databasetransition_reads_both_writes_eselasticsearchsplunk のいずれか。
デフォルト: database

LOGS_MODEL_CONFIG

オブジェクト

アクションログのログモデル設定。

ALLOW_WITHOUT_STRICT_LOGGING

ブール値

True に設定すると、Splunk や ElasticSearch などの外部ログシステムが断続的に利用できなくなる場合でも、ユーザーが通常どおりイメージをプッシュできます。代わりに、イベントは stdout に記録されます。オーバーライド ALLOW_PULLS_WITHOUT_STRICT_LOGGING が設定されている場合。

デフォルト: False

3.23.1.1. Elasticsearch 設定フィールド

Red Hat Quay 用に Elasticsearch を設定する場合は、次のフィールドを使用できます。

  • LOGS_MODEL_CONFIG [オブジェクト]: アクションログ用のログモデル設定。

    • elasticsearch_config [オブジェクト]: Elasticsearch クラスターの設定。

      • access_key [文字列] :Elasticsearch のユーザー (AWS ES の場合は IAM キー)。

        • : some_string
      • host [文字列]: Elasticsearch クラスターのエンドポイント。

        • : host.elasticsearch.example
      • index_prefix [文字列]。Elasticsearch のインデックスの接頭辞。

        • : logentry_
      • index_settings [オブジェクト]: Elasticsearch のインデックス設定。
      • use_ssl [ブール値]。Elasticsearch に ssl を使用します。デフォルトは True に設定されます。

        • : True
      • secret_key [文字列] :Elasticsearch のパスワード (AWS ES の場合は IAM シークレット)。

        • : some_secret_string
      • aws_region [文字列]: Amazon Web サービスの地域。

        • : us-east-1
      • port [数値]: Elasticsearch クラスターのエンドポイントポート。

        • : 1234
    • kinesis_stream_config [オブジェクト]: AWS Kinesis ストリームの設定。

      • aws_secret_key [文字列]: AWS の秘密鍵。

        • : some_secret_key
      • stream_name [文字列]: アクションログの送信先となる Kinesis ストリーム。

        • : logentry-kinesis-stream
      • aws_access_key [文字列]: AWS アクセスキー。

        • : some_access_key
      • retries [数値]: 一回のリクエストに対する最大試行回数。

        • : 5
      • read_timeout [数値]: 接続の読み込み時にタイムアウトするまでの秒数。

        • : 5
      • max_pool_connections [数値]: コネクションプールに保持するコネクションの最大数。

        • : 10
      • aws_region [文字列]: AWS のリージョン。

        • : us-east-1
      • connect_timeout [数値]: 接続を試みる際のタイムアウトまでの秒数。

        • : 5
    • producer [文字列]: Elasticsearch にロギングする場合は、producer を記録する。

      • enum: kafka、elasticsearch、kinesis_stream
      • : kafka
    • kafka_config [オブジェクト]: Kafka クラスターの設定。

      • topic [文字列]: ログエントリーを公開する Kafka トピック。

        • : logentry
      • bootstrap_servers [配列]: クライアントをブートストラップさせる Kafka ブローカーのリスト。
      • max_block_seconds [数値]: send() の実行中に、バッファーがいっぱいになったり、メタデータが利用できないなどの理由でブロックする最大秒数。

        • : 10
3.23.1.2. Splunk 設定フィールド

Red Hat Quay 用に Splunk を設定する場合は、次のフィールドを使用できます。

  • producer [文字列]: splunk。Splunk を設定するときに使用します。
  • splunk_config [オブジェクト]: Splunk アクションログのログモデル設定または Splunk クラスター設定。

    • host [文字列]: Splunk クラスターのエンドポイント。
    • port [整数]: Splunk 管理クラスターのエンドポイントポート。
    • bearer_token [文字列]: Splunk のベアラートークン。
    • verify_ssl [ブール値]: HTTPS 接続の TLS/SSL 検証を有効 (True) または無効 (False) にする。
    • Index_prefix [文字列]: Splunk のインデックス接頭辞。
    • ssl_ca_path [文字列]: SSL 検証用の認証局 (CA) を含む単一の .pem ファイルへの相対コンテナーパス。

Splunk の設定例

# ...
LOGS_MODEL: splunk
LOGS_MODEL_CONFIG:
    producer: splunk
    splunk_config:
        host: http://<user_name>.remote.csb
        port: 8089
        bearer_token: <bearer_token>
        url_scheme: <http/https>
        verify_ssl: False
        index_prefix: <splunk_log_index_name>
        ssl_ca_path: <location_to_ssl-ca-cert.pem>
# ...

3.23.1.3. Splunk HEC 設定フィールド

Red Hat Quay 用に Splunk HTTP Event Collector (HEC) を設定する場合は、次のフィールドを使用できます。

  • producer [文字列]: splunk_hec。Splunk HEC を設定するときに使用します。
  • splunk_hec_config [オブジェクト]: Splunk HTTP Event Collector のアクションログ設定のログモデル設定。

    • host [文字列]: Splunk クラスターのエンドポイント。
    • port [整数]: Splunk 管理クラスターのエンドポイントポート。
    • hec_token [文字列]: Splunk の HEC トークン。
    • url_scheme [文字列]: Splunk サービスにアクセスするための URL スキーム。Splunk が SSL/TLS の背後にある場合は、https にする必要があります。
    • verify_ssl [ブール値]: HTTPS 接続の SSL/TLS 検証を有効 (true) または無効 (false) にします。
    • index [文字列]: 使用する Splunk インデックス。
    • splunk_host [文字列]: このイベントをログに記録するホスト名。
    • splunk_sourcetype [文字列]: 使用する Splunk sourcetype の名前。
# ...
LOGS_MODEL: splunk
LOGS_MODEL_CONFIG:
  producer: splunk_hec
  splunk_hec_config: 1
    host: prd-p-aaaaaq.splunkcloud.com 2
    port: 8088 3
    hec_token: 12345678-1234-1234-1234-1234567890ab 4
    url_scheme: https 5
    verify_ssl: False 6
    index: quay 7
    splunk_host: quay-dev 8
    splunk_sourcetype: quay_logs 9
# ...

3.23.2. アクションログのローテーションおよびアーカイブ設定

表3.22 アクションログのローテーションおよびアーカイブ設定
フィールドタイプ説明

FEATURE_ACTION_LOG_ROTATION

ブール値

ログローテーションおよび archival を有効にすると、30 日以上経過したすべてのログをストレージに移動します。

デフォルト: false

ACTION_LOG_ARCHIVE_LOCATION

文字列

アクションログのアーカイブが有効な場合は、アーカイブされたデータを配置するストレージエンジン。

例: s3_us_east

ACTION_LOG_ARCHIVE_PATH

文字列

アクションログのアーカイブが有効な場合は、アーカイブされたデータを配置するストレージのパス。

例: archives/actionlogs

ACTION_LOG_ROTATION_THRESHOLD

文字列

ログをローテーションする間隔。

例: 30d

3.23.3. アクションログの監査設定

表3.23 監査ログ設定フィールド
フィールドタイプ説明

ACTION_LOG_AUDIT_LOGINS

ブール値

True に設定すると、UI へのログインとログアウトや、通常のユーザー、ロボットアカウント、アプリケーション固有のトークンアカウントによる Docker を使用したログインなど、詳細なイベントが追跡されます。

デフォルト: True

3.24. ビルドログ設定フィールド

表3.24 ビルドログ設定フィールド
フィールドタイプ説明

FEATURE_READER_BUILD_LOGS

ブール値

true に設定すると、write アクセス権や admin アクセス権だけでなく、リポジトリーへの read アクセス権を持つユーザーもビルドログを読み取ることができます。

デフォルト:False

LOG_ARCHIVE_LOCATION

文字列

アーカイブされたビルドログを配置する、DISTRIBUTED_STORAGE_CONFIG で定義されたストレージの場所。

例: s3_us_east

LOG_ARCHIVE_PATH

文字列

アーカイブされたビルドログを .JSON 形式で配置する、設定されたストレージエンジンの下のパス。

例: archives/buildlogs

3.25. Dockerfile ビルドトリガーフィールド

表3.25 Dockerfile ビルドのサポート
フィールドタイプ説明

FEATURE_BUILD_SUPPORT

ブール値

Dockerfile ビルドをサポートするかどうか

デフォルト: False

SUCCESSIVE_TRIGGER_FAILURE_DISABLE_THRESHOLD

数値

None に設定されていない場合、ビルドトリガーが自動的に無効にされる前に、連続で失敗できる回数。

デフォルト: 100

SUCCESSIVE_TRIGGER_INTERNAL_ERROR_DISABLE_THRESHOLD

数値

None に設定されていない場合、ビルドトリガーが自動的に無効にされる前に、連続で発生可能な内部エラーの回数。

デフォルト: 5

3.25.1. GitHub ビルドトリガー

表3.26 GitHub ビルドトリガー
フィールドタイプ説明

FEATURE_GITHUB_BUILD

ブール値

GitHub ビルドトリガーをサポートするかどうか。

デフォルト: False

 

 

 

GITHUB_TRIGGER_CONFIG

オブジェクト

ビルドトリガーに GitHub Enterprise を使用するための設定。

   .GITHUB_ENDPOINT
(必須)

文字列

GitHub Enterprise のエンドポイント。

例: https://github.com/

   .API_ENDPOINT

文字列

使用する GitHub Enterprise API のエンドポイント。github.com に対してオーバーライドする必要があります。

: https://api.github.com/

   .CLIENT_ID
(必須)

文字列

この Red Hat Quay インスタンスの登録済みクライアント ID。これを GITHUB_LOGIN_CONFIG と共有することはできません。

   .CLIENT_SECRET
(必須)

文字列

この Red Hat Quay インスタンスの登録されたクライアントシークレット。

3.25.2. BitBucket ビルドトリガー

表3.27 BitBucket ビルドトリガー
フィールドタイプ説明

FEATURE_BITBUCKET_BUILD

ブール値

Bitbucket ビルドトリガーをサポートするかどうか。

デフォルト: False

 

 

 

BITBUCKET_TRIGGER_CONFIG

オブジェクト

ビルドトリガーに BitBucket を使用するための設定。

   .CONSUMER_KEY
(必須)

文字列

この Red Hat Quay インスタンスの登録済みコンシューマーキー (クライアント ID)。

   .CONSUMER_SECRET
(必須)

文字列

この Red Hat Quay インスタンスの登録済みコンシューマーシークレット (クライアントシークレット)。

3.25.3. GitLab ビルドトリガー

表3.28 GitLab ビルドトリガー
フィールドタイプ説明

FEATURE_GITLAB_BUILD

ブール値

GitLab ビルドトリガーをサポートするかどうか。

デフォルト: False

 

 

 

GITLAB_TRIGGER_CONFIG

オブジェクト

ビルドトリガーに Gitlab を使用するための設定。

   .GITLAB_ENDPOINT
(必須)

文字列

Gitlab Enterprise が実行されているエンドポイント。

   .CLIENT_ID
(必須)

文字列

この Red Hat Quay インスタンスの登録済みクライアント ID。

   .CLIENT_SECRET
(必須)

文字列

この Red Hat Quay インスタンスの登録されたクライアントシークレット。

3.26. ビルドマネージャー設定フィールド

表3.29 ビルドマネージャー設定フィールド
フィールドタイプ説明

ALLOWED_WORKER_COUNT

文字列

Red Hat Quay Pod ごとにインスタンス化される Build Worker の数を定義します。通常は 1 に設定します。

ORCHESTRATOR_PREFIX

文字列

すべての Redis キーに追加する一意の接頭辞を定義します。これは、オーケストレーターの値を他の Redis キーから分離するのに役立ちます。

REDIS_HOST

オブジェクト

Redis サービスのホスト名。

REDIS_PASSWORD

文字列

Redis サービスへの認証に使用するパスワード。

REDIS_SSL

ブール値

Redis の接続に SSL/TLS を使用するかどうかを定義します。

REDIS_SKIP_KEYSPACE_EVENT_SETUP

ブール値

デフォルトでは、Red Hat Quay はランタイム時のキーイベントに必要なキースペースイベントを設定しません。これを行うには、REDIS_SKIP_KEYSPACE_EVENT_SETUPfalse に設定します。

EXECUTOR

文字列

このタイプのエグゼキュータの定義を開始します。有効な値は kubernetes および ec2 です。

BUILDER_NAMESPACE

文字列

Red Hat Quay のビルドが行われる Kubernetes 名前空間。

K8S_API_SERVER

オブジェクト

ビルドが行われる OpenShift Container Platform クラスターの API サーバーのホスト名。

K8S_API_TLS_CA

オブジェクト

API 呼び出しの実行時に Quay アプリケーションが信頼するビルドクラスターの CA 証明書の Quay コンテナーのファイルパス。

KUBERNETES_DISTRIBUTION

文字列

使用している Kubernetes の種類を示します。有効な値は openshift および k8s です。

CONTAINER_*

オブジェクト

build Pod のリソース要求および制限を定義します。

NODE_SELECTOR_*

オブジェクト

build Pod がスケジューリングされるノードセレクターラベル名と値のペアを定義します。

CONTAINER_RUNTIME

オブジェクト

ビルダーが dockerpodman のどちらを実行するかを指定します。Red Hat の quay-builder イメージを使用しているお客様は、これを podman に設定してください。

SERVICE_ACCOUNT_NAME/SERVICE_ACCOUNT_TOKEN

オブジェクト

build Pod で使用されるサービスアカウント名またはトークンを定義します。

QUAY_USERNAME/QUAY_PASSWORD

オブジェクト

WORKER_IMAGE フィールドで指定された Red Hat Quay ビルドワーカーイメージをプルするために必要なレジストリー認証情報を定義します。お客様は、registry.redhat.io に対して https://access.redhat.com/RegistryAuthentication の記事の「レジストリーサービスアカウントの作成」セクションで定義されている Red Hat Service Account の認証情報を提供する必要があります。

WORKER_IMAGE

オブジェクト

Red Hat Quay ビルダーイメージのイメージ参照 (registry.redhat.io/quay/quay-builder)。

WORKER_TAG

オブジェクト

希望するビルダーイメージのタグ。最新バージョンは 3.13 です。

BUILDER_VM_CONTAINER_IMAGE

オブジェクト

各 Red Hat Quay ビルドの実行に必要な内部仮想マシンを保持するコンテナーイメージの完全な参照 (registry.redhat.io/quay/quay-builder-qemu-rhcos:3.13)。

SETUP_TIME

文字列

ビルドがまだビルドマネージャーに登録されていない場合に、タイムアウトする秒数を指定します。デフォルトは 500 秒です。タイムアウトしたビルドは、3 回再起動が試みられます。3 回試してもビルドが登録されない場合は、失敗とみなされます。

MINIMUM_RETRY_THRESHOLD

文字列

この設定は、複数のエグゼキューターで使用されます。別のエグゼキューターを選択するまでに、ビルドの開始を何回再試行するかを示します。0 に設定すると、ビルドジョブの試行回数に制限がなくなります。この値を意図的に小さく (3 以下) しておくことで、インフラストラクチャーに障害が発生した際に迅速にフェイルオーバーを行うことができます。この設定には値を指定する必要があります。たとえば、Kubernetes を第 1 のエグゼキューター、EC2 を第 2 のエグゼキューターとして設定します。ジョブ実行の最後の試行を常に Kubernetes ではなく EC2 で実行する場合は、Kubernetes のエグゼキューターの MINIMUM_RETRY_THRESHOLD1 に、EC2 の MINIMUM_RETRY_THRESHOLD0 に設定します (設定していない場合はデフォルトで 0 になります)。この場合、Kubernetes の MINIMUM_RETRY_THRESHOLD retries_remaining(1)False と評価され、設定された 2 番目のエクゼキュータにフォールバックされます。

SSH_AUTHORIZED_KEYS

オブジェクト

ignition 設定でブートストラップする SSH 鍵のリスト。これにより、他の鍵を使用して EC2 インスタンスや QEMU 仮想マシン (VM) に SSH 接続できます。

3.27. OAuth 設定フィールド

表3.30 OAuth フィールド
フィールドタイプ説明

DIRECT_OAUTH_CLIENTID_WHITELIST

文字列の配列

ユーザーの承認なしに直接 OAuth 承認を実行できる Quay 管理 アプリケーションのクライアント ID のリスト。

FEATURE_ASSIGN_OAUTH_TOKEN

ブール値

組織管理者が他のユーザーに OAuth トークンを割り当てることを許可します。

3.27.1. GitHub OAuth 設定フィールド

表3.31 GitHub OAuth フィールド
フィールドタイプ説明

FEATURE_GITHUB_LOGIN

ブール値

GitHub ログインがサポートされるかどうか。

**デフォルト: False

GITHUB_LOGIN_CONFIG

オブジェクト

外部ログインプロバイダーとして GitHub (Enterprise) を使用するための設定。

   .ALLOWED_ORGANIZATIONS

文字列の配列

ORG_RESTRICT オプションを使用するためにホワイトリスト化された GitHub (Enterprise) 組織の名前。

   .API_ENDPOINT

文字列

使用する GitHub (Enterprise) API のエンドポイント。github.com に対してオーバーライドする必要があります。

例: https://api.github.com/

   .CLIENT_ID
(必須)

文字列

この Red Hat Quay インスタンスの登録されたクライアント ID。GITHUB_TRIGGER_CONFIG とは共有できません。GITHUB_TRIGGER_CONFIG.

例: 0e8dbe15c4c7630b6780

   .CLIENT_SECRET
(必須)

文字列

Red Hat Quay インスタンスの登録クライアントシークレット。

例: e4a58ddd3d7408b7aec109e85564a0d153d3e846

   .GITHUB_ENDPOINT
(必須)

文字列

GitHub (Enterprise) のエンドポイント。

: https://github.com/

   .ORG_RESTRICT

ブール値

true の場合は、組織のホワイトリスト内のユーザーのみが、このプロバイダーを使用してログインできます。

3.27.2. Google OAuth 設定フィールド

表3.32 Google OAuth フィールド
フィールドタイプ説明

FEATURE_GOOGLE_LOGIN

ブール値

Google ログインがサポートされるかどうか。

**デフォルト: False

GOOGLE_LOGIN_CONFIG

オブジェクト

外部認証に Google を使用するための設定。

   .CLIENT_ID
(必須)

文字列

この Red Hat Quay インスタンスの登録されたクライアント ID。

例: 0e8dbe15c4c7630b6780

   .CLIENT_SECRET
(必須)

文字列

Red Hat Quay インスタンスの登録クライアントシークレット。

例: e4a58ddd3d7408b7aec109e85564a0d153d3e846

3.28. OIDC 設定フィールド

表3.33 OIDC フィールド

フィールド

タイプ

説明

<文字列>_LOGIN_CONFIG
(必須)

文字列

OIDC 設定を保持する親キー。通常は、OIDC プロバイダーの名前 (AZURE_LOGIN_CONFIG など) ですが、任意の文字列も受け入れられます。

.CLIENT_ID
(必須)

文字列

この Red Hat Quay インスタンスの登録されたクライアント ID。

例: 0e8dbe15c4c7630b6780

.CLIENT_SECRET
(必須)

文字列

Red Hat Quay インスタンスの登録クライアントシークレット。

例: e4a58ddd3d7408b7aec109e85564a0d153d3e846

.DEBUGLOG

ブール値

デバッグを有効にするかどうか。

.LOGIN_BINDING_FIELD

文字列

内部承認が LDAP に設定されている場合に使用されます。Red Hat Quay はこのパラメーターを読み取り、このユーザー名でユーザーの LDAP ツリーで検索を試みます。存在する場合は、その LDAP アカウントへのリンクが自動的に作成されます。

.LOGIN_SCOPES

オブジェクト

Red Hat Quay が OIDC プロバイダーとの通信に使用するスコープを追加します。

.OIDC_ENDPOINT_CUSTOM_PARAMS

文字列

OIDC エンドポイントでのカスタムクエリーパラメーターのサポートを追加しました。エンドポイント authorization_endpointtoken_endpoint、および user_endpoint がサポートされています。

.OIDC_ISSUER

文字列

ユーザーが検証する発行者を定義できます。たとえば、JWT トークンは、トークンを発行したユーザーを定義する iss と呼ばれるパラメーターをコンテナー化します。デフォルトでは、これはすべての OIDC プロバイダーによって公開される .well-know/openid/configuration エンドポイントから読み込まれます。この検証に失敗すると、ログインはありません。

.OIDC_SERVER
(必須)

文字列

認証に使用される OIDC サーバーのアドレス。

例: https://sts.windows.net/6c878…​/

.PREFERRED_USERNAME_CLAIM_NAME

文字列

優先ユーザー名をトークンのパラメーターに設定します。

.SERVICE_ICON

文字列

ログイン画面のアイコンを変更します。

.SERVICE_NAME
(必須)

文字列

認証されているサービスの名前。

例: Microsoft Entra ID

.VERIFIED_EMAIL_CLAIM_NAME

文字列

ユーザーの電子メールアドレスを確認するために使用されるクレームの名前。

.PREFERRED_GROUP_CLAIM_NAME

文字列

ユーザーのグループメンバーシップに関する情報を保持する OIDC トークンペイロード内のキー名。

.OIDC_DISABLE_USER_ENDPOINT

ブール値

/userinfo エンドポイントを許可するか無効にするかを指定します。Azure Entra ID を使用する場合、Azure は /userinfo エンドポイントを呼び出す代わりにトークンからユーザーの情報を取得するため、このフィールドを true に設定する必要があります。

デフォルト: false

3.28.1. OIDC 設定

以下の例は、OIDC 設定のサンプルを示しています。

OIDC 設定の例

AUTHENTICATION_TYPE: OIDC
# ...
AZURE_LOGIN_CONFIG:
    CLIENT_ID: <client_id>
    CLIENT_SECRET: <client_secret>
    OIDC_SERVER: <oidc_server_address_>
    DEBUGGING: true
    SERVICE_NAME: Microsoft Entra ID
    VERIFIED_EMAIL_CLAIM_NAME: <verified_email>
    OIDC_DISABLE_USER_ENDPOINT: true
    OIDC_ENDPOINT_CUSTOM_PARAMS":
                "authorization_endpoint":
                    "some": "param",
# ...

3.29. ネストされたリポジトリー設定フィールド

ネストされたリポジトリーパス名のサポートが FEATURE_EXTENDED_REPOSITORY_NAMES プロパティーに追加されました。このオプションの設定は、デフォルトで config.yaml に追加されます。有効にすると、リポジトリー名で / を使用できます。

表3.34 OCI およびネストされたリポジトリー設定フィールド
フィールドタイプ説明

FEATURE_EXTENDED_REPOSITORY_NAMES

ブール値

ネストされたリポジトリーのサポートを有効にします。

デフォルト: True

OCI とネストされたリポジトリーの設定例

FEATURE_EXTENDED_REPOSITORY_NAMES: true

3.30. QuayIntegration 設定フィールド

QuayIntegration カスタムリソースでは、次の設定フィールドを使用できます。

名前説明スキーマ

allowlistNamespaces
(オプション)

含める namespace のリスト。

アレイ

clusterID
(必須)

このクラスターに関連付けられている ID。

文字列

credentialsSecret.key
(必須)

Quay レジストリーと通信するための認証情報を含む秘密。

オブジェクト

denylistNamespaces
(オプション)

除外する namespace のリスト。

アレイ

insecureRegistry
(オプション)

Quay レジストリーへの TLS 検証をスキップするかどうか

ブール値

quayHostname
(必須)

Quay レジストリーのホスト名。

文字列

scheduledImageStreamImport
(オプション)

イメージストリームのインポートを有効にするかどうか。

ブール値

3.31. メール設定フィールド

表3.35 メール設定フィールド
フィールドタイプ説明

FEATURE_MAILING

ブール値

メールが有効かどうか

デフォルト: False

MAIL_DEFAULT_SENDER

文字列

指定されている場合、Red Hat Quay がメールを送信する際の from として使用されるメールアドレス。何も指定されていない場合は、support@quay.io にデフォルト設定されます。

例: support@example.com

MAIL_PASSWORD

文字列

メールの送信時に使用する SMTP パスワード。

MAIL_PORT

数値

使用する SMTP ポート。指定されていない場合は、デフォルトの 587 になります。

MAIL_SERVER

文字列

メールの送信に使用する SMTP サーバー。FEATURE_MAILING が true に設定されている場合にのみ必要です。

例: smtp.example.com

MAIL_USERNAME

文字列

メールの送信時に使用する SMTP ユーザー名。

MAIL_USE_TLS

ブール値

指定されている場合は、電子メールの送信に TLS を使用するかどうか。

デフォルト: True

3.32. ユーザー設定フィールド

表3.36 ユーザー設定フィールド
フィールドタイプ説明

FEATURE_SUPER_USERS

ブール値

スーパーユーザーがサポートされるかどうか。

デフォルト: true

FEATURE_USER_CREATION

ブール値

ユーザーを作成できるようにするかどうか (スーパーユーザー以外が)。

デフォルト: true

FEATURE_USER_LAST_ACCESSED

ブール値

ユーザーが最後にアクセスした時間を記録するかどうか。

デフォルト: true

FEATURE_USER_LOG_ACCESS

ブール値

true に設定すると、ユーザーは namespace の監査ログにアクセスできます

デフォルト: false

FEATURE_USER_METADATA

ブール値

ユーザーメタデータを収集してサポートするかどうか。

デフォルト: false

FEATURE_USERNAME_CONFIRMATION

ブール値

true に設定すると、OpenID Connect (OIDC) または LDAP などのデータベース以外の認証プロバイダーでログインする場合に、初期ユーザー名を確認および変更できます。
デフォルト: true

FEATURE_USER_RENAME

ブール値

true に設定すると、ユーザーは独自の namespace の名前を変更できます。

デフォルト: false

FEATURE_INVITE_ONLY_USER_CREATION

ブール値

作成するユーザーは別のユーザーから招待を受ける必要があります。

デフォルト: false

FRESH_LOGIN_TIMEOUT

文字列

新規ログイン時にユーザーがパスワードの再入力を要求されるまでの時間。

: 5m

USERFILES_LOCATION

文字列

ユーザーがアップロードしたファイルを配置するストレージエンジンの ID。

: s3_us_east

USERFILES_PATH

文字列

ユーザーがアップロードしたファイルを配置するストレージの下のパス。

: userfiles

USER_RECOVERY_TOKEN_LIFETIME

文字列

ユーザーアカウントを復元するためのトークンが有効な期間。

パターン: ^[0-9]+(w|m|d|h|s)$
デフォルト: 30m

FEATURE_SUPERUSERS_FULL_ACCESS

ブール値

スーパーユーザーが所有していない名前空間、または明示的なアクセス許可を持っていない名前空間内の他のリポジトリーからコンテンツを読み取り、書き込み、削除する機能をスーパーユーザーに付与します。

デフォルト: False

FEATURE_SUPERUSERS_ORG_CREATION_ONLY

ブール値

スーパーユーザーのみに組織の作成を許可するかどうか。

デフォルト: False

FEATURE_RESTRICTED_USERS

ブール値

RESTRICTED_USERS_WHITELISTTrue に設定した場合:

  • すべての通常ユーザーとスーパーユーザーは、RESTRICTED_USERS_WHITELIST によって許可リストに登録されていない限り、独自の namespace に組織またはコンテンツを作成することが制限されます。
  • 制限されたユーザーは、チームメンバーシップに基づいて組織内で通常の権限を保持します。

デフォルト: False

RESTRICTED_USERS_WHITELIST

文字列

FEATURE_RESTRICTED_USERS: true を設定すると、特定のユーザーが FEATURE_RESTRICTED_USERS 設定から除外されます。

GLOBAL_READONLY_SUPER_USERS

文字列

設定すると、公開リポジトリーかどうかに関係なく、このリストのユーザーにすべてのリポジトリーへの読み取りアクセスが許可されます。SUPER_USERS 設定フィールドで定義されたスーパーユーザーでのみ機能します。

3.32.1. ユーザー設定フィールドのリファレンス

次の参照を使用して、目的の設定フィールドで config.yaml ファイルを更新します。

3.32.1.1. FEATURE_SUPERUSERS_FULL_ACCESS 設定リファレンス
---
SUPER_USERS:
- quayadmin
FEATURE_SUPERUSERS_FULL_ACCESS: True
---
3.32.1.2. GLOBAL_READONLY_SUPER_USERS 設定リファレンス
---
GLOBAL_READONLY_SUPER_USERS:
      - user1
---
3.32.1.3. FEATURE_RESTRICTED_USERS 設定リファレンス
---
AUTHENTICATION_TYPE: Database
---
---
FEATURE_RESTRICTED_USERS: true
---
3.32.1.4. RESTRICTED_USERS_WHITELIST 設定リファレンス

前提条件

  • FEATURE_RESTRICTED_USERSconfig.yaml ファイルで true に設定されています。
---
AUTHENTICATION_TYPE: Database
---
---
FEATURE_RESTRICTED_USERS: true
RESTRICTED_USERS_WHITELIST:
      - user1
---
注記

このフィールドが設定されていると、ホワイトリストに登録されたユーザーは、FEATURE_RESTRICTED_USERStrue に設定されていても、組織を作成したり、リポジトリーからコンテンツを読み書きしたりできます。user2user3user4 などの他のユーザーは、組織の作成、コンテンツの読み取りまたは書き込みが制限されています。

3.33. Recaptcha 設定フィールド

表3.37 Recaptcha 設定フィールド
フィールドタイプ説明

FEATURE_RECAPTCHA

ブール値

ユーザーログインおよびリカバリーに Recaptcha が必要かどうか

デフォルト: False

RECAPTCHA_SECRET_KEY

文字列

recaptcha が有効になっている場合は、Recaptcha サービスの秘密鍵

RECAPTCHA_SITE_KEY

文字列

recaptcha が有効になっている場合は、Recaptcha サービスのサイトキー

3.34. ACI 設定フィールド

表3.38 ACI 設定フィールド
フィールドタイプ説明

FEATURE_ACI_CONVERSION

ブール値

ACI への変換を有効にするかどうか

デフォルト: False

GPG2_PRIVATE_KEY_FILENAME

文字列

ACI の復号化に使用される秘密鍵のファイル名

GPG2_PRIVATE_KEY_NAME

文字列

ACI に署名するために使用されるプライベートキーの名前

GPG2_PUBLIC_KEY_FILENAME

文字列

ACI の暗号化に使用する公開鍵のファイル名

3.35. JWT 設定フィールド

表3.39 JWT 設定フィールド
フィールドタイプ説明

JWT_AUTH_ISSUER

文字列

JWT ユーザーのエンドポイント

パターン: ^http(s)?://(.)+$
: http://192.168.99.101:6060

JWT_GETUSER_ENDPOINT

文字列

JWT ユーザーのエンドポイント
パターン: ^http(s)?://(.)+$
: http://192.168.99.101:6060

JWT_QUERY_ENDPOINT

文字列

JWT クエリーのエンドポイント

パターン: ^http(s)?://(.)+$
: http://192.168.99.101:6060

JWT_VERIFY_ENDPOINT

文字列

JWT 検証のエンドポイント

パターン: ^http(s)?://(.)+$
: http://192.168.99.101:6060

3.36. アプリケーショントークン設定フィールド

表3.40 アプリケーショントークン設定フィールド
フィールドタイプ説明

FEATURE_APP_SPECIFIC_TOKENS

ブール値

有効な場合、ユーザーは Docker CLI で使用するトークンを作成できます。

デフォルト: True

APP_SPECIFIC_TOKEN_EXPIRATION

文字列

外部アプリトークンの有効期限。

デフォルト: なし
パターン: ^[0-9]+(w|m|d|h|s)$

EXPIRED_APP_SPECIFIC_TOKEN_GC

文字列

期限切れとなった外部アプリケーションがガべージコレクションが行われるまでに留まる期間。

デフォルト: 1d

3.37. その他の設定フィールド

表3.41 その他の設定フィールド
フィールドタイプ説明

ALLOW_PULLS_WITHOUT_STRICT_LOGGING

文字列

true に指定すると、プルの監査ログのエントリーに書き込みできない場合でも、プルは成功します。これは、データベースが読み取り専用の状態にフォールバックし、その間プルを続行する必要がある場合に便利です。

デフォルト: False

AVATAR_KIND

文字列

表示する avatar のタイプ。インライン (local) または Gravatar (gravatar)。

値: local、gravatar

BROWSER_API_CALLS_XHR_ONLY

ブール値

有効になっていると、ブラウザーから XHR による呼び出しとしてマークが付けられた API のみが許可されます。

デフォルト: True

DEFAULT_NAMESPACE_MAXIMUM_BUILD_COUNT

数値

namespace でキューに入れることができるデフォルトの最大ビルド数です。

デフォルト: None

ENABLE_HEALTH_DEBUG_SECRET

文字列

指定していると、スーパーユーザーとして認証されていない場合に詳細なデバッグ情報を表示するために正常性エンドポイントに指定できるシークレット。

EXTERNAL_TLS_TERMINATION

ブール値

TLS がサポートされていても、Quay の前の層で終了する場合は true に設定します。独自の SSL 証明書を使用して Quay を実行しており、TLS トラフィックを直接受信している場合は、false に設定します。

FRESH_LOGIN_TIMEOUT

文字列

新規ログイン時にユーザーがパスワードの再入力を要求されるまでの時間。

例: 5m

HEALTH_CHECKER

文字列

設定済みのヘルスチェック。

例: ('RDSAwareHealthCheck', {'access_key': 'foo', 'secret_key': 'bar'})

PROMETHEUS_NAMESPACE

文字列

公開されているすべての Prometheus メトリクスに適用される接頭辞。

デフォルト: quay

PUBLIC_NAMESPACES

文字列の配列

名前空間がパブリック名前空間リストで定義されている場合、ユーザーが名前空間のメンバーであるかどうかに関係なく、その名前空間は すべて のユーザーのリポジトリーリストページに表示されます。一般的には、企業のお客様が "よく知られた" 名前空間のセットを設定する際に使用されます。

REGISTRY_STATE

文字列

レジストリーの状態

値: normal または read-only

SEARCH_MAX_RESULT_PAGE_COUNT

数値

ユーザーが検索で表示できる最大ページ数。

デフォルト: 10

SEARCH_RESULTS_PER_PAGE

数値

検索ページでページごとに返される結果数。

デフォルト: 10

V2_PAGINATION_SIZE

数値

V2 レジストリー API において、1 ページあたりに返される結果の数。

デフォルト: 50

WEBHOOK_HOSTNAME_BLACKLIST

文字列の配列

検証時に、ローカルホスト以外に Webhook から禁止するホスト名のセット。

CREATE_PRIVATE_REPO_ON_PUSH

ブール値

プッシュで作成された新規リポジトリーがプライベート表示に設定されているかどうか。

デフォルト: True

CREATE_NAMESPACE_ON_PUSH

ブール値

既存の組織への新規プッシュで namespace を作成するかどうか。

デフォルト: False

NON_RATE_LIMITED_NAMESPACES

文字列の配列

FEATURE_RATE_LIMITS を使用してレートの制限が有効で、特定の namespace で無制限のアクセス権が必要な場合に、オーバーライドできます。

FEATURE_UI_V2

ブール値

設定すると、ユーザーはベータ UI 環境を試すことができます。

デフォルト: True

FEATURE_REQUIRE_TEAM_INVITE

ブール値

ユーザーをチームに追加するときに招待を必要とするかどうか。

デフォルト: True

FEATURE_REQUIRE_ENCRYPTED_BASIC_AUTH

ブール値

(暗号化されたトークンではなく) 暗号化されていないパスワードを Basic 認証に使用できるかどうか

デフォルト: False

FEATURE_RATE_LIMITS

ブール値

API およびレジストリーエンドポイントでレート制限を有効にするかどうか。FEATURE_RATE_LIMITS を true に設定すると、nginx は特定の API 呼び出しを 1 秒あたり 30 回に制限します。この機能が設定されていないと、API コールは 1 秒間に 300 回に制限されます (事実上無制限)。

デフォルト: False

FEATURE_FIPS

ブール値

true に設定すると、Red Hat Quay は FIPS 準拠のハッシュ関数を使用して実行されます。

デフォルト: False

FEATURE_AGGREGATED_LOG_COUNT_RETRIEVAL

ブール値

集計されたログ数の取得を許可するかどうか。

デフォルト: True

FEATURE_ANONYMOUS_ACCESS

ブール値

匿名ユーザーにパブリックリポジトリーの参照とプルを許可するかどうか。

デフォルト: True

FEATURE_DIRECT_LOGIN

ブール値

ユーザーが UI に直接ログインできるかどうか

デフォルト: True

FEATURE_LIBRARY_SUPPORT

ブール値

Docker からプルおよびプッシュするときに "名前空間のない" リポジトリーを許可するかどうか。

デフォルト: True

FEATURE_PARTIAL_USER_AUTOCOMPLETE

ブール値

true に設定すると、オートコンプリートは部分的なユーザー名に適用されます。
デフォルト: True

FEATURE_PERMANENT_SESSIONS

ブール値

セッションが永続的かどうか。

デフォルト: True

FEATURE_PUBLIC_CATALOG

ブール値

true に設定すると、_catalog エンドポイントはパブリックリポジトリーを返します。それ以外では、プライベートリポジトリーのみが返されます。

デフォルト: False

DISABLE_PUSHES

ブール値

他のすべての機能を維持しながら、レジストリーへの新しいコンテンツのプッシュを無効にします。データベースが read-only として設定されていないため、read-only モードとは異なります。DISABLE_PUSHEStrue に設定されていると、Red Hat Quay ガベージコレクターは無効になります。その結果、PERMANENTLY_DELETE_TAGS が有効になっていると、Red Hat Quay UI を使用してタグを永久に削除しても、タグはすぐに削除されません。代わりに、DISABLE_PUSHESfalse に設定され、ガベージコレクターが再度有効になるまで、イメージはバックエンドストレージに残ります。Red Hat Quay 管理者は、DISABLE_PUSHESPERMANENTLY_DELETE_TAGS を一緒に使用する場合、この項目に注意する必要があります。

デフォルト: False

3.38. レガシー設定フィールド

次のフィールドは非推奨または廃止されました。

表3.42 レガシー設定フィールド
フィールドタイプ説明

FEATURE_BLACKLISTED_EMAILS

ブール値

true に設定すると、メールドメインがブラックリストに指定されている場合に新しいユーザーアカウントが作成されません。

BLACKLISTED_EMAIL_DOMAINS

文字列の配列

FEATURE_BLACKLISTED_EMAILS が true に設定されている場合に使用されるメールアドレスドメインの一覧。

例: "example.com", "example.org"

BLACKLIST_V2_SPEC

文字列

Red Hat Quay が V2 は サポート対象外 であることを示す応答を返す Docker CLI バージョン。

: <1.8.0
デフォルト: <1.6.0

DOCUMENTATION_ROOT

文字列

ドキュメントリンクのルート URL。このフィールドは、Red Hat Quay を非接続環境用に設定して、代替のドキュメントリンクや許可リストに登録されたドキュメントリンクを設定する場合に役立ちます。

SECURITY_SCANNER_V4_NAMESPACE_WHITELIST

文字列

セキュリティースキャナーを有効にする namespace。

FEATURE_RESTRICTED_V1_PUSH

ブール値

true に設定すると、V1_PUSH_WHITELIST にリストされている namespace のみが V1 プッシュをサポートします。

デフォルト: False

V1_PUSH_WHITELIST

文字列の配列

FEATURE_RESTRICTED_V1_PUSH が true に設定されている場合に V1 push をサポートする namespace 名の配列。

FEATURE_HELM_OCI_SUPPORT

ブール値

Helm アーティファクトのサポートを有効にします。

デフォルト: False

ALLOWED_OCI_ARTIFACT_TYPES

オブジェクト

許可される OCI アーティファクト MIME タイプと関連するレイヤータイプのセット。

3.39. ユーザーインターフェイス v2 設定フィールド

表3.43 ユーザーインターフェイス v2 設定フィールド
フィールドタイプ説明

FEATURE_UI_V2

ブール値

設定すると、ユーザーはベータ UI 環境を試すことができます。

+ デフォルト: False

FEATURE_UI_V2_REPO_SETTINGS

ブール値

True に設定すると、Red Hat Quay v2 UI でリポジトリー設定が有効になります。

+ デフォルト: False

3.39.1. v2 ユーザーインターフェイス設定

FEATURE_UI_V2 を有効にすると、現在のバージョンのユーザーインターフェイスと新しいバージョンのユーザーインターフェイスを切り替えることができます。

重要
  • この UI は現在ベータ版であり、変更される可能性があります。現在の状態では、ユーザーは組織、リポジトリー、およびイメージタグのみを作成、表示、および削除できます。
  • 古い UI で Red Hat Quay を実行している場合にセッションがタイムアウトになると、ユーザーはポップアップウィンドウでパスワードを再度入力する必要がありました。新しい UI では、ユーザーはメインページに戻り、ユーザー名とパスワードの認証情報を入力する必要があります。これは既知の問題であり、新しい UI の今後のバージョンで修正される予定です。
  • 従来の UI と新しい UI の間で、イメージマニフェストのサイズが報告される方法に違いがあります。従来の UI では、イメージマニフェストはメビバイト単位で報告されていました。新しい UI では、Red Hat Quay はメガバイト (MB) の標準定義を使用して、イメージマニフェストのサイズを報告します。

手順

  1. デプロイメントの config.yaml ファイルで、FEATURE_UI_V2 パラメーターを追加し、true に設定します。次に例を示します。

    ---
    FEATURE_TEAM_SYNCING: false
    FEATURE_UI_V2: true
    FEATURE_USER_CREATION: true
    ---
  2. Red Hat Quay デプロイメントにログインします。
  3. Red Hat Quay デプロイメントのナビゲーションペインに、Current UINew UI を切り替えるオプションが表示されます。切り替えボタンをクリックして新しい UI に設定し、次に Use Beta Environment をクリックします。次に例を示します。

    Red Hat Quay v2 UI toggle

3.40. IPv6 設定フィールド

表3.44 IPv6 設定フィールド
フィールドタイプ説明

FEATURE_LISTEN_IP_VERSION

文字列

IPv4、IPv6、またはデュアルスタックプロトコルファミリーを有効にします。この設定フィールドは正しく設定する必要があります。そうしないと、Red Hat Quay は起動に失敗します。

デフォルト: IPv4

追加設定: IPv6デュアルスタック

3.41. ブランディング設定フィールド

表3.45 ブランディング設定フィールド
フィールドタイプ説明

BRANDING

オブジェクト

Red Hat Quay UI のロゴおよび URL のカスタムブランディング

.logo
(必須)

文字列

メインのロゴイメージ URL。

ヘッダーロゴのデフォルトは 205x30 PX です。Web UI の Red Hat Quay サインイン画面のフォームロゴは、デフォルトで 356.5x39.7 PX です。
例:
/static/img/quay-horizontal-color.svg

.footer_img

文字列

UI フッターのロゴ。デフォルトは 144x34 ピクセルです。

例:
/static/img/RedHat.svg

.footer_url

文字列

フッターイメージへのリンク。

例:
https://redhat.com

3.41.1. Red Hat Quay ブランディングの設定例

ブランディング config.yaml の例

BRANDING:
    logo: https://www.mend.io/wp-content/media/2020/03/5-tips_small.jpg
    footer_img: https://www.mend.io/wp-content/media/2020/03/5-tips_small.jpg
    footer_url: https://opensourceworld.org/

3.42. セッションタイムアウト設定フィールド

次の設定フィールドは、同じ名前の Flask API 設定フィールドに依存しています。

表3.46 セッションログアウト設定フィールド
フィールドタイプ説明

PERMANENT_SESSION_LIFETIME

整数

永続セッションの有効期限を設定するために使用される timedelta。デフォルトは 31 日で、永続セッションは約 1 か月間存続します。

デフォルト: 2678400

3.42.1. 設定セッションタイムアウトの設定例

次の YAML は、セッションの有効期間を有効にする場合の推奨設定です。

重要

セッションの有効期間を変更することは推奨できません。管理者は、セッションタイムアウトを設定するときに、割り当てられた時間を認識する必要があります。時間が早すぎると、ワークフローが中断する可能性があります。

セッションタイムアウトの YAML 設定

PERMANENT_SESSION_LIFETIME: 3000

第4章 環境変数

Red Hat Quay は、動的に設定する多数の環境変数をサポートします。

4.1. Geo レプリケーション

ストレージバックエンド以外のすべてのリージョンで同じ設定を使用する必要があります。これは、QUAY_DISTRIBUTED_STORAGE_PREFERENCE 環境変数を使用して明示的に設定できます。

表4.1 Geo レプリケーションの設定
変数タイプ説明

QUAY_DISTRIBUTED_STORAGE_PREFERENCE

文字列

使用する優先されるストレージ (DISTRIBUTED_STORAGE_CONFIG の ID 別)

4.2. データベース接続プール

Red Hat Quay は、すべてが同じコンテナー内で実行する多くの異なるプロセスで構成されています。これらのプロセスの多くは、データベースと連動しています。

データベース接続プールはデフォルトで有効になっており、データベースと対話する各プロセスには接続プールが含まれます。これらのプロセスごとのコネクションプールは、最大 20 個の接続を維持するように設定されています。高負荷時には、Red Hat Quay コンテナー内のすべてのプロセスの接続プールを満たすことが可能です。特定のデプロイメントおよび負荷では、Red Hat Quay が設定されたデータベースの最大接続数を超えないようにするための分析が必要になる場合があります。

時間が経つと、接続プールはアイドル状態の接続を解放します。すべての接続をすぐに解除するには、Red Hat Quay の再起動が必要です。

スタンドアロンの Red Hat Quay デプロイメントの場合、デプロイメントの開始時にデータベース接続プールをオフに切り替えることができます。以下に例を示します。

$ sudo podman run -d --rm -p 80:8080 -p 443:8443  \
   --name=quay \
   -v $QUAY/config:/conf/stack:Z \
   -v $QUAY/storage:/datastorage:Z \
   -e DB_CONNECTION_POOLING=false
   registry.redhat.io/quay/quay-rhel8:v3.12.1

Red Hat Quay on OpenShift Container Platform では、QuayRegistry カスタムリソース定義 (CRD) を変更することでデータベース接続プールを設定できます。以下に例を示します。

QuayRegistry CRD の例

spec:
  components:
  - kind: quay
    managed: true
    overrides:
      env:
      - name: DB_CONNECTION_POOLING
        value: "false"

表4.2 データベース接続プールの設定
変数タイプ説明

DB_CONNECTION_POOLING

文字列

データベース接続プールを有効にするか無効にするかを指定します。デフォルトは true です。使用可能な値は "true" または "false"です。

データベース接続プーリングが有効な場合は、接続プールの最大サイズを変更することができます。これは、以下の config.yaml オプションを使用して実行できます。

config.yaml

...
DB_CONNECTION_ARGS:
  max_connections: 10
...

4.3. HTTP 接続回数

環境変数を使用して、HTTP の同時接続数を指定することができます。これらは、全体として、または特定のコンポーネントに対して指定できます。それぞれのデフォルトは、プロセスあたり 50 の並列接続です。

表4.3 HTTP 接続数の設定
変数タイプ説明

WORKER_CONNECTION_COUNT

数値

同時 HTTP 接続

デフォルト: 50

WORKER_CONNECTION_COUNT_REGISTRY

数値

レジストリーの同時 HTTP 接続

デフォルト: WORKER_CONNECTION_COUNT

WORKER_CONNECTION_COUNT_WEB

数値

Web UI の同時 HTTP 接続

デフォルト: WORKER_CONNECTION_COUNT

WORKER_CONNECTION_COUNT_SECSCAN

数値

Clair の同時 HTTP 接続

デフォルト: WORKER_CONNECTION_COUNT

4.4. ワーカーカウント変数

表4.4 ワーカーカウント変数
変数タイプ説明

WORKER_COUNT

数値

プロセス数の汎用上書き

WORKER_COUNT_REGISTRY

数値

Quay コンテナー内のレジストリー要求を処理するプロセス数を指定します。

値: 8 から 64 までの整数

WORKER_COUNT_WEB

数値

コンテナー内の UI/Web リクエストを処理するプロセス数を指定します。

値: 2 から 32 までの整数

WORKER_COUNT_SECSCAN

数値

コンテナー内のセキュリティースキャン (Clair など) の統合を処理するプロセス数を指定します。

値: 整数。Operator がリソースの要求と制限に 2 vCPU を指定するため、この値は 2 から 4 に設定するのが安全です。ただし、ユーザーは、保証があれば、それ以上 (たとえば 16) 実行できます。

4.5. デバッグ変数

次のデバッグ変数は Red Hat Quay で利用できます。

表4.5 デバッグ設定変数
変数タイプ説明

DEBUGLOG

ブール値

デバッグログを有効または無効にするかどうか。

USERS_DEBUG

整数。0 または 1 のいずれか。

パスワードを含むクリアテキストで LDAP 操作をデバッグするために使用されます。DEBUGLOG=TRUE とともに使用する必要があります。

重要

USERS_DEBUG=1 を設定すると、認証情報がクリアテキストで公開されます。この変数は、デバッグ後に Red Hat Quay デプロイメントから削除する必要があります。この環境変数を使用して生成されたログファイルは精査する必要があり、他のユーザーに送信する前にパスワードを削除する必要があります。注意して使用してください。

第5章 Clair セキュリティースキャナー

5.1. Clair 設定の概要

Clair は、構造化された YAML ファイルによって設定されます。各 Clair ノードは、CLI フラグまたは環境変数を使用して、実行するモードと設定ファイルへのパスを指定する必要があります。以下に例を示します。

$ clair -conf ./path/to/config.yaml -mode indexer

あるいは、以下のような場合もあります。

$ clair -conf ./path/to/config.yaml -mode matcher

前述のコマンドはそれぞれ、同じ設定ファイルを使用して 2 つの Clair ノードを開始します。1 つはインデックス作成機能を実行し、もう 1 つはマッチング機能を実行します。

Clair を combo モードで実行している場合は、設定でインデクサー、matcher、およびノーティファイアー設定ブロックを指定する必要があります。

5.1.1. プロキシー環境での Clair の使用に関する情報

Go 標準ライブラリーが尊重する環境変数は、必要に応じて指定できます。次に例を示します。

  • HTTP_PROXY

    $ export HTTP_PROXY=http://<user_name>:<password>@<proxy_host>:<proxy_port>
  • HTTPS_PROXY

    $ export HTTPS_PROXY=https://<user_name>:<password>@<proxy_host>:<proxy_port>
  • SSL_CERT_DIR

    $ export SSL_CERT_DIR=/<path>/<to>/<ssl>/<certificates>
  • NO_PROXY

    $ export NO_PROXY=<comma_separated_list_of_hosts_and_domains>

Clair のアップデーター URL を使用して環境内でプロキシーサーバーを使用している場合は、Clair がスムーズにその URL にアクセスできるように、どの URL をプロキシー許可リストに追加する必要があるかを特定する必要があります。たとえば、osv アップデーターは、エコシステムデータダンプを取得するために https://osv-vulnerabilities.storage.googleapis.com にアクセスする必要があります。このような場合、URL をプロキシー許可リストに追加する必要があります。アップデーター URL の完全なリストは、「Clair のアップデーター URL」を参照してください。

また、標準の Clair URL がプロキシー許可リストに追加されていることを確認する必要があります。

  • https://search.maven.org/solrsearch/select
  • https://catalog.redhat.com/api/containers/
  • https://access.redhat.com/security/data/metrics/repository-to-cpe.json
  • https://access.redhat.com/security/data/metrics/container-name-repos-map.json

プロキシーサーバーを設定するときは、Clair とこれらの URL 間のシームレスな通信を可能にするために必要な認証要件や特定のプロキシー設定を考慮してください。これらの考慮事項をすべて文書化して対処することで、アップデーターのトラフィックをプロキシー経由でルーティングしながら、Clair を効果的に機能させることができます。

5.1.2. Clair 設定リファレンス

次の YAML は、Clair 設定の例を示しています。

http_listen_addr: ""
introspection_addr: ""
log_level: ""
tls: {}
indexer:
    connstring: ""
    scanlock_retry: 0
    layer_scan_concurrency: 5
    migrations: false
    scanner: {}
    airgap: false
matcher:
    connstring: ""
    indexer_addr: ""
    migrations: false
    period: ""
    disable_updaters: false
    update_retention: 2
matchers:
    names: nil
    config: nil
updaters:
    sets: nil
    config: nil
notifier:
    connstring: ""
    migrations: false
    indexer_addr: ""
    matcher_addr: ""
    poll_interval: ""
    delivery_interval: ""
    disable_summary: false
    webhook: null
    amqp: null
    stomp: null
auth:
  psk: nil
trace:
    name: ""
    probability: null
    jaeger:
        agent:
            endpoint: ""
        collector:
            endpoint: ""
            username: null
            password: null
        service_name: ""
        tags: nil
        buffer_max: 0
metrics:
    name: ""
    prometheus:
        endpoint: null
    dogstatsd:
        url: ""
注記

上記の YAML ファイルには、万全を期すためにすべてのキーがリストされています。この設定ファイルをそのまま使用すると、一部のオプションがデフォルトで正常に設定されない場合があります。

5.1.3. Clair の一般的なフィールド

次の表では、Clair デプロイメントで使用できる一般的な設定フィールドを説明します。

フィールドTyphttp_listen_ae説明

http_listen_addr

文字列

HTTP API が公開される場所を設定します。

デフォルト: :6060

introspection_addr

文字列

Clair のメトリクスと正常性エンドポイントが公開される場所を設定します。

log_level

文字列

ログレベルを設定します。文字列 debug-colordebuginfowarnerrorfatalpanic のいずれかが必要です。

tls

文字列

TLS/SSL および HTTP/2 の HTTP API を提供するための設定を含むマップ。

.cert

文字列

使用する TLS 証明書。フルチェーン証明書である必要があります。

一般的な Clair フィールドの設定例

次の例は、Clair 設定を示しています。

一般的な Clair フィールドの設定例

# ...
http_listen_addr: 0.0.0.0:6060
introspection_addr: 0.0.0.0:8089
log_level: info
# ...

5.1.4. Clair インデクサー設定フィールド

次の表では、Clair の indexer コンポーネントの設定フィールドを説明します。

フィールドタイプ説明

indexer

オブジェクト

Clair インデクサーノード設定を提供します。

.airgap

ブール値

インデクサーとフェッチャーのインターネットへの HTTP アクセスを無効にします。プライベート IPv4 および IPv6 アドレスが許可されます。データベース接続は影響を受けません。

.connstring

文字列

Postgres 接続文字列。URL または libpq 接続文字列として形式を受け入れます。

.index_report_request_concurrency

整数

レートは、インデックスレポート作成リクエストの数を制限します。これを 0 に設定すると、この値の自動サイズ調整が試みられます。負の値を設定すると、無制限になります。自動サイジングは、使用可能なコア数の倍数です。

同時実行数を超えた場合、API はステータスコード 429 を返します。

.scanlock_retry

整数

秒を表す正の整数。並行インデクサーは、マニフェストスキャンをロックして、上書きを回避します。この値は、待機中のインデクサーがロックをポーリングする頻度をチューニングします。

.layer_scan_concurrency

整数

レイヤーの同時スキャン数を制限する正の整数。インデクサーは、マニフェストのレイヤーを同時にマッチングします。この値は、インデクサーが並行してスキャンするレイヤーの数をチューニングします。

.migrations

ブール値

インデクサーノードがデータベースへの移行を処理するかどうか。

.scanner

文字列

インデクサー設定。

Scanner を使用すると、設定オプションをレイヤースキャナーに渡すことができます。スキャナーは、そのように設計されていると、構築時にこの設定を渡します。

.scanner.dist

文字列

特定のスキャナーの名前と値として任意の YAML を持つマップ。

.scanner.package

文字列

特定のスキャナーの名前と値として任意の YAML を持つマップ。

.scanner.repo

文字列

特定のスキャナーの名前と値として任意の YAML を持つマップ。

インデクサー設定の例

次の例は、Clair の仮のインデクサー設定を示しています。

インデクサー設定の例

# ...
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
# ...

5.1.5. Clair matcher 設定フィールド

次の表では、Clair の matcher コンポーネントの設定フィールドを説明します。

注記

matchers 設定フィールドとは異なります。

フィールドタイプ説明

matcher

オブジェクト

Clair matcher ノード設定を提供します。

.cache_age

文字列

レスポンスをキャッシュするように、ユーザーに通知する期間を制御します。

.connstring

文字列

Postgres 接続文字列。URL または libpq 接続文字列として形式を受け入れます。

.max_conn_pool

整数

データベース接続プールのサイズを制限します。

Clair では、カスタムの接続プールサイズを使用できます。この数は、同時に許可されるアクティブなデータベース接続の数を直接設定します。

このパラメーターは、将来のバージョンでは無視されます。ユーザーは、接続文字列を使用して、これを設定する必要があります。

.indexer_addr

文字列

matcher は indexer に接続して脆弱性レポートを作成します。このインデクサーの場所は必須です。

デフォルトは 30m です。

.migrations

ブール値

matcher ノードがデータベースへの移行を処理するかどうか。

.period

文字列

新しいセキュリティーアドバイザリーの更新頻度を決定します。

デフォルトは 30m です。

.disable_updaters

ブール値

バックグラウンド更新を実行するかどうか。

デフォルト: False

.update_retention

整数

ガベージコレクションサイクル間で保持する更新操作の数を設定します。これは、データベースサイズの制約に基づいて安全な MAX 値に設定する必要があります。

デフォルトは 10m です。

0 未満の値を指定すると、ガベージコレクションが無効になります。2 は、更新を通知と比較できるようにするための最小値です。

matcher 設定の例

matcher 設定の例

# ...
matcher:
  connstring: >-
    host=<DB_HOST> port=5432 dbname=<matcher> user=<DB_USER> password=D<B_PASS>
    sslmode=verify-ca sslcert=/etc/clair/ssl/cert.pem sslkey=/etc/clair/ssl/key.pem
    sslrootcert=/etc/clair/ssl/ca.pem
  indexer_addr: http://clair-v4/
  disable_updaters: false
  migrations: true
  period: 6h
  update_retention: 2
# ...

5.1.6. Clair matchers 設定フィールド

次の表では、Clair の matchers コンポーネントの設定フィールドを説明します。

注記

matcher 設定フィールドとは異なります。

表5.1 matchers 設定フィールド
フィールドタイプ説明

matchers

文字列の配列

ツリー内 matchers の設定を提供します。

.names

文字列

有効な matchers について matcher ファクトリーに通知する文字列値のリスト。値を null に設定すると、matchers のデフォルトのリストが実行されます。次の文字列が受け入れられます。alpine-matcheraws-matcherdebian-matchergobinjava-mavenoraclephotonpythonrhelrhel-container-matcherrubysuseubuntu-matcher

.config

文字列

特定の matcher に設定を提供します。

matchers ファクトリーコンストラクターに提供されるサブオブジェクトを含む matcher の名前をキーとするマップ。以下に例を示します。

matchers 設定の例

次の例は、alpineawsdebianoracle matchers のみを必要とする仮の Clair デプロイメントを示しています。

matchers 設定の例

# ...
matchers:
  names:
  - "alpine-matcher"
  - "aws"
  - "debian"
  - "oracle"
# ...

5.1.7. Clair アップデーター設定フィールド

次の表では、Clair の updaters コンポーネントの設定フィールドを説明します。

表5.2 アップデーター設定フィールド
フィールドタイプ説明

updaters

オブジェクト

matcher の更新マネージャーの設定を提供します。

.sets

文字列

どのアップデーターを実行するかを更新マネージャーに通知する値のリスト。

値を null に設定すると、アップデーターのデフォルトのセットが、alpineawsclair.cvssdebianoraclephotonosvrhelrhcc suseubuntu を実行します。

空白のままにすると、アップデーターは実行されません。

.config

文字列

特定のアップデーターセットに設定を提供します。

アップデーターセットのコンストラクターに提供されるサブオブジェクトを含むアップデーターセットの名前をキーとするマップ。各アップデーターのサブオブジェクトのリストは、「詳細なアップデーター設定」を参照してください。

アップデーター設定の例

次の設定では、rhel セットのみが設定されます。rhel アップデーターに固有の ignore_unpatched 変数も定義されています。

アップデーター設定の例

# ...
updaters:
  sets:
    - rhel
  config:
    rhel:
      ignore_unpatched: false
# ...

5.1.8. Clair ノーティファイアー設定フィールド

Clair の一般的なノーティファイアー設定フィールドを以下に示します。

フィールドタイプ説明

notifier

オブジェクト

Clair ノーティファイアーノード設定を提供します。

.connstring

文字列

Postgres 接続文字列。形式を URL または libpq 接続文字列として受け入れます。

.migrations

ブール値

ノーティファイアーノードがデータベースへの移行を処理するかどうか。

.indexer_addr

文字列

ノーティファイアーはインデクサーに接続して、脆弱性の影響を受けるマニフェストを作成または取得します。このインデクサーの場所は必須です。

.matcher_addr

文字列

ノーティファイアーは matcher に接続して、更新操作をリストし、差分を取得します。この matcher の場所は必須です。

.poll_interval

文字列

ノーティファイアーが matcher に更新操作をクエリーする頻度。

.delivery_interval

文字列

ノーティファイアーが、作成された通知または以前に失敗した通知の配信を試行する頻度。

.disable_summary

ブール値

通知をマニフェストごとに 1 つに要約するかどうかを制御します。

ノーティファイアー設定の例

次の notifier スニペットは、最小設定用です。

ノーティファイアー設定の例

# ...
notifier:
  connstring: >-
    host=DB_HOST port=5432 dbname=notifier user=DB_USER password=DB_PASS
    sslmode=verify-ca sslcert=/etc/clair/ssl/cert.pem sslkey=/etc/clair/ssl/key.pem
    sslrootcert=/etc/clair/ssl/ca.pem
  indexer_addr: http://clair-v4/
  matcher_addr: http://clair-v4/
  delivery_interval: 5s
  migrations: true
  poll_interval: 15s
  webhook:
    target: "http://webhook/"
    callback: "http://clair-notifier/notifier/api/v1/notifications"
    headers: ""
  amqp: null
  stomp: null
# ...

5.1.8.1. Clair Webhook 設定フィールド

次の Webhook フィールドを Clair ノーティファイアー環境で使用できます。

表5.3 Clair Webhook フィールド

.webhook

オブジェクト

Webhook 配信のノーティファイアーを設定します。

.webhook.target

文字列

Webhook が配信される URL。

.webhook.callback

文字列

通知を取得できるコールバック URL。この URL に通知 ID が追加されます。

これは通常、Clair ノーティファイアーがホスティングされている場所です。

.webhook.headers

文字列

ヘッダー名を値のリストに関連付けるマップ。

Webhook 設定の例

Webhook 設定の例

# ...
notifier:
# ...
  webhook:
    target: "http://webhook/"
    callback: "http://clair-notifier/notifier/api/v1/notifications"
# ...

5.1.8.2. Clair amqp 設定フィールド

次の Advanced Message Queuing Protocol (AMQP) フィールドを Clair ノーティファイアー環境で使用できます。

.amqp

オブジェクト

AMQP 配信のノーティファイアーを設定します。

[注記] ==== Clair は独自に AMQP コンポーネントを宣言しません。エクスチェンジまたはキューを使用しようとするすべての試みは、パッシブのみであり、失敗します。ブローカー管理者は、事前にエクスチェンジとキューをセットアップする必要があります。====

.amqp.direct

ブール値

true の場合、ノーティファイアーは設定された AMQP ブローカーに個別の通知 (コールバックではない) を配信します。

.amqp.rollup

整数

amqp.directtrue に設定されている場合、この値は直接配信で送信する通知の数をノーティファイアーに通知します。たとえば、directtrue に設定され、amqp.rollup5 に設定されている場合、ノーティファイアーは単一の JSON ペイロードで 5 つ以下の通知をブローカーに配信します。値を 0 に設定すると、実質的に 1 に設定されます。

.amqp.exchange

オブジェクト

接続先の AMQP エクスチェンジ。

.amqp.exchange.name

文字列

接続先のエクスチェンジの名前。

.amqp.exchange.type

文字列

エクスチェンジのタイプ。通常は、directfanouttopicheaders のいずれかです。

.amqp.exchange.durability

ブール値

設定されたキューが永続的かどうか。

.amqp.exchange.auto_delete

ブール値

設定されたキューが auto_delete_policy を使用するかどうか。

.amqp.routing_key

文字列

各通知が送信されるルーティングキーの名前。

.amqp.callback

文字列

amqp.directfalse に設定されている場合、この URL はブローカーに送信される通知コールバックで提供されます。この URL は、Clair の通知 API エンドポイントを指している必要があります。

.amqp.uris

文字列

接続先の 1 つ以上の AMQP ブローカーのリスト (優先順位順)。

.amqp.tls

オブジェクト

AMQP ブローカーへの TLS/SSL 接続を設定します。

.amqp.tls.root_ca

文字列

ルート CA を読み取ることができるファイルシステムパス。

.amqp.tls.cert

文字列

TLS/SSL 証明書を読み取ることができるファイルシステムパス。

[注意] ==== Go crypto/x509 パッケージに記載されているように、Clair は SSL_CERT_DIR も許可します。====

.amqp.tls.key

文字列

TLS/SSL 秘密鍵を読み取ることができるファイルシステムパス。

AMQP 設定の例

次の例は、Clair の仮の AMQP 設定を示しています。

AMQP 設定の例

# ...
notifier:
# ...
  amqp:
    exchange:
        name: ""
        type: "direct"
        durable: true
        auto_delete: false
    uris: ["amqp://user:pass@host:10000/vhost"]
    direct: false
    routing_key: "notifications"
    callback: "http://clair-notifier/notifier/api/v1/notifications"
    tls:
     root_ca: "optional/path/to/rootca"
     cert: "madatory/path/to/cert"
     key: "madatory/path/to/key"
# ...

5.1.8.3. Clair STOMP 設定フィールド

次の Simple Text Oriented Message Protocol (STOMP) フィールドを Clair ノーティファイアー環境で使用できます。

.stompオブジェクトSTOMP 配信のノーティファイアーを設定します。

.stomp.direct

ブール値

true の場合、ノーティファイアーは個別の通知 (コールバックではない) を設定済みの STOMP ブローカーに配信します。

.stomp.rollup

整数

stomp.directtrue に設定されている場合、この値は、1 回の直接配信で送信される通知の数を制限します。たとえば、directtrue に設定され、rollup5 に設定されている場合、ノーティファイアーは単一の JSON ペイロードで 5 つ以下の通知をブローカーに配信します。値を 0 に設定すると、実質的に 1 に設定されます。

.stomp.callback

文字列

stomp.callbackfalse に設定されている場合は、通知コールバックで指定された URL がブローカーに送信されます。この URL は、Clair の通知 API エンドポイントを指している必要があります。

.stomp.destination

文字列

通知を配信する STOMP の宛先。

.stomp.uris

文字列

接続先の 1 つ以上の STOMP ブローカーのリスト (優先順位順)。

.stomp.tls

オブジェクト

STOMP ブローカーへの TLS/SSL 接続を設定しました。

.stomp.tls.root_ca

文字列

ルート CA を読み取ることができるファイルシステムパス。

[注意] ==== Go crypto/x509 パッケージに記載されているように、Clair は SSL_CERT_DIR も受け入れます。====

.stomp.tls.cert

文字列

TLS/SSL 証明書を読み取ることができるファイルシステムパス。

.stomp.tls.key

文字列

TLS/SSL 秘密鍵を読み取ることができるファイルシステムパス。

.stomp.user

文字列

STOMP ブローカーのログインの詳細を設定します。

.stomp.user.login

文字列

接続に使用する STOMP ログイン。

.stomp.user.passcode

文字列

接続に使用する STOMP パスコード。

STOMP 設定の例

次の例は、Clair の仮の STOMP 設定を示しています。

STOMP 設定の例

# ...
notifier:
# ...
  stomp:
    desitnation: "notifications"
    direct: false
    callback: "http://clair-notifier/notifier/api/v1/notifications"
    login:
      login: "username"
      passcode: "passcode"
    tls:
     root_ca: "optional/path/to/rootca"
     cert: "madatory/path/to/cert"
     key: "madatory/path/to/key"
# ...

5.1.9. Clair 認可設定フィールド

Clair では、次の認可設定フィールドを使用できます。

フィールドタイプ説明

auth

オブジェクト

Clair の外部およびサービス内 JWT ベースの認証を定義します。複数の auth 機能が定義されている場合、Clair は 1 つを選択します。現在、複数の機能はサポートされていません。

.psk

文字列

事前共有キー認証を定義します。

.psk.key

文字列

JWT の署名と検証を行うすべての当事者間で配布される、base64 でエンコードされた共有キー。

.psk.iss

文字列

確認する JWT 発行者のリスト。空のリストは、JWT クレームで任意の発行者を受け入れます。

認可設定の例

次の authorization スニペットは、最小設定用です。

認可設定の例

# ...
auth:
  psk:
    key: MTU5YzA4Y2ZkNzJoMQ== 1
    iss: ["quay"]
# ...

5.1.10. Clair トレース設定フィールド

Clair では、次のトレース設定フィールドを使用できます。

フィールドタイプ説明

trace

オブジェクト

OpenTelemetry に基づいて分散トレース設定を定義します。

.name

文字列

トレースが属するアプリケーションの名前。

.probability

整数

トレースが発生する確率。

.jaeger

オブジェクト

Jaeger トレースの値を定義します。

.jaeger.agent

オブジェクト

Jaeger エージェントへの配信を設定するための値を定義します。

.jaeger.agent.endpoint

文字列

トレースを送信できる <host>:<post> 構文のアドレス。

.jaeger.collector

オブジェクト

Jaeger コレクターへの配信を設定するための値を定義します。

.jaeger.collector.endpoint

文字列

トレースを送信できる <host>:<post> 構文のアドレス。

.jaeger.collector.username

文字列

Jaeger ユーザー名。

.jaeger.collector.password

文字列

Jaeger パスワード。

.jaeger.service_name

文字列

Jaeger に登録されているサービス名。

.jaeger.tags

文字列

追加のメタデータを提供するキーと値のペア。

.jaeger.buffer_max

整数

保管および分析のために Jaeger バックエンドに送信される前にメモリーにバッファーできるスパンの最大数。

トレース設定の例

次の例は、Clair の仮のトレース設定を示しています。

トレース設定の例

# ...
trace:
  name: "jaeger"
  probability: 1
  jaeger:
    agent:
      endpoint: "localhost:6831"
    service_name: "clair"
# ...

5.1.11. Clair メトリクス設定フィールド

Clair では、次のメトリクス設定フィールドを使用できます。

フィールドタイプ説明

metrics

オブジェクト

OpenTelemetry に基づいて分散トレース設定を定義します。

.name

文字列

使用中のメトリクスの名前。

.prometheus

文字列

Prometheus メトリクスエクスポーターの設定。

.prometheus.endpoint

文字列

メトリクスが提供されるパスを定義します。

メトリクス設定の例

次の例は、Clair の仮のメトリクス設定を示しています。

メトリクス設定の例

# ...
metrics:
  name: "prometheus"
  prometheus:
    endpoint: "/metricsz"
# ...

法律上の通知

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.