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

CloudNativePGを布教したい

nnaka2992
February 19, 2025

 CloudNativePGを布教したい

2025/02/19 に開催された「Jagu'e'r Cloud Native #17 ハイブリッド Meetup~ 推しの CNCF プロジェクトを紹介するぜ LT ~」の登壇資料です。
https://jaguer-cloud-native.connpass.com/event/342024/
下記の内容を紹介しています
- CloudNativePGの特徴
- Google CloudのGKEでCloudNativePGをデプロイする軽いデモ
- なぜマネージドデータベースではなくKubernetesにデータベースをホストするのか

CloudNativePGに興味を持って内部の挙動を知った気になりたい方はぜひ下記の資料もご覧ください

CloudNativePGがCNCF Sandboxプロジェクトになったぞ! 〜CloudNativePGの仕組みの紹介〜 - Speaker Deck
https://speakerdeck.com/nnaka2992/cloudnativepggacncf-sandboxpuroziekutoninatutazo-cloudnativepgnoshi-zu-minoshao-jie

nnaka2992

February 19, 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の概要 5 • CloudNativePGはKubernetesでPostgreSQLの構築・運 用を楽にするオペレーター ◦ Cloud SQLが持つ機能はだいたいサポートしている ◦ GCSにバックアップを保存したりできる

    • 商用PostgreSQLサービスを提供するEDBが中心となって 開発 • PostgreSQL本体をサポートすることを目的としていて、拡 張機能のサポートは限定的※ ※イメージを自分で作れば十分対応可能
  3. デモ(紙芝居) 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 # クラスタ設定 ## インスタンス数 ## ストレージ設定 ### 利用するストレージ ### ストレージ容量
  4. デモ(紙芝居) 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… 後略
  5. デモ(紙芝居) 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 <none> 25m v1.31.5-gke.1023000 gke-cloud-native-pg-demo-default-pool-c92911f6-gt41 Ready <none> 25m v1.31.5-gke.1023000 gke-cloud-native-pg-demo-default-pool-c92911f6-nwvs Ready <none> 25m v1.31.5-gke.1023000
  6. デモ(紙芝居) 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
  7. デモ(紙芝居) 12 4. PostgreSQL クラスタを作成 > kubectl apply -f example.yaml

    cluster.postgresql.cnpg.io/cluster-sample created > kubectl get all -l cnpg.io/cluster=cluster-sample
  8. デモ(紙芝居) 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=>
  9. なぜ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自体を動かすリソースも含むので大規模でようやくメリットがうまれるレベル