PostgreSQL Operatorの比較

Kubernetes上でPostgreSQLを運用するためのOperatorが複数存在します。以前どれを選ぶか検討する機会があったので、主要な4つのオペレーターを比較してみました。 比較表 PGO CloudNativePG Zalando StackGres 開発元 Crunchy Data EDB / CNCF Zalando OnGres GitHub Stars 4,400 8,000 5,100 1,400 ライセンス (Operator) Apache 2.0 Apache 2.0 MIT AGPL-3.0 ライセンス (コンテナイメージ) 独自 (制限あり) Apache 2.0 MIT AGPL-3.0 Patroni 使用 不使用 (独自実装) 使用 (Patroni開発元) 使用 CNCF - Sandbox - - Star History 各オペレーターの特徴 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数も最も多く、コミュニティの勢いがあります。 ...

February 20, 2026 · Ken Kato

Argo CDをインストールしてGitOpsを始める

Argo CDはKubernetes向けのGitOpsツールで、Gitリポジトリに置いたマニフェストをクラスタに自動で反映してくれます。 今回はHelmを使ってArgo CDをインストールし、リポジトリの接続からApplicationの作成までをまとめました。 前提 Kubernetesクラスタが構築済みであること Helmがインストール済みであること Argo CDのインストール Helm Chartリポジトリを追加します。 helm repo add argo https://argoproj.github.io/argo-helm helm repo update argocd namespaceにインストールします。 helm install argocd argo/argo-cd \ --namespace argocd \ --create-namespace \ --version 7.8.13 Podが正常に起動していることを確認します。 kubectl get pods -n argocd Argo CD CLIのインストール brew install argocd Argo CD UIにアクセスする port-forwardでArgo CDのUIにアクセスできます。 kubectl port-forward svc/argocd-server -n argocd 8080:443 ブラウザで http://localhost:8080 にアクセスします。 初期パスワードは以下のコマンドで取得できます。ユーザー名はadminです。 argocd admin initial-password -n argocd Gitリポジトリを接続する Argo CDがGitリポジトリからマニフェストを取得するために、リポジトリの接続設定が必要です。 SSH鍵の作成 Argo CD専用のSSH鍵を作成します。 ...

February 20, 2026 · Ken Kato

Kubernetesをv1.30からv1.31にアップグレードした

自宅で運用しているKubernetesクラスターをv1.30からv1.31にアップグレードしました。 kubeadmを使った標準的なアップグレード手順ですが、忘れがちなので備忘録として残しておきます。 公式ドキュメント: https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/ コントロールプレーンノードのアップグレード コントロールプレーンノードから順番にアップグレードしていきます。 パッケージリポジトリの変更 まず、yumリポジトリの設定ファイルをv1.31用に変更します。 変更前(v1.30): [kkato@nuc01 ~]$ cat /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://pkgs.k8s.io/core:/stable:/v1.30/rpm/ enabled=1 gpgcheck=1 gpgkey=https://pkgs.k8s.io/core:/stable:/v1.30/rpm/repodata/repomd.xml.key exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni 変更後(v1.31): $ cat /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://pkgs.k8s.io/core:/stable:/v1.31/rpm/ enabled=1 gpgcheck=1 gpgkey=https://pkgs.k8s.io/core:/stable:/v1.31/rpm/repodata/repomd.xml.key exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni 参考: https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/change-package-repository/ kubeadmのアップグレード まずkubeadmパッケージをアップグレードします。 sudo yum upgrade kubeadm --setopt=disable_excludes=kubernetes アップグレード可能なバージョンを確認します。 sudo kubeadm upgrade plan Components that must be upgraded manually after you have upgraded the control plane with 'kubeadm upgrade apply': COMPONENT NODE CURRENT TARGET kubelet nuc01 v1.30.1 v1.31.14 kubelet nuc02 v1.30.1 v1.31.14 kubelet nuc03 v1.30.1 v1.31.14 kubelet nuc04 v1.30.1 v1.31.14 Upgrade to the latest stable version: COMPONENT NODE CURRENT TARGET kube-apiserver nuc01 v1.30.4 v1.31.14 kube-controller-manager nuc01 v1.30.4 v1.31.14 kube-scheduler nuc01 v1.30.4 v1.31.14 kube-proxy 1.30.4 v1.31.14 CoreDNS v1.11.1 v1.11.3 etcd nuc01 3.5.12-0 3.5.24-0 You can now apply the upgrade by executing the following command: kubeadm upgrade apply v1.31.14 アップグレードを実行します。 ...

January 24, 2026 · Ken Kato

Helmコマンド まとめ

HelmはKubernetes向けのパッケージマネージャーで、複雑なアプリケーションのデプロイを簡単にしてくれるツールです。 Helmコマンドをよく忘れてしまうので、基本的なコマンドを備忘録としてまとめました。 インストール方法 macOSの場合は以下のコマンドでインストールできます。 brew install helm リポジトリ管理 リポジトリの追加 # リポジトリを追加する helm repo add stable https://charts.helm.sh/stable helm repo add bitnami https://charts.bitnami.com/bitnami リポジトリの一覧表示 # 追加されているリポジトリを確認する helm repo list リポジトリの更新 # リポジトリのインデックスを更新する(新しいチャートバージョンを取得) helm repo update チャートの検索・確認 チャートの検索 # リポジトリからチャートを検索する helm search repo nginx helm search repo mysql チャート情報の表示 # チャートの詳細情報を表示する helm show chart bitnami/nginx helm show values bitnami/nginx リリース管理 インストール # チャートをインストールする helm install my-nginx bitnami/nginx # 名前空間を指定してインストール helm install my-nginx bitnami/nginx -n production --create-namespace # カスタム値でインストール helm install my-nginx bitnami/nginx --set service.type=LoadBalancer リリース一覧の表示 # インストール済みのリリースを表示する helm list # 全ての名前空間のリリースを表示する helm list -A # 特定の名前空間のリリースを表示する helm list -n production リリース情報の確認 # リリースの詳細情報を表示する helm get all my-nginx # リリースの設定値を表示する helm get values my-nginx # リリースの履歴を表示する helm history my-nginx アップグレード # リリースをアップグレードする helm upgrade my-nginx bitnami/nginx # 新しい値でアップグレード helm upgrade my-nginx bitnami/nginx --set image.tag=1.21.0 ロールバック # 前のバージョンにロールバックする helm rollback my-nginx # 特定のリビジョンにロールバックする helm rollback my-nginx 2 アンインストール # リリースを削除する helm uninstall my-nginx # 名前空間を指定して削除 helm uninstall my-nginx -n production 便利なオプション ドライラン 実際にはインストールせずに、何が実行されるかを確認できます。 ...

December 27, 2025 · Ken Kato

kubectlで全てのリソースをgetする方法

kubectl get allだとCustom Resourceが表示されないので、全てのリソースが表示できずに困りました。kubectl api-resourcesを使えば、Custom Resourceも含めてサポートされているAPIリソースを全て把握できるので、それを応用して全てのリソースを表示できるようになりました。 備忘録として雑に書いておきます。 全てのリソースを表示する 以下のコマンドで、特定のnamespaceに存在する、全てのリソース(Custom Resourceも含めて)を表示することができます。 kubectl get $(kubectl api-resources --verbs=list --namespaced -o name | grep -v "events" | tr '\n' ',' | sed 's/,$//') -n openebs 各コマンドの説明 kubectl api-resources --verbs=list --namespaced -o name kubectl api-resources: クラスター内の全てのKubernetesリソース種別を表示 --verbs=list: list操作が可能なものに絞る --namespaced: 名前空間に属するリソースに絞る (NamespaceやNodeなどのcluster-scopedリソースは除外) -o name: kubectlで直接使えるリソース名だけを出力 tr '\n' ',' 出力されたリソース名を、改行区切りからカンマ区切りに変換 sed 's/,$//' 末尾に付いてしまった余分なカンマを削除

August 11, 2025 · Ken Kato