Installing Crunchy PostgreSQL Operator 4.7.4

DigitalOceanのManaged k8s clusterにCrunchy PostgreSQL Operatorをインストールしてみる。

ちょっと古い記事だがこちらのサイトなどを参考。

Crunchy PostgreSQL Operatorのデプロイ

pgo-deploy Jobを使ってdeployする。

マニフェストを取得

curl -LO https://raw.githubusercontent.com/CrunchyData/postgres-operator/v4.7.4/installers/kubectl/postgres-operator.yml > pgo-4.7.4.yml

namespace:pgo を作成し、マニフェストを適用する

kubectl create namespace pgo
kubectl apply –f pgo-4.7.4.yml

PostgreSQL Operatorがインストールされていることを確認

kubectl get all -n pgo
NAME                                    READY   STATUS      RESTARTS   AGE
pod/pgo-deploy-48hrx                    0/1     Completed   0          2m9s
pod/postgres-operator-d66b9bcdd-cm6vl   4/4     Running     1          65s

NAME                        TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
service/postgres-operator   ClusterIP   10.245.211.191   <none>        8443/TCP,4171/TCP,4150/TCP   68s

NAME                                READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/postgres-operator   1/1     1            1           67s

NAME                                          DESIRED   CURRENT   READY   AGE
replicaset.apps/postgres-operator-d66b9bcdd   1         1         1       67s

NAME                   COMPLETIONS   DURATION   AGE
job.batch/pgo-deploy   1/1           2m7s       2m12s

pgo-deployジョブ削除

kubectl delete -f pgo-4.7.4.yml

pgo cliのインストール

client-setup.shスクリプトをダウンロード・実行

curl https://raw.githubusercontent.com/CrunchyData/postgres-operator/v4.7.4/installers/kubectl/client-setup.sh > client-setup.sh
chmod 755 client-setup.sh
./client-setup.sh

下記環境変数を設定

cat <<EOF >> ~/.zshenv
export PATH=/Users/takahken/.pgo/pgo:$PATH
export PGOUSER=/Users/takahken/.pgo/pgo/pgouser
export PGO_CA_CERT=/Users/takahken/.pgo/pgo/client.crt
export PGO_CLIENT_CERT=/Users/takahken/.pgo/pgo/client.crt
export PGO_CLIENT_KEY=/Users/takahken/.pgo/pgo/client.key
export PGO_APISERVER_URL='https://127.0.0.1:8443'
export PGO_NAMESPACE=pgo
EOF
source ~/.zshenv

pgoクライアント動作確認

kubectl -n pgo port-forward svc/postgres-operator 8443:8443
pgo version

client/APIサーバーのバージョンが表示されればOK

pgo client version 4.7.4
pgo-apiserver version 4.7.4

PostgreSQLクラスタの作成

pgoコマンドでクラスタ作成。

バックアップ先:DigitalOcean Spaces(s3互換)、オプションとして下記設定を指定する。

  • –pgbackrest-s3-uri-style=“path”
  • –pgbackrest-s3-verify-tls=“false”
pgo create cluster hippo1 --replica-count=1 --sync-replication \
--pgbackrest-storage-type="s3" \
--pgbackrest-s3-bucket="dok8s-bucket" \
--pgbackrest-s3-region="sgp1" \
--pgbackrest-s3-endpoint="sgp1.digitaloceanspaces.com" \
--pgbackrest-s3-key="XXXXX" --pgbackrest-s3-key-secret="XXXXXXXX" \
--pgbackrest-s3-uri-style="path" --pgbackrest-s3-verify-tls="false"

pgbouncerインストール

pgo create pgbouncer hippo1

クラスタ状態確認

pgo test hippo1

cluster : hippo1
   Services
           primary (10.245.54.229:5432): UP
           pgbouncer (10.245.141.175:5432): UP
           replica (10.245.117.213:5432): UP
   Instances
           primary (hippo1-577797b7db-hdxc7): UP
           replica (hippo1-pzzv-78987747df-mrzdn): UP

psqlによる接続確認

postgresユーザーのパスワード取得

kubectl get secret -n pgo hippo1-postgres-secret -o 'jsonpath={.data.password}' | base64 -d

psqlで接続

kubectl -n pgo port-forward svc/hippo1 5432:5432
psql -h localhost -U postgres
Password for user postgres:
psql (14.1, server 13.5)
Type "help" for help.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です