LoginSignup
3
0

More than 5 years have passed since last update.

#5 pgadminから接続してみる

Last updated at Posted at 2018-12-04

本記事はPostgreSQL on Kubernetes Advent Calendar 2018の5日目です。
昨日は「PostgreSQL on Kubernetesのインストール」ということで、Rook上にPostgreSQLを構築し、KubernetesレベルやCephレベルで構築状況を確認しました。

本日は以下のツールを同じKubernetesクラスタ内に構築し、実際にデータベースとしての操作を試していきます。

  • pgadmin (PostgreSQLの定番GUIツール)
  • pgbench (PostgreSQLのベンチマークツール)

TL;DR

  • PostgreSQLの定番管理ツールpgadminをKubernetes内で使ってみよう。
  • クラスタ内のPostgreSQLにはサービス名で接続できるよ。
  • ユーザとデータベースもGUIで楽々作成。

必要な構成

これまで述べた構成と同様ですが、pgadminとpgbenchを同梱したポッドを以下のツール用サーバに導入します。

  • 1台のツール用サーバ。Kubernetes上でラベルとして、type=node.mon.bench が付いていること

pgtoolsの導入

#3でクローンしたものと同じリポジトリを使い、pgtoolsのディレクトリに移動します。

$ cd ./postgres-on-k8s/postgres-install/bench-tools

pgtoolsをデプロイして確認します。

$ kubectl apply -f pgtools.yaml
deployment.apps/pgtools created
service/pgadmin4-nodeport created

$ kubectl get deployment -o wide
NAME      DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE       CONTAINERS         IMAGES                                  SELECTOR
pgtools   1         1         1            1           2m        pgbench,pgadmin4   tzkoba/pgbench:0.1,dpage/pgadmin4:3.3   app=pgtools

pgtoolsの1ポッドにpgbenchとpgadmin4の2つのコンテナが入っていることが分かりますね。

pgadmin4はこちらのDockerイメージを使っています。
pgbenchは今回のためにCentOSのイメージにPostgreSQL 10のクライアントをインストールしたものを利用しています。

pgadminを使ってみる

今回はpgadmin用にNodePortのサービスを構築していますので、まずはそのポートを確認しましょう。

$ kubectl get svc
NAME                TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
pgadmin4-nodeport   NodePort    10.43.207.114   <none>        80:32273/TCP   8m

ここでは32273となっているので、http://サーバのグローバルIP:32273 で接続するとログイン画面が表示されます。
image.png

ログイン時の「Email Address」と「Passwordはpgtools.yaml内に環境変数として設定されているので、お好みに応じて修正をして下さい(初期値はいずれもpgadmin)。

では、第4回に構築したPostgreSQLのデータベースに接続しましょう。
pgadminログイン後の画面で左上の「Servers」を右クリックし、「Create」-「Server」をクリックします。
image.png

DB接続用のプロパティを以下のように入力し、「Save」で設定します。
image.png

以下の3つは第4回の構築時に使用したpg-rook-configmap.yamlの値と同じにする必要があります。

  • Maintenance daatabase
  • Username
  • Password

そして、ここではホスト名に pg-rook-sf.default.svc を指定していることにも注目です。
Kubernetes内ではサービス名により名前解決ができるようになっており、[サービス名].[名前空間].[svc]で今回構築したデータベースにアクセスできます。
(今回はStatefulSetを使っており、Headless Serviceによるポッド名での名前解決も出来ますが、その説明は別の機会に。)

ユーザとデータベースを作ってみる

次回以降ではpgbenchを使いますので、その準備として以下を構築しておきます。

  • benchユーザ
  • benchデータベース

まずはユーザを作ります。
先ほどのpg-rook-sfへの接続をSaveしていれば、そのままデータベースに接続されているはずです。
その状態で「pg-rook-sf」-「Login/Group Roles」-「Create」-「Login/GroupRole...」と辿ってクリックして下さい。
pgadmin-create-user.PNG

ユーザ作成画面が開きますので、「Name」をbenchとして下さい。「Definition」にパスワード設定欄がありますので、こちらはご自由に。
pgadmin-setting-user1.PNG

もう一つ、「Privileges」タブの「Can login?」をONにしておかないとログインできないのでここも設定しておきます。「Save」を忘れずに。
pgadmin-setting-user2.PNG

ユーザが出来たら、次はデータベースの作成です。
「pg-rook-sf」-「Databases」-「Create」-「Database...」と辿ってクリックして下さい。
pgadmin-create-database.PNG

以下の入力画面で「Database」をbench、「Owner」もbenchとしたら「Save」で完了です。
pgadmin-create-database2.PNG

まとめ

今回はpgtoolsを導入し、GUI管理ツールであるpgadmin4をコンテナとしてKubernetesクラスタ内に構築してみました。
このあたりが公開されているDockerイメージから簡単にできるのも、PostgreSQL on Kubernetes構成のメリットといえますね。

次回は本日までの準備を踏まえて、pgbenchの使い方を紹介しようと思います。

よろしくお願いします。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0