Slide 1

Slide 1 text

CloudNativePGを布教したい 敵 「なぜCloud SQLがあるのにKubernetesでPostgreSQLをホストするのか」 株式会社スリーシェイク 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の特徴 ● デモ(紙芝居) ● なぜCloud SQLではなくCloudNativePGを使うのか ● まとめ

Slide 5

Slide 5 text

CloudNativePGの概要 5 ● CloudNativePGはKubernetesでPostgreSQLの構築・運 用を楽にするオペレーター ○ Cloud SQLが持つ機能はだいたいサポートしている ○ GCSにバックアップを保存したりできる ● 商用PostgreSQLサービスを提供するEDBが中心となって 開発 ● PostgreSQL本体をサポートすることを目的としていて、拡 張機能のサポートは限定的※ ※イメージを自分で作れば十分対応可能

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

デモ(紙芝居) 7 ● データベース運用は多岐に渡るため、全ての説明は時間 的に難しい ● ここではシンプルなデータベースクラスタ作成を紹介

Slide 8

Slide 8 text

デモ(紙芝居) 8 ● 前提となるyamlファイル # example.yaml apiVersion: postgresql.cnpg.io/v1 kind: Cluster metadata: name: cluster-sample spec: instances: 3 storage: storageClass: standard-rwo size: 1Gi # CNPGのAPIを使う # 作成するリソース=DBクラスタ # リソースのメタデータ ## クラスタ名・関連リソースPrefix # クラスタ設定 ## インスタンス数 ## ストレージ設定 ### 利用するストレージ ### ストレージ容量

Slide 9

Slide 9 text

デモ(紙芝居) 9 1. GKEクラスタを作成 > gcloud container clusters create --zone asia-northeast1-a cloud-native-pg-demo Creating cluster cloud-native-pg-demo in asia-northeast1-a… 後略

Slide 10

Slide 10 text

デモ(紙芝居) 10 2. GKEクラスタにアクセス > gcloud container clusters get-credentials --zone asia-northeast1-a \ cloud-native-pg-demo Fetching cluster endpoint and auth data. kubeconfig entry generated for cloud-native-pg-demo. > kubectl get nodes NAME STATUS ROLES AGE VERSION gke-cloud-native-pg-demo-default-pool-c92911f6-d487 Ready 25m v1.31.5-gke.1023000 gke-cloud-native-pg-demo-default-pool-c92911f6-gt41 Ready 25m v1.31.5-gke.1023000 gke-cloud-native-pg-demo-default-pool-c92911f6-nwvs Ready 25m v1.31.5-gke.1023000

Slide 11

Slide 11 text

デモ(紙芝居) 11 3. CloudNativePG オペレータをインストール > kubectl apply --server-side -f \ https://raw.githubusercontent.com/cloudnative-pg/cloudnative-pg/release-1.25/release s/cnpg-1.25.0.yaml namespace/cnpg-system serverside-applied 中略 validatingwebhookconfiguration.admissionregistration.k8s.io/cnpg-validating-webhook-configuration serverside-applied

Slide 12

Slide 12 text

デモ(紙芝居) 12 4. PostgreSQL クラスタを作成 > kubectl apply -f example.yaml cluster.postgresql.cnpg.io/cluster-sample created > kubectl get all -l cnpg.io/cluster=cluster-sample

Slide 13

Slide 13 text

デモ(紙芝居) 13 4. PostgreSQL クラスタに接続する > kubectl get secret cluster-sample-app -ojsonpath="{.data.pgpass}" | base64 -d cluster-sample-rw:5432:app:app:7i2mRAGBmJGnsVZwwedUu8ZZCFhD30ZYTOvCygQkCOkg7LTbDhWqdC3o06jxlW1e > kubectl exec --stdin --tty cluster-sample-1 -c postgres --\ psql -h cluster-sample-rw -p 5432 -U app app Password for user app: psql (17.2 (Debian 17.2-1.pgdg110+1)) SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off, ALPN: postgresql) Type "help" for help. app=>

Slide 14

Slide 14 text

なぜCloud SQLではなくCloudNativePGを使うのか 14 敵「なぜCloud SQLがあるのにKubernetesでPostgreSQLをホ ストするのか」

Slide 15

Slide 15 text

なぜCloud SQLではなくCloudNativePGを使うのか 15 敵「なぜCloud SQLがあるのにKubernetesでPostgreSQLをホ ストするのか」 私「そこにデータベースをホストできる環境があるから」

Slide 16

Slide 16 text

なぜCloud SQLではなくCloudNativePGを使うのか 16 敵「なぜCloud SQLがあるのにKubernetesでPostgreSQLをホ ストするのか」 私「そこにデータベースをホストできる環境があるから」

Slide 17

Slide 17 text

なぜCloud SQLではなくCloudNativePGを使うのか 17 ● マネージドサービスより柔軟性があるから ○ Cloud SQLではサポートしていない拡張機能を使いたい ○ データファイルに直接アクセスしたい ● Kubernetesとの親和性が高いから ○ yaml / Helmでの定義 ○ ArgoCDからのデプロイ ● ランニングコストがやすいから ○ k8s = 4 vCPU 16GB RAM = $126 / month ※ ○ Cloud SQL = 2 vCPU 7.5GiB RAM = $130 / month ● ハイブリッド・マルチクラウド戦略をとりやすいから ○ ハイブリッド・マルチクラウドk8sクラスタでのPostgreSQLクラスタもデ プロイ可能 ※ k8s自体を動かすリソースも含むので大規模でようやくメリットがうまれるレベル

Slide 18

Slide 18 text

まとめ 18 ● CloudNativePGをつかうとKubernetesでのPostgreSQL 利用が楽になる! ● Cloud SQLではなくCloudNativePGを使うメリットも一応あ る! ● みんなさんもCloudNativePG触ってみて欲しい!