Image Catalog
ImageCatalog およびClusterImageCatalog は、
PostgreSQLイメージのライフサイクルをCluster
定義から分離できるカスタムリソース定義CRDです。カタログを使用することにより、イメージの更新を一元管理できます。カタログエントリが更新されると、関連するすべてのクラスターが自動的に
roll out the new image 。
カスタムカタログをビルドすることはできますが、CloudNativePGはClusterImageCatalog
リソースとして CloudNativePGカタログ を提供し、すべての公式コミュニティPostgreSQLコンテナイメージをカバーします。
カタログのスコーピング
2つのリソースの主な違いは、そのスコープです。
Resource |
Scope |
Best use case |
|---|---|---|
ImageCatalog |
Namespaced |
Application-specific versions or team-level restrictions. |
ClusterImageCatalog |
Cluster-wide |
Global standards across all namespaces for an organization. |
カタログ構造
両方のリソースは、共通のスキーマを共有します。
メジャーバージョン
majorPostgreSQLバージョンによってキー付けられたイメージのリスト。一意性
majorフィールドは、単一のカタログ内で一意である必要があります。拡張機能 認定された拡張機能コンテナイメージのサポート
extension_control_path経由でPostgreSQL 18+で利用可能。
警告
オペレーターは画像検出を実行せずにユーザー定義の`major` バージョンを信頼しますが、公式CloudNativePGカタログはコミュニティによって事前検証され、すべての拡張機能とオペランドのイメージエントリが宣言されたメジャーバージョンと正しく一致することを確認します。カスタムカタログを作成する場合は、宣言されたメジャーバージョンが実際のPostgreSQLイメージと一致することを確認して、互換性を維持する必要があります。
構成例
カタログの定義
単一のカタログ内で複数のメジャーバージョンを定義できます。
次の例では、名前空間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.3-system-trixie
次の例は、クラスター全体のClusterImageCatalog を定義します。
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
を使用して画像を選択します。
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
イメージボリューム拡張を使用したイメージカタログ
イメージボリューム拡張を使用したイメージカタログ では、カタログエントリー内で直接拡張機能のコンテナをバンドルできます。
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 セクションは ExtensionConfiguration の後です
APIスキーマと構造。イメージカタログを参照するクラスターは、関連する拡張機能を名前でロードできます。
注釈
documentation of image volume extensions を参照してください。
内部イメージ構造、構成オプション、およびクラスター内のカタログ拡張機能を選択またはオーバーライドする方法の詳細については、
CloudNativePGカタログ
CloudNativePGプロジェクトは、サポートされているすべてのイメージのClusterImageCatalog
マニフェストを維持します。
これらのカタログは定期的に更新され、 artifacts repository で公開されます。
各カタログは、イメージタイプminimal
などとDebianリリースtrixie
などの特定の組み合わせに対応しています。サポートされているすべてのPostgreSQLメジャーバージョンの最新のコンテナイメージをリストしています。
重要
最大限のセキュリティと不変性を保証するために、公式CloudNativePGカタログ内のすべての画像は、単なるタグではなく**SHA256ダイジェスト**によって識別されます。
バージョンの互換性
標準カタログはオペレーターの古いバージョンで動作しますが、 ``extensions`` セクションを含むカタログはCloudNativePG 1.29以降 とのみ互換性があります。古いオペレーターの拡張定義を含むカタログを使用すると、これらの定義が拒否されます。
インストールと使用
これらのカタログをインストールすることにより、クラスター管理者は、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
イメージを常に追跡するクラスターを作成するには、次のようにCluster
を定義します。
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