Image Catalog

ImageCatalog およびClusterImageCatalog は、 Cluster を作成するためのイメージを定義できるようにする重要なリソースです。

主な違いはスコープにあります。ImageCatalog は名前空間ですが、ClusterImageCatalog はクラスタースコープです。

どちらも、イメージのリストで構成される共通の構造を共有し、各イメージのメジャーバージョンを示すmajor フィールドを備えています。

警告

オペレーターはユーザー定義のメジャーバージョンを信頼し、PostgreSQLバージョンの検出の実行を控えます。カタログで宣言されたメジャーバージョンとPostgreSQLイメージ間のアライメントを保証するのはユーザーの責任です。

major フィールドの値は、カタログ内で一意を維持し、イメージ間の重複を防ぐ必要があります。ただし、別のカタログは、同じmajor 値で異なるイメージを公開する場合があります。

名前空間``ImageCatalog`` の例

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.1-system-trixie

``ClusterImageCatalog`` リソースを使用したクラスター全体のカタログの例

apiVersion: postgresql.cnpg.io/v1
kind: ClusterImageCatalog
metadata:
  name: postgresql
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.1-system-trixie

Cluster リソースは、 ImageCatalog 次の例のようにまたはClusterImageCatalog を参照して、目的の画像を正確に指定する柔軟性を備えています。

apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
  name: cluster-example
spec:
  instances: 3
  imageCatalogRef:
    apiGroup: postgresql.cnpg.io
    # Change the following to `ClusterImageCatalog` if needed
    kind: ImageCatalog
    name: postgresql
    major: 16
  storage:
    size: 1Gi

これらのカタログを使用するクラスターは、継続的な監視を維持します。カタログ内の画像が変更されると、その特定のエントリを参照する 関連するすべてのクラスター の自動更新がトリガーされます。

CloudNativePGカタログ

CloudNativePGプロジェクトは、サポートされているすべてのイメージのClusterImageCatalog マニフェストを維持します。

これらのカタログは定期的に更新され、 artifacts repository で公開されます。

各カタログは、イメージタイプminimal などとDebianリリースtrixie などの特定の組み合わせに対応しています。サポートされているすべてのPostgreSQLメジャーバージョンの最新のコンテナイメージをリストしています。

これらのカタログをインストールすることにより、クラスター管理者は、PostgreSQLクラスターが、選択したDebianディストリビューションとイメージタイプの特定のPostgreSQLメジャーバージョン内の最新のパッチリリースに自動的に更新されることを確認できます。

たとえば、minimal PostgreSQLコンテナイメージの最新のカタログをDebian trixie にインストールするには、次のコマンドを実行します。

kubectl apply -f \
  https://raw.githubusercontent.com/cloudnative-pg/artifacts/refs/heads/main/image-catalogs/catalog-minimal-trixie.yaml

image-catalogs ディレクトリにあるkustomization ファイルを使用して、使用可能なすべてのカタログをインストールできます。

kubectl apply -k https://github.com/cloudnative-pg/artifacts//image-catalogs?ref=main

次に、次の方法で展開されたすべてのカタログを表示できます。

kubectl get clusterimagecatalogs.postgresql.cnpg.io

たとえば、次のようにtrixie 上のPostgreSQL 18の最新のminimal イメージを使用してクラスターを作成できます。

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