CloudNativePG 1.29.0

日本語訳|CloudNativePG 1.29.0

※GoogleのAutoML Translationを使用して翻訳しております。

英語原文|CloudNativePG 1.29.0

概要

1. CloudNativePG (CNPG) とは何か?
CloudNativePG (CNPG) は、サポートされている任意のKubernetesクラスター上でPostgreSQLワークロードを管理するために設計された、オープンソースのKubernetesオペレーターです。元々はEDBによって開発され、Apache 2.0ライセンスでリリースされましたが、現在ではCloud Native Computing Foundation (CNCF) の公式Sandboxプロジェクトとなっています。

CNPGの中核となるのは、Clusterと呼ばれるカスタムKubernetesリソースの導入です。これは、読み書き操作を行う単一のプライマリインスタンスと、高可用性(HA)および読み取りのスケールアウトを目的としたオプションのレプリカインスタンスで構成されるPostgreSQLクラスターを表します。また、CNPGは「宣言的構成(Declarative configuration)」と「イミュータブル(不変)なアプリケーションコンテナ」の採用など、DevOpsの原則に完全に基づいて構築されています。

2. CNPGのメリットは何か?
CloudNativePGを使用することで、クラウドネイティブ環境でのデータベース管理において以下の重要なメリットが得られます。

  • クラウド中立性 (Cloud-Neutrality): プライベート、パブリック、ハイブリッド、マルチクラウドのあらゆる環境間で、データベースのシームレスなデプロイを可能にします。
  • 運用の自動化: 人間のデータベース管理者 (DBA) の作業をプログラムでシミュレートし、デプロイ、管理、スケーラビリティを自動化します。
  • 高可用性と事業継続性: 自動化された自己修復機能を提供し、人手を介することなくデータベースのダウンタイム (目標復旧時間 – RTO) とデータ損失 (目標復旧時点 – RPO) を最小限に抑えます。
  • 予測可能性と安全性: イミュータブルなアプリケーションコンテナ (PostgreSQLのバージョンがコンテナイメージに直接結びついている) を使用することで、デプロイメントがより安全で、再現性が高くなり、ロールバックも容易になります。
  • リソース使用の最適化: マイクロサービス型のデータベースアプローチを採用しており、アプリケーションとそのデータベースを同じKubernetesネームスペース内に配置(コロケーション)することで、ネットワークアクセスを高度に最適化できます。

3. これらのメリットを実現するためのCNPGの機能は何か?
CloudNativePGには、上記のメリットを実現するための包括的な機能が含まれています。

  • HAのための直接的なKubernetes統合: Kubernetes APIを直接使用してフェイルオーバーとスイッチオーバーを管理し、Patroniなどの外部ツールを不要にします。
  • 高度なレプリケーション制御: 物理ストリーミングレプリケーション、クォーラム(定足数)ベースおよび優先度ベースの同期レプリケーション、遅延レプリカ、クロスリージョンのディザスタリカバリ(DR)を実現するマルチクラスター分散トポロジー (レプリカクラスター) をサポートします。
  • 宣言的構成: Kubernetesマニフェストを介して、PostgreSQLの設定、ユーザー、ロール、データベース、テーブルスペース、および拡張機能を宣言的に直接管理できます。
  • 堅牢なバックアップとリカバリ: ネイティブのボリュームスナップショット、またはオブジェクトストレージ (Barman Cloud CNPG-Iプラグイン経由) を使用した継続的なWALアーカイブと物理ベースバックアップをサポートします。また、ポイントインタイムリカバリ (PITR) や、既存のクラスターやバックアップからのクローン作成もサポートします。
  • コネクションプーリング: データベース接続を効率的に管理するための Pooler カスタムリソースによる PgBouncer とのネイティブ統合を提供します。
  • 自動ルーティング: 読み書き (プライマリ) または読み取り専用 (レプリカ) のエンドポイントへトラフィックを適切にルーティングする専用のKubernetes Serviceを自動生成します。
  • シームレスなアップグレード: PostgreSQLのマイナーバージョンおよびオペレーターの自動ローリングアップデート、ならびに pg_upgrade を使用したオフラインでのインプレース・メジャーバージョンアップグレードをサポートします。
  • デフォルトでのセキュリティ (Security by Default): クライアント/サーバー間接続へのTLS強制、cert-manager との連携、動的なネットワークアクセス制御 (pg_hba.conf)、および読み取り専用ルートファイルシステムを用いた非特権モードでのコンテナ実行を行います。
  • 深い可観測性 (Deep Observability): カスタムクエリに対応した組み込みのPrometheusエクスポーター、JSON形式の標準出力ロギング、および PGAudit のネイティブサポートを提供します。

