Amazon RDS PostgreSQL の Web UI を EKS 上にデプロイしてみた
プライベートサブネットに配置してある Amazon RDS for PostgreSQL の様子を、GUI で参照・管理したくなりました。
この RDS は EKS (Kubernetes) クラスタからのみアクセス可能にしてあるので、ローカルマシンから pgAdmin などを使ってアクセスすることはできません。
そこで、EKS クラスタ内に pgweb という Web UI ツールをデプロイして、Kubernetes のポートフォワード機能を使ってアクセスしてみます。
- Pgweb – Cross-platform client for PostgreSQL databases
- sosedoff/pgweb: Cross-platform client for PostgreSQL databases
pgweb は Docker イメージが提供されていました。
これを使って Deployment マニフェストを書いてみます。
apiVersion: apps/v1
kind: Deployment
metadata:
name: pgweb
namespace: NAMESPACE
spec:
replicas: 1
selector:
matchLabels:
app: pgweb
template:
metadata:
labels:
app: pgweb
spec:
containers:
- name: pgweb
imagePullPolicy: Always
image: sosedoff/pgweb:0.14.1
ports:
- containerPort: 8081
name: http
env:
- name: DATABASE_URL
value: postgres://USERNAME:PASSWORD@NAME.XXXXXXXXXXXX.ap-northeast-1.rds.amazonaws.com:5432/DBNAME?sslmode=disable
restartPolicy: Always
今回は簡単のため環境変数 DATABASE_URL
の値を直接書いていますが、実際は Secret を経由して注入する方がセキュアでしょう。
このような Deployment を $ kubectl apply -f
でデプロイしたら、Pod 名を指定して次のようなコマンドでポートフォワードします。
$ kubectl port-forward pods/pgweb-xxxxxxxxxx-xxxxx 8081:8081
これで、http://localhost:8081/
にアクセスすると pgweb の画面が見えます。
一覧性が高くて Web UI は見やすいですね!