Slide 1

Slide 1 text

CloudNativePGがCNCF Sandboxプロジェクトに なったぞ! 〜CloudNativePGの仕組みの紹介〜 株式会社スリーシェイク nnaka2992

Slide 2

Slide 2 text

\du 2 株式会社スリーシェイク Sreake事業部 Alias - nnaka2992 - nkDATE - 中楯直希 業務内容 - DBRE兼SRE見習い - 全人類にデータベースを好きになってもらうために 活動しています - 自称データ雑用係 - DBAでもDBREでもデータエンジニアでも 興味あること - DBをKubernetesにのせること - SREっぽいこと - データベース関連ならなんでも nnaka2992 @nnaka2992 @nnaka2992.bsky.social

Slide 3

Slide 3 text

はじめに 3 PostgreSQLのKubernetesオペレーター CloudNativePGがCNCFのSandbox プロジェクトになりました🙌 https://twitter.com/EDBPostgres/status/1879635369680830702

Slide 4

Slide 4 text

アジェンダ 4 ● CloudNativePGの概要 ● CloudNativePGの仕組み ● まとめ

Slide 5

Slide 5 text

CloudNativePGの概要 5 ● CloudNativePGはKubernetesでPostgreSQLの構築・運 用を楽にするオペレーター ● 商用PostgreSQLサービスを提供するEDBが中心となって 開発 ● PostgreSQL本体をサポートすることを目的としていて、拡 張機能のサポートは限定的

Slide 6

Slide 6 text

CloudNativePGの概要 6 ● PostgreSQLオペレーターの中では現在もっとも勢いのあ るプロジェクト

Slide 7

Slide 7 text

CloudNativePGの仕組み 7 ● データベース運用は多岐に渡るため、全ての説明は時間 的に難しい ● ここではシンプルなデータベースクラスタ作成の裏側を紹 介

Slide 8

Slide 8 text

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 # クラスタ設定 ## インスタンス数 ## ストレージ設定 ### 利用するストレージ ### ストレージ容量

Slide 9

Slide 9 text

CloudNativePGの仕組み 9 Kubernetes Cluster ※ 一部省略あり kube-api-server cnpg-controller-manager

Slide 10

Slide 10 text

CloudNativePGの仕組み 10 Kubernetes Cluster ※ 一部省略あり kube-api-server cnpg-controller-manager kubectl apply -f \ example.yaml

Slide 11

Slide 11 text

` 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 クラスタ作成を指示

Slide 12

Slide 12 text

` 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クラスタエンドポイン トを作成

Slide 13

Slide 13 text

` 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リソースは隠し ます

Slide 14

Slide 14 text

` 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を作成

Slide 15

Slide 15 text

` 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ジョブを作成

Slide 16

Slide 16 text

` 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を作成

Slide 17

Slide 17 text

` 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を実行

Slide 18

Slide 18 text

` 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を作成

Slide 19

Slide 19 text

` 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を作成

Slide 20

Slide 20 text

` 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ジョブを作成

Slide 21

Slide 21 text

` 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 を作成

Slide 22

Slide 22 text

` 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に 必要な設定を行う

Slide 23

Slide 23 text

` 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

Slide 24

Slide 24 text

` 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と同様の 手順を実行

Slide 25

Slide 25 text

` 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

Slide 26

Slide 26 text

まとめ 26 ● CloudNativePGをつかうとKubernetesでのPostgreSQL 利用が楽になる! ● CloudNativePGではStatefulsetを使っていない! ● みんなさんもCloudNativePG使って欲しい!