始めに
Postgres for Tanzuというk8s上でpostgresqlを簡単にデプロイできるツールがBetaで公開されています。
このドキュメントではさくっと試しました。
インストール編
マニュアルにあるよう、PivNetからバイナリーをダウンロードして展開します。
展開したらまずイメージを登録します。
cd postgres-for-kubernetes-v*/images
docker load -i postgres-instance
docker load -i postgres-operator
そうしたら、イメージをローカルレポジトリーにアップロードします。
私の環境ではHarborを使っており、10.195.35.38というRepoのbloggingというプロジェクトに保管します。
docker tag postgres-instance:v0.4.1 10.195.35.38/blogging/postgres-instance:v0.4.1
docker push 10.195.35.38/blogging/postgres-instance:v0.4.1
docker tag postgres-operator:v0.4.1 10.195.35.38/blogging/postgres-operator:v0.4.1
docker push 10.195.35.38/blogging/postgres-operator:v0.4.1
つづいて、Harborの認証情報を登録します。
kubectl create secret docker-registry regsecret --docker-server=10.195.35.38 --docker-username=XXXXXXX --docker-password='XXXXXX'
つぎにHelmのオーバーライド用のvalues.yamlを用意します。
# specify the url for the docker image for the operator, e.g. gcr.io/<my_project>/postgres-operator
operatorImageRepository: 10.195.35.38/blogging/postgres-operator
# specify the docker image for postgres instance, e.g. gcr.io/<my_project>/postgres-instance
postgresImageRepository: 10.195.35.38/blogging/postgres-instance
そして、これだけでインストールを行います。
cd postgres-for-kubernetes-v*/
helm install postgres-operator -f values.yaml operator/
うまく行けば以下のようにリソースが作られます。現在は全部defaultnamespaceにつくれらてしまい、ちょっとイケていない。
NAME READY STATUS RESTARTS AGE
pod/postgres-operator-f5f84f77-ph82j 1/1 Running 0 47s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 34h
service/postgres-operator-webhook-service ClusterIP 10.108.24.54 <none> 443/TCP 49s
service/supervisor ClusterIP None <none> 6443/TCP 34h
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/postgres-operator 1/1 1 1 50s
NAME DESIRED CURRENT READY AGE
replicaset.apps/postgres-operator-f5f84f77 1 1 1 50s
Postgreインスタンスの作成
ここからはCRDとしてkubernetes経由でpostgresがつくれます。
まずネームスペースを作ります。
kubectl create ns postgres
面倒ですが、新しく作成したNamespaceにまた、Harborの認証情報を登録します。
kubectl create secret docker-registry regsecret --docker-server=10.195.35.38 --docker-username=XXXXXXX --docker-password=XXXXXX -n postgres
そして、以下のコマンドで作成
kubectl create -n postgres -f - <<EOF
apiVersion: "postgres.pivotal.io/v1"
kind: "PostgresInstance"
metadata:
name: wordpress-postgres
spec:
memory: "2G"
cpu: "1.0"
storageClassName: default
# storageSize is divided evenly between data and backup storage
storageSize: 50G
EOF
そうすると簡単なPostgreインスタンスが立ち上がります。
NAME READY STATUS RESTARTS AGE
pod/wordpress-postgres-0 1/1 Running 0 2m8s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/wordpress-postgres LoadBalancer 10.106.207.224 <pending> 5432:31290/TCP 5m41s
NAME READY AGE
statefulset.apps/wordpress-postgres 1/1 2m13s
NAME STATUS AGE
postgresinstance.postgres.pivotal.io/wordpress-postgres Running 2m14s
まとめ
まだまだ機能を追加されるでしょうが、今のところこんな機能郡です。