4. バージョン1.29.0の新機能は?
バージョン1.29.0では、いくつかの重要な新機能、機能強化、およびセキュリティの改善が導入されています。

主な新機能:

  • イメージカタログでのPostgreSQL拡張機能サポート: ImageCatalog機能が拡張され、PostgreSQLの拡張機能 (Extensions) がサポートされるようになりました。これにより、カタログ内で拡張機能固有のイメージを直接定義・管理できるようになり、カスタムビルドのデプロイが簡素化されます。
  • Podセレクターによる動的ネットワークアクセス制御: pg_hba.conf ルールを動的に管理するための podSelectorRefs が導入されました。ラベルセレクターを使用し、オペレーターがクライアントPodの一時的なIPアドレスを自動的に解決して認証ルールを更新します。これにより、手動でのIP管理や静的なCIDR範囲の設定が不要になります。
  • 共有 ServiceAccount のサポート: ClusterとPoolerの両方に、オプションの serviceAccountName フィールドが追加されました。複数のリソースで単一のServiceAccountを共有できるため、複数のクラスター全体でIAM設定 (AWS IRSAやGCP Workload Identityなど) を一括適用する際に非常に役立ちます。

機能強化と変更:

  • デフォルトのPostgresバージョン: デフォルトのPostgreSQLバージョンが 18.3 に更新されました。
  • Barman Cloudプラグインへの移行: ネイティブ (インツリー) のBarman Cloudサポートの非推奨通知が更新され、バージョン1.30.0で完全に削除されることになりました。ユーザーはCNPG-Iベースの Barman Cloud Plugin に移行する必要があります。
  • Poolerのセキュリティ: Pooler CRDが、厳格なセキュリティ要件を満たすために、TLS暗号スイートおよび最小/最大TLSバージョンの詳細な構成をサポートするようになりました。
  • アップグレードの信頼性向上: メジャーアップグレードジョブに BackoffLimit=0 を設定し、pg_upgrade 失敗時の不要な再試行を防ぐとともに、コンテナイメージを元に戻した際に元のバージョンで正常に再起動できるよう改善されました。
  • Kubernetesイベントの出力: オペレーターの意思決定プロセスを可視化するため、調整ループ(Reconciliation loop)の主要フェーズでネイティブのKubernetesイベントを出力するようになりました。
  • バックアップ監視の改善: バックアップのステータスに「Terminal Error」および「Pending」フェーズを導入し、バックアップ状態のフィードバックを明確化してリソースの枯渇を防ぎます。

セキュリティとサプライチェーン:

  • SLSAプロベナンスとSBOM: リリースバイナリおよびコンテナイメージに、SLSA (Supply-chain Levels for Software Artifacts) プロベナンス情報を追加し、ソフトウェア部品表 (SBOM) の生成が有効になりました。
  • OpenSSFの統合: 業界標準のセキュリティレポートに準拠するため、OpenSSFベースラインスキャナー (SECURITY-INSIGHTS.yaml) を統合しました。
  • パスワード漏洩の防止: 特定の処理フェーズ中に、PostgreSQLがログにロールのパスワードを漏洩する可能性があったセキュリティリスクを修正しました。