概要
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 件のコメント:
コメントを投稿