Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Cloud Native PG 使ってみて気づいたことと最新機能の紹介 - 第52回Post...
Search
Yuki Seino
March 27, 2025
Technology
1.4k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Cloud Native PG 使ってみて気づいたことと最新機能の紹介 - 第52回PostgreSQLアンカンファレンス
Yuki Seino
March 27, 2025
More Decks by Yuki Seino
See All by Yuki Seino
PostgreSQLにおける分散トレーシングの現在 - 第50回PostgreSQLアンカンファレンス
seinoyu
0
680
Other Decks in Technology
See All in Technology
2026-09-10 【Snowflake World Tour Tokyo 2026】dbt Core と Snowflake で実現する多層的なデータガバナンス / Multi-Layered Data Governance Powered by dbt Core and Snowflake
civitaspo
0
380
データ_AIの事業の勝敗をわけるもの
nek0128
0
230
synctest時代のhttptest Go 1.27で変わるHTTPサーバテストの裏側 / go conference2026 synctest and httptest
budougumi0617
1
2.8k
山手線を徒歩で一周してわかった、 位置情報アプリは「足」が最強のデバッガー
hinakko
0
150
The Agent Builder Loop from Daily Work to OSS
minorun365
PRO
3
170
アプリログインとWeb認証基盤をつなぐ ASWebAuthenticationSession 作法
shimastripe
1
310
2026/09/10 Spring Bootから Jakarta EE/MicroProfileへの移行
megascus
0
360
新機種発売前に見直そう!端末移行で再ログインが要るアプリ・要らないアプリは何が違うのか 〜シームレスに再開できる設計と実装〜
zozotech
PRO
0
170
2026-09-09 【sigma_ucj#1】Sigma を IaC 管理したい! / IaC for Sigma
civitaspo
0
130
家のリアーキテクト・リファクタリング
suguruooki
0
140
MCPをつなげて作る組織横断のAIエージェント基盤(の開発工程)
tsubakimoto_s
0
110
Snowflakeで実現する全社横断の顧客の声(VOC)分析・活用基盤@Snowflake World Tour Tokyo 2026
yuto16
0
210
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Fireside Chat
paigeccino
43
4k
Speed Design
sergeychernyshev
33
2.1k
The Invisible Side of Design
smashingmag
301
52k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
480
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
700
GraphQLとの向き合い方2022年版
quramy
50
15k
What's in a price? How to price your products and services
michaelherold
247
13k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
460
ラッコキーワード サービス紹介資料
rakko
1
4.9M
Ruling the World: When Life Gets Gamed
codingconduct
0
330
Transcript
Cloud Native PG 使ってみて気づいたことと 最新機能の紹介 第52回PostgreSQLアンカンファレンス 2025/03/27 @YukiSeino 1
はじめに • Cloud NativePG 使ってますか? ◦ 2021年11月にOSS化されてから、3年以上立ちました。 ◦ 運用ナレッジはググってもなかなかでてこない。まだまだこれから? •
Cloud Native PG を使ってみて気づいた点、遭遇した課題を紹介します。 ◦ 特にオンプレPostgreSQLからリフトする際に課題になりそうな観点が中心 • 2025/3/26時点の情報になります。 ◦ ~v1.25で確認 ◦ 最新版のv1.26は3月末リリース予定 本資料は、SpeakerDeck にアップロードしています。 https://speakerdeck.com/seinoyu 2
アジェンダ • はじめに • Cloud Native PG について • Cloud
Native PG を使う上で(個人的に)留意すべき点 a. アーカイブWALやベースバックアップの保存先制約 b. 拡張機能の利用方法 c. 可用性に係る仕様変更( WALディスクフル時の挙動) d. ロギング関連のパラメータ e. リリースサイクル (EOLサイクル) f. PostgreSQLのメジャーバージョンアップはサポート外 • 最近の変更点 • まとめ 3
Cloud Native PG について 4
Cloud Native PG • Kubernetes(コンテナ環境)でPostgreSQLを構築・運用にするための OSSオペレーターの一つ ◦ 他には、CrunchyData社やZalando社がリードするOSSオペレーターなどがある • Cloud
Naitive Computing Foundation (CNCF) の Sandbox プロジェクトに登録 • 当初EDB社が開発していたが、2021年11月にOSS化されコミュニティとしても独立した ◦ 現在のコントリビュータ比は、 8:2(EDB:EDB以外)程度とのこと 5 Cloud Native PG のアーキテクチャ Cloud Native PGの役割 e.g. ・クラスタの作成(レプリケーション構 成) ・サービスの作成(コネクションの ルーティング) ・GUCパラメータの最適化 ・定期的なバックアップ ・死活監視 ・ローリングアップデート
Cloud Native PG が注目されている理由 • OSSコミュニティの中立性、健全性 ◦ ベンダ中立なコミュニティを形成するためにコミュニティを EDBから完全分離 ◦
Cloud Native Computing Foundation (CNCF) に登録 されていることで、コミュニティ主導のプロジェクトとして中 立性が保証されている • サードパーティ製品に依存しない、 K8sネイティブなクラスタリングアーキテクチャ ◦ 他のオペレータでは、 Patroni等のサードパーティ製品を使っている場合もあるが、 CNPGのインスタンスマネー ジャは Kubelet と連携 して、クラスタリングを構成する。(監視 (probe)、シャットダウン、フェイルオーバー) 6 Patroniベースのクラスタリング Worker-Node Control-Plane Worker-Node Worker-Node DB Pod postgres インスタンスマネージャ DB Pod postgres インスタンスマネージャ DB Pod postgres インスタンスマネージャ api-server kubelet kubelet kubelet Cloud Native PG のクラスタリング
Cloud Native PG を使う上で (個人的に)留意すべき点 7
Barman アーカイブ WALやベースバックアップの保存先制約 • サードパーティ製のバックアップツール(Barman)の仕様上、バックアップ の格納先として、選択可能な方法は下記の通り。 ◦ WALアーカイブ ▪ オブジェクトストア
◦ ベースバックアップ ▪ オブジェクトストア ▪ Kubernetes ボリュームスナップショット (CNPG推奨) • CSIドライバが本機能に対応している必要がある • アーカイブWALを取得する場合は、オブジェクトストアの用意が必須 と なる • 開発中などアーカイブWALを取得しない場合は、定義済みアノテーション である cnpg.io/skipWalArchiving を enable とすることでアーカイブ WALの無効化が可能。 ◦ GUCパラメータ (archive_mode, archive_command)は Operator に強制さ れて変更できない。 ◦ https://cloudnative-pg.io/documentation/1.25/labels_annotations/ ◦ https://cloudnative-pg.io/documentation/1.25/postgresql_conf/ • v 1.25 ではCNPG-I(インターフェース拡張)が実験的サポート。 ◦ ユーザがプラグインを開発できるようになり、バックアップ/リカバリのワー クフローを変更可能に。(私自身は未検証) 8 オブジェクト ストア (e.g. S3, MinIO) DB Cluster アーカイブ WAL ベースバックアップ K8sボリューム スナップショット
拡張機能の利用方法 • Managed extensions に属する拡張機能(auto_explain, pg_stat_statemenets, pgaudit, pg_failover_slots)は、特に事前準備な く使用可能。 ◦
拡張機能に関連する GUCパラメータを設定することで、オペレータが検 知し、自動的に拡張機能をインストール する。(shared_preload_libraries 等の設定は自動で行ってくれる) ◦ 例: ◦ https://cloudnative-pg.io/documentation/1.25/postgresql_conf/ • それ以外の拡張機能はカスタムイメージを作成する必要 がある ◦ オフィシャルドキュメントには記載なし ◦ CloudNativePGのブログ :https://cloudnative-pg.io/blog/creating-container-images/ i. 拡張機能をインストールする Dockerfileを作成し、カスタムイメージ を作成する ii. PostgreSQL クラスターのマニフェストの imageName にカスタムイ メージを設定する 9 Dockerfile DBClusterマニフェスト イメージビルド
可用性に係る仕様変更 (WALディスクフル時の挙動 ) • v 1.23 までは、プライマリのWALディスクがフルとなった場合、レプリカ にフェイルオーバーを実行 していた •
v 1.24 から、プライマリのWALディスクがフルとなった場合、プライマリ がシャットダウンされるだけ となり、フェイルオーバーは実行されない ◦ 変更理由 ▪ この事象が発生した場合レプリカに FOしてもレプリカ側でも同様に ディスクフルとなり、問題が解決しないことが想定されるため ◦ ワークアラウンド ▪ WALディスクを拡張する ◦ https://github.com/cloudnative-pg/cloudnative-pg/pull/4404 • (黎明期?)可用性関連の仕様に対して大幅な変更が入る可能性 に注 意。 10 プライマリ レプリカ WAL ディスク ①ディスクフル ②レプリカにFO WAL ディスク プライマリ レプリカ WAL ディスク ①ディスクフル WAL ディスク × ③ディスク拡張 ~v 1.23 v 1.24~ ②シャットダウン
ログ収集 Worker Node DB Pod ロギング関連のパラメータ • ロギング関連のパラメータは Fix Parameter
となっており、設定変 更できない • PostgreSQL ログ及びインスタンスマネージャの ログはJSON 形式 でコンテナログに出力 • この設計は、Kubernetes ロギング アーキテクチャと親和性が高 い。 • 従来のように、PostgreSQLサーバログをcsvlogやsyslogで運用し ていた場合は、ログ運用を見直す必要 がある。 11 postgres コンテナ コンテナ ログ インスタンスマネー ジャコンテナ kubectl logs ロギングのアーキテクチャ | Kubernetes コンテナ ログ fluentd promtail cnpg plugin stdout, stderr stdout, stderr
リリースサイクル( EOLサイクル) • CloudNaitivePG の EOLサイクルは一つのマイナーリリースごとに約 6カ月となる ◦ https://cloudnative-pg.io/documentation/1.25/supported_releases/ •
機能追従やセキュリティアップデートを受けるために高頻度でアップグレードが必要 • Kubernetesのマイナーリリースのサポートは 1年程度となり、K8sより短い点にも留意が必要 ◦ https://kubernetes.io/ja/releases/ 12 2024. 8 v 1.24.x 2025.3 2024.12 v 1.25.x v 1.26.x 2025.6 2025.8 Release EOL EOL EOL Release Release
PostgreSQLのメジャーバージョンアップはサポート外 • PostgreSQLのメジャーバージョンアップは CloudNativePGの機能ではサポートされていないため、利用 者側で対応が必要。 ◦ Cloud Native PG のアップグレード
(パッチバージョン、マイナーバージョン )はサポート内 ◦ PostgreSQLのマイナーバージョンアップはサポート内 • Kubernetesから論理レプリケーションを管理するための CRDがv 1.25で追加された。 ◦ メジャーバージョンアップを意識したものと思われる 13
最近の変更点 14
最近の変更点 v 1.26 (https://github.com/cloudnative-pg/cloudnative-pg/blob/main/docs/src/release_notes/v1.26.md) • クラスタ休止手順の変更 ◦ 命令的休止手順が廃止される ▪ kubectl
cnpg hibernate on CLUSTER ◦ 今後は宣言的休止手順のみサポート ▪ kubectl annotate cluster <cluster-name> --overwrite cnpg.io/hibernation=on • 拡張機能とスキーマの宣言的管理 ◦ マニフェストから拡張機能とスキーマの作成・変更・削除が可能に v 1.25 • データベースの宣言的管理 ◦ Database CRD が追加され、マニフェストからデータベースが管理可能に • 論理レプリケーションの宣言的管理 ◦ Publication, Subscription CRD が追加され、マニフェストから論理レプリケーションが管理可能に 15
まとめ 16
まとめ • Cloud Native PG を使ってみた上で気になった点を紹介しました。 • オンプレから Cloud Native
PG にリフトする場合は、今回紹介した事案をはじめ勝手 が違うことが多い。制約事項をしっかり検査する必要がありそう。 ◦ https://cloudnative-pg.io/documentation/1.25/troubleshooting/ • リリースサイクル/EOLサイクルが短い中で、大きな仕様変更が入る可能性には留意 (覚悟)が必要。 • 積極的に参入してナレッジを増やそう! 17