Kubernetes上でPostgreSQLを運用するためのOperatorが複数存在します。以前どれを選ぶか検討する機会があったので、主要な4つのオペレーターを比較してみました。

比較表

PGOCloudNativePGZalandoStackGres
開発元Crunchy DataEDB / CNCFZalandoOnGres
GitHub Stars4,4008,0005,1001,400
ライセンス (Operator)Apache 2.0Apache 2.0MITAGPL-3.0
ライセンス (コンテナイメージ)独自 (制限あり)Apache 2.0MITAGPL-3.0
Patroni使用不使用 (独自実装)使用 (Patroni開発元)使用
CNCF-Sandbox--

Star History

Star History Chart

各オペレーターの特徴

PGO (Crunchy Data)

Crunchy Data社が開発するオペレーターで、Patroniを使ったHAに対応しています。Operator自体のソースコードはApache 2.0ですが、Crunchy Data が配布するコンテナイメージは独自のライセンス(Crunchy Data Developer Program)で提供されています。50名以上の組織では本番利用に有償サブスクリプションが必要になるため、注意が必要です。自前でイメージをビルドすれば回避できますが、手間がかかります。

CloudNativePG

EDBが開発を始め、現在はCNCF Sandboxプロジェクトになっています。Patroniに依存せず、独自のInstance Managerが各Pod内で動作し、Kubernetes APIを直接利用してリーダー選出やフェイルオーバーを行います。ライセンスもOperator・コンテナイメージともにApache 2.0で、制限なく利用できます。Star数も最も多く、コミュニティの勢いがあります。

Zalando postgres-operator

Zalando社が開発するオペレーターで、Patroniの開発元でもあります。MITライセンスで制限なく利用可能です。Spilo(PostgreSQL + Patroni をパッケージングしたDockerイメージ)をベースにしています。ただし、CloudNativePGと比較すると開発のペースは落ち着いてきている印象です。

StackGres

OnGres社が開発するオペレーターで、Patroni、PgBouncer、WAL-Gなどを含むフルスタック構成です。AGPLライセンスのためSaaSとして提供する場合はソースコード開示義務があり、組織のポリシーによっては導入が難しい場合があります。商用版のStackGres Enterpriseも提供されています。

まとめ

ライセンスの自由度とコミュニティの活発さを重視するならCloudNativePGが現時点では最も有力な選択肢だと思います。Patroniに依存しない独自のHA実装もKubernetesネイティブなアプローチとして好印象です。