2021年5月4日火曜日

bitnami の PostgreSQL helm chart を使ってみた

bitnami の PostgreSQL helm chart を使ってみた

概要

PostgreSQL の helm chart を使う場合は bitnami が公開している helm chart が便利です
今回は k8s 上にデプロイする方法と HA 構成を試してみました

環境

  • kubernetes 1.20.4
  • helm 3.5.2
  • bitnami PostgreSQL helm chart 10.3.18

リポジトリインストール

  • helm repo add bitnami https://charts.bitnami.com/bitnami
  • helm repo update

とりあえずデプロイ

  • helm install test bitnami/postgresql

NodePort でアクセスできるようにする

  • export POSTGRES_PASSWORD=$(kubectl get secret --namespace "default" test-postgresql -o jsonpath="{.data.postgresql-password}" | base64 --decode)
  • helm upgrade test bitnami/postgresql --set service.type=NodePort --set service.nodePort=30432 --set postgresqlPassword=$POSTGRES_PASSWORD

デプロイできたか確認しましょう

  • kubectl get pod,svc
NAME                                                   READY   STATUS    RESTARTS   AGE
pod/nfs-subdir-external-provisioner-78cc5b4979-tnnnj   1/1     Running   0          21d
pod/test-postgresql-0                                  1/1     Running   0          8m11s

NAME                               TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
service/kubernetes                 ClusterIP   10.96.0.1        <none>        443/TCP          21d
service/test-postgresql            NodePort    10.100.235.141   <none>        5432:30432/TCP   8m11s
service/test-postgresql-headless   ClusterIP   None             <none>        5432/TCP         8m11s

動作確認

  • apt -y install postgresql-client
  • export NODE_IP=$(kubectl get nodes --namespace default -o jsonpath="{.items[0].status.addresses[0].address}") PGPASSWORD="$POSTGRES_PASSWORD" psql --host $NODE_IP --port 30432 -U postgres -d postgres

これでアクセスできれば OK です
あとはテーブルを作成たりデータをインサートすれば OK です

HA 構成をデプロイする

bitnami/postgresql-ha チャートを使います
とりあえずデプロイしてみましょう

  • helm install test2 bitnami/postgresql-ha

NodePort でアクセスできるようにする

HA 構成も NodePort 経由でアクセスできるようにします

  • export POSTGRES_PASSWORD=$(kubectl get secret --namespace default test2-postgresql-ha-postgresql -o jsonpath="{.data.postgresql-password}" | base64 --decode)
  • helm upgrade test2 bitnami/postgresql-ha --set service.type=NodePort --set service.nodePort=30432 --set postgresqlPassword=$POSTGRES_PASSWORD

起動したか確認します

  • kubectl get pod,svc
NAME                                                   READY   STATUS    RESTARTS   AGE
pod/nfs-subdir-external-provisioner-78cc5b4979-tnnnj   1/1     Running   0          21d
pod/test2-postgresql-ha-pgpool-75cd676457-2gx44        1/1     Running   0          19m
pod/test2-postgresql-ha-postgresql-0                   1/1     Running   0          19m
pod/test2-postgresql-ha-postgresql-1                   1/1     Running   0          19m
NAME                                              TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
service/kubernetes                                ClusterIP   10.96.0.1       <none>        443/TCP          21d
service/test2-postgresql-ha-pgpool                NodePort    10.99.241.206   <none>        5432:30432/TCP   19m
service/test2-postgresql-ha-postgresql            ClusterIP   10.98.87.23     <none>        5432/TCP         19m
service/test2-postgresql-ha-postgresql-headless   ClusterIP   None            <none>        5432/TCP         19m

動作確認

psql でアクセスする方法はシングル構成のときと同じです

  • export NODE_IP=$(kubectl get nodes --namespace default -o jsonpath="{.items[0].status.addresses[0].address}")
  • PGPASSWORD="$POSTGRES_PASSWORD" psql -h $NODE_IP -p 30432 -U postgres -d postgres

また HA の状態を確認してみます

  • kubectl exec pod/test2-postgresql-ha-postgresql-0 -- /opt/bitnami/scripts/postgresql-repmgr/entrypoint.sh repmgr -f /opt/bitnami/repmgr/conf/repmgr.conf service status
postgresql-repmgr 08:21:12.78
postgresql-repmgr 08:21:12.78 Welcome to the Bitnami postgresql-repmgr container
postgresql-repmgr 08:21:12.78 Subscribe to project updates by watching https://github.com/bitnami/bitnami-docker-postgresql-repmgr
postgresql-repmgr 08:21:12.79 Submit issues and feature requests at https://github.com/bitnami/bitnami-docker-postgresql-repmgr/issues
postgresql-repmgr 08:21:12.79
 ID | Name                             | Role    | Status    | Upstream                         | repmgrd | PID | Paused? | Upstream last seen
----+----------------------------------+---------+-----------+----------------------------------+---------+-----+---------+--------------------
 1000 | test2-postgresql-ha-postgresql-0 | primary | * running |                                  | running | 1   | no      | n/a
 1001 | test2-postgresql-ha-postgresql-1 | standby |   running | test2-postgresql-ha-postgresql-0 | running | 1   | no      | 1 second(s) ago

ちゃんと HA 構成になっているのが確認できると思います

参考サイト

0 件のコメント:

コメントを投稿