Image Catalog ============= .. raw:: html ``ImageCatalog`` および\ ``ClusterImageCatalog`` は、 PostgreSQLイメージのライフサイクルを\ ``Cluster`` 定義から分離できるカスタムリソース定義CRDです。カタログを使用することにより、イメージの更新を一元管理できます。カタログエントリが更新されると、関連するすべてのクラスターが自動的に :ref:`roll out the new image ` 。 カスタムカタログをビルドすることはできますが、CloudNativePGは\ ``ClusterImageCatalog`` リソースとして :ref:`CloudNativePGカタログ ` を提供し、すべての公式コミュニティPostgreSQLコンテナイメージをカバーします。 カタログのスコーピング ---------------------- 2つのリソースの主な違いは、そのスコープです。 .. csv-table:: :header: Resource,Scope,Best use case :widths: 12,15,20 :align: left :class: longtable `ImageCatalog`,Namespaced,Application-specific versions or team-level restrictions. `ClusterImageCatalog`,Cluster-wide,Global standards across all namespaces for an organization. カタログ構造 ------------ 両方のリソースは、共通のスキーマを共有します。 - **メジャーバージョン** ``major`` PostgreSQLバージョンによってキー付けられたイメージのリスト。 - **一意性** ``major`` フィールドは、単一のカタログ内で一意である必要があります。 - **拡張機能** 認定された拡張機能コンテナイメージのサポート\ ``extension_control_path`` 経由でPostgreSQL 18+で利用可能。 .. Warning:: オペレーターは画像検出を実行せずにユーザー定義の`major` バージョンを信頼しますが、公式CloudNativePGカタログはコミュニティによって事前検証され、すべての拡張機能とオペランドのイメージエントリが宣言されたメジャーバージョンと正しく一致することを確認します。カスタムカタログを作成する場合は、宣言されたメジャーバージョンが実際のPostgreSQLイメージと一致することを確認して、互換性を維持する必要があります。 構成例 ------ カタログの定義 ^^^^^^^^^^^^^^ 単一のカタログ内で複数のメジャーバージョンを定義できます。 次の例では、名前空間\ ``ImageCatalog`` を定義します。 .. code:: yaml apiVersion: postgresql.cnpg.io/v1 kind: ImageCatalog metadata: name: postgresql namespace: default spec: images: - major: 15 image: ghcr.io/cloudnative-pg/postgresql:15.14-system-trixie - major: 16 image: ghcr.io/cloudnative-pg/postgresql:16.10-system-trixie - major: 17 image: ghcr.io/cloudnative-pg/postgresql:17.6-system-trixie - major: 18 image: ghcr.io/cloudnative-pg/postgresql:18.3-system-trixie 次の例は、クラスター全体の\ ``ClusterImageCatalog`` を定義します。 .. code:: yaml apiVersion: postgresql.cnpg.io/v1 kind: ClusterImageCatalog metadata: name: postgresql-global spec: images: - major: 15 image: ghcr.io/cloudnative-pg/postgresql:15.14-system-trixie - major: 16 image: ghcr.io/cloudnative-pg/postgresql:16.10-system-trixie - major: 17 image: ghcr.io/cloudnative-pg/postgresql:17.6-system-trixie - major: 18 image: ghcr.io/cloudnative-pg/postgresql:18.3-system-trixie クラスター内のカタログの参照 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ``Cluster`` リソースは、 ``imageCatalogRef`` を使用して画像を選択します。 .. code:: yaml apiVersion: postgresql.cnpg.io/v1 kind: Cluster metadata: name: cluster-example spec: instances: 3 imageCatalogRef: apiGroup: postgresql.cnpg.io kind: ClusterImageCatalog # Or ImageCatalog name: postgresql-global major: 18 storage: size: 1Gi イメージボリューム拡張を使用したイメージカタログ ------------------------------------------------ :ref:`イメージボリューム拡張を使用したイメージカタログ <イメージボリューム拡張を使用したイメージカタログ>` では、カタログエントリー内で直接拡張機能のコンテナをバンドルできます。 .. code:: yaml apiVersion: postgresql.cnpg.io/v1 kind: ImageCatalog metadata: name: postgresql spec: images: - major: 18 image: ghcr.io/cloudnative-pg/postgresql:18.3-minimal-trixie extensions: - name: foo image: reference: # registry path for your `foo` extension image ``extensions`` セクションは :ref:`ExtensionConfiguration ` の後です APIスキーマと構造。イメージカタログを参照するクラスターは、関連する拡張機能を名前でロードできます。 .. Note:: :ref:`documentation of image volume extensions ` を参照してください。 内部イメージ構造、構成オプション、およびクラスター内のカタログ拡張機能を選択またはオーバーライドする方法の詳細については、 CloudNativePGカタログ --------------------- CloudNativePGプロジェクトは、サポートされているすべてのイメージの\ ``ClusterImageCatalog`` マニフェストを維持します。 これらのカタログは定期的に更新され、 `artifacts repository `_ で公開されます。 各カタログは、イメージタイプ\ ``minimal`` などとDebianリリース\ ``trixie`` などの特定の組み合わせに対応しています。サポートされているすべてのPostgreSQLメジャーバージョンの最新のコンテナイメージをリストしています。 .. Important:: 最大限のセキュリティと不変性を保証するために、公式CloudNativePGカタログ内のすべての画像は、単なるタグではなく**SHA256ダイジェスト**によって識別されます。 バージョンの互換性 ^^^^^^^^^^^^^^^^^^ 標準カタログはオペレーターの古いバージョンで動作しますが、 **``extensions`` セクションを含むカタログはCloudNativePG 1.29以降** とのみ互換性があります。古いオペレーターの拡張定義を含むカタログを使用すると、これらの定義が拒否されます。 インストールと使用 ^^^^^^^^^^^^^^^^^^ これらのカタログをインストールすることにより、クラスター管理者は、PostgreSQLクラスターが、選択したDebianディストリビューションとイメージタイプの特定のPostgreSQLメジャーバージョン内の最新のパッチリリースに自動的に更新されることを確認できます。 たとえば、\ ``minimal`` PostgreSQLコンテナイメージの最新のカタログをDebian ``trixie`` にインストールするには、次のコマンドを実行します。 .. code:: shell kubectl apply -f \ https://raw.githubusercontent.com/cloudnative-pg/artifacts/refs/heads/main/image-catalogs/catalog-minimal-trixie.yaml ``image-catalogs`` ディレクトリにある\ ``kustomization`` ファイルを使用して、使用可能なすべてのカタログをインストールできます。 .. code:: shell kubectl apply -k https://github.com/cloudnative-pg/artifacts//image-catalogs?ref=main 次に、次の方法で展開されたすべてのカタログを表示できます。 .. code:: shell kubectl get clusterimagecatalogs.postgresql.cnpg.io 例 クラスターでのカタログの使用 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ``trixie`` 上のPostgreSQL 18の最新の\ ``minimal`` イメージを常に追跡するクラスターを作成するには、次のように\ ``Cluster`` を定義します。 .. code:: yaml apiVersion: postgresql.cnpg.io/v1 kind: Cluster metadata: name: angus spec: instances: 3 imageCatalogRef: apiGroup: postgresql.cnpg.io kind: ClusterImageCatalog name: postgresql-minimal-trixie major: 18 storage: size: 1Gi