Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CloudNativePGがCNCF Sandboxプロジェクトになったぞ! 〜CloudNa...

nnaka2992
January 24, 2025

CloudNativePGがCNCF Sandboxプロジェクトになったぞ! 〜CloudNativePGの仕組みの紹介〜

2025年1月24日に開催された、3-shake SRE Tech Talk #11 オンサイト 新春OSSスペシャルの登壇資料です。
https://3-shake.connpass.com/event/339212/

PostgreSQL関連のツールとして初めてCNCFプロジェクトに認定されたCloudNativePGがどのように動作しているかを掘り下げます。

nnaka2992

January 24, 2025
Tweet

More Decks by nnaka2992

Other Decks in Programming

Transcript

  1. \du 2 株式会社スリーシェイク Sreake事業部 Alias - nnaka2992 - nkDATE -

    中楯直希 業務内容 - DBRE兼SRE見習い - 全人類にデータベースを好きになってもらうために 活動しています - 自称データ雑用係 - DBAでもDBREでもデータエンジニアでも 興味あること - DBをKubernetesにのせること - SREっぽいこと - データベース関連ならなんでも nnaka2992 @nnaka2992 @nnaka2992.bsky.social
  2. CloudNativePGの仕組み 8 • 前提となるyamlファイル # example.yaml apiVersion: postgresql.cnpg.io/v1 kind: Cluster

    metadata: name: cluster-sample spec: instances: 3 storage: storageClass: manual size: 1Gi # CNPGのAPIを使う # 作成するリソース=DBクラスタ # リソースのメタデータ ## クラスタ名・関連リソースPrefix # クラスタ設定 ## インスタンス数 ## ストレージ設定 ### 利用するストレージ ### ストレージ容量
  3. ` cluster-example-3 cluster-example-1 cluster-example-2 CloudNativePGの仕組み 11 Kubernetes Cluster ※ 一部省略あり

    kube-api-server cnpg-controller-manager kubectl apply -f \ example.yaml Primary Secondary manage cluster-example クラスタ作成を指示
  4. ` cluster-example-3 cluster-example-1 cluster-example-2 CloudNativePGの仕組み 12 Kubernetes Cluster ※ 一部省略あり

    kube-api-server cnpg-controller-manager kubectl apply -f \ example.yaml Primary Secondary manage cluster-example read write read any read only DBクラスタエンドポイン トを作成
  5. ` cluster-example-3 cluster-example-1 cluster-example-2 CloudNativePGの仕組み 13 Kubernetes Cluster ※ 一部省略あり

    kube-api-server cnpg-controller-manager kubectl apply -f \ example.yaml Primary Secondary manage cluster-example read write read any read only DBクラスタエンドポイン トを作成 図をわかりやすくするた めにSVCリソースは隠し ます
  6. ` cluster-example-3 cluster-example-1 cluster-example-2 CloudNativePGの仕組み 14 Kubernetes Cluster ※ 一部省略あり

    kube-api-server cnpg-controller-manager kubectl apply -f \ example.yaml Primary Secondary manage cluster-example PVCを作成
  7. ` cluster-example-3 cluster-example-1 cluster-example-2 CloudNativePGの仕組み 15 Kubernetes Cluster ※ 一部省略あり

    kube-api-server cnpg-controller-manager kubectl apply -f \ example.yaml Primary Secondary manage cluster-example initdbジョブを作成
  8. ` cluster-example-3 cluster-example-1 cluster-example-2 CloudNativePGの仕組み 16 Kubernetes Cluster ※ 一部省略あり

    kube-api-server cnpg-controller-manager kubectl apply -f \ example.yaml Primary Secondary manage cluster-example initdbジョブ実行する Podを作成
  9. ` cluster-example-3 cluster-example-1 cluster-example-2 CloudNativePGの仕組み 17 Kubernetes Cluster ※ 一部省略あり

    kube-api-server cnpg-controller-manager kubectl apply -f \ example.yaml Primary Secondary manage cluster-example PostgreSQLのinitdbを実行
  10. ` cluster-example-3 cluster-example-1 CloudNativePGの仕組み cluster-example-2 18 Kubernetes Cluster ※ 一部省略あり

    kube-api-server cnpg-controller-manager kubectl apply -f \ example.yaml Primary Secondary manage cluster-example PostgreSQLメインプロセスを実 行するPodを作成
  11. ` cluster-example-3 cluster-example-1 CloudNativePGの仕組み cluster-example-2 19 Kubernetes Cluster ※ 一部省略あり

    kube-api-server cnpg-controller-manager kubectl apply -f \ example.yaml Primary Secondary manage cluster-example PVCを作成
  12. ` cluster-example-3 cluster-example-1 CloudNativePGの仕組み cluster-example-2 20 Kubernetes Cluster ※ 一部省略あり

    kube-api-server cnpg-controller-manager kubectl apply -f \ example.yaml Primary Secondary manage cluster-example joinジョブを作成
  13. ` cluster-example-3 cluster-example-1 CloudNativePGの仕組み cluster-example-2 21 Kubernetes Cluster ※ 一部省略あり

    kube-api-server cnpg-controller-manager kubectl apply -f \ example.yaml Primary Secondary manage cluster-example joinジョブ実行するPod を作成
  14. ` cluster-example-3 cluster-example-1 CloudNativePGの仕組み cluster-example-2 22 Kubernetes Cluster ※ 一部省略あり

    kube-api-server cnpg-controller-manager kubectl apply -f \ example.yaml Primary Secondary manage cluster-example pgBackRestを実行し データをコピーする そのほかSecondaryに 必要な設定を行う
  15. ` cluster-example-3 cluster-example-1 CloudNativePGの仕組み cluster-example-2 23 Kubernetes Cluster ※ 一部省略あり

    kube-api-server cnpg-controller-manager kubectl apply -f \ example.yaml Primary Secondary manage cluster-example PostgreSQLメインプロセスを実 行するPodを作成 Replication
  16. ` cluster-example-3 cluster-example-1 CloudNativePGの仕組み 24 Kubernetes Cluster ※ 一部省略あり kube-api-server

    cnpg-controller-manager kubectl apply -f \ example.yaml Primary Secondary manage cluster-example cluster-example-2 cluster-example-2と同様の 手順を実行
  17. ` cluster-example-3 cluster-example-1 cluster-example-2 CloudNativePGの仕組み 25 Kubernetes Cluster ※ 一部省略あり

    kube-api-server cnpg-controller-manager kubectl apply -f \ example.yaml read write read any read only Primary Secondary manage cluster-example