postgres webgui를 사용하고 싶습니다.
왜 할까?
현재 상태,
db는 k8s를 타고 있습니다. 안전을 위해 (maybe) 외부에 공개하지 않은 -> loadbalancer를 사용하지 않고 ClusterIP를 구성합니다.
단지 개발자는 DB의 내용을보고 싶을 때가있을 것입니다.
그래서 웹을 통해 볼 수있는 GUI를 설정하고 싶습니다.
어떻게 할까?
pgweb을 k8s를 타고 이것에 Ingress를 붙임으로써 문제를 해결합니다.
pgweb이란?
golang으로 작성된 관리 인터페이스 (그렇다고 생각)
쿼리 결과를 CSV, JSON, XML로 토출 할 수 있으며 쿼리 기록을 저장합니다.
이미지처럼 매우 간단한 UI (한눈에 반한)
간단한 UI입니다
pgweb을 docker로 이동
「pgweb docker hub」로 조사한 느낌 별로 좋은 image가 안되어서 스스로 작성한다
FROM alpine:latest as build
ADD https://github.com/sosedoff/pgweb/releases/download/v0.9.12/pgweb_linux_amd64.zip ./
RUN apk add unzip && unzip pgweb_linux_amd64.zip
FROM alpine:latest
COPY --from=build ./ ./app
EXPOSE 8080
CMD [ "./app/pgweb_linux_amd64", "--sessions" ,"--bind=0.0.0.0", "--listen=8080" ]
조금 해설하면
ADD로 pgweb zip을 다운로드하고 unzip으로 압축을 풉니 다.
이 상태에서는 unzip이 방해이므로 COPY --from = build를 사용하여 이미지 크기를 줄입니다.
이제 내 환경에서 16MB로 줄일 수있었습니다.
k8s 타기
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: pgweb
spec:
replicas: 1
template:
metadata:
labels:
app: pgweb
spec:
containers:
- name: pgweb
image: pgweb:latest
imagePullPolicy: Always
ports:
- containerPort: 8080
image의 곳은 자신이 작성한 image의 이름을 설정해 주면 움직일 것이다
또한 우리가 사용할 때 .gitlab 레지스트리에 docker image를 갖기 때문에
마지막 줄에
imagePullSecrets:
- name: gitlab
그리고 image는 gitlab registry에 설정된 image의 이름을 필요로합니다.
다음으로 서비스를 정의합니다.
apiVersion: v1
kind: Service
metadata:
name: pgweb-svc
spec:
type: NodePort
ports:
- port: 8080
protocol: TCP
targetPort: 8080
selector:
app: pgweb
selector를 사용하여 이전에 배포를 설정합니다.
그런 다음 ingress를 설정하십시오.
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: postgres-web-ing
spec:
backend:
serviceName: pgweb-svc
servicePort: 8080
필요한 최소한으로 움직일 것이라고 생각합니다.
실제로는 이것에 namespace라든지, ingres라면 도메인과 tls의 설정등을 하는 것이 좋다고 생각한다.....
이것이 성공하면 globalIP가 설정됩니다.
액세스해 보면 ↓
요약
pgweb UI는 간단하고 멋지다.
개발자는 DB 내용을보고 싶을 때 pgweb을 통해 볼 수 있습니다.
그건 그렇고, k8s를 타고있는 DB에 액세스하고 싶을 때
HOST
[サービス名].[ネームスペース名].svc.cluster.local
로 설정하면 연결되어야합니다.
이것에는 문제가 하나 있고, 지금의 상태라면 DB가 외부에 노출되지 않기 때문에
마이그레이션 할 수 없다는 것입니다. 해결책으로 두 가지 생각했습니다.
첫 번째는 외부에 노출되는 것이 조금 무섭다.
두 번째는 GCP 만 할 수 있다는 문제가 있습니다.
또 해결안을 생각한다고 한다
감사합니다.
참고
Reference
이 문제에 관하여(postgres webgui를 사용하고 싶습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nenesarn/items/a1da78f971a82b0b0f11텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)