[Podman] 컨테이너로 PostgreSQL + pgAdmin 구동하기

개요


3계층 구조(3 Tier Atchitecture)를 구성하기 위한 필수요소인 DBMS를 구축한다. 모의해킹을 위한 테스트베드를 구축하는데 백엔드를 구성하는 과정에서 최근의 기술을 반영하기 위해 클라우드와 가상화를 이용한다.

구현하는 환경은 다음과 같다. 아무 리눅스 머신에서 명령어를 실행해도 동일한 결과를 기대할 수 있다.

클라우드: AWS(EC2-t3.small)
가상화: podman
DBMS: postgre-sql, pgadmin

 

 

설정


먼저 podman으로 파드(pod)를 생성한다. 각각의 서비스를 별개로 관리하지 않도록 하나의 가상화 인프라에 둔다.

podman pod create --name nextpostgre-sql -p 8080:80


--name 옵션의 경우 pod의 이름을 지정한다.
-p 옵션의 경우 외부로 노출할 포트와 파드 내부와 연결할 포트를 지정한다.


파드를 생성한 이후에는 다음 명령으로 확인할 수 있다.

podman pod ps

 



postgresql을 관리하기 위한 웹 콘솔 페이지인 mypgadmin을 구성한다.

podman run --pod=nextpostgre-sql \
  -e 'PGADMIN_DEFAULT_EMAIL=pnutz@peanutz.site' \
  -e 'PGADMIN_DEFAULT_PASSWORD=P@anutz' \
  --name pgadmin12 \
  -d docker.io/dpage/pgadmin4




postgresql을 내려받고 구성한다. 버전은 필요에 따라 변경 가능하다.

podman run --pod=nextpostgre-sql \
  -v /home/ubuntu/podman-workdir/postgre/volume:/var/lib/postgresql/data:Z \
  -e POSTGRES_PASSWORD=P@anutz \
  -e POSTGRES_USER=pnutz \
  --name postgredb \
  -d postgres



파드의 상태를 보려면 다음 명령을 실행한다.

podman pod stats nextpostgre-sql

pod 상태 확인




pgadmin을 설정할 때 외부로 노출한 포트로 접속하면 pgadmin 페이지를 확인할 수 있다. 접속 정보는 run 명령어의 인자로 부여한 값을 입력한다.

pgadmin 접속 확인

웹 콘솔 화면의 'Add New Server'을 통해 새로운 DB를 생성하고 관리할 수 있다.


pod를 관리하는 명령어는 다음과 같다.

# [일시정지]
podman pod pause [pod-name]

# [재개]
podman pod unpause [pod-name]

# [시작]
podman pod start [pod-name]

# [중지]
podman pod stop [pod-name]

# [설정 저장]
podman generate kube [pod-name] >> filename.yml



이러한 형태의 클라우드 사용은 IaaS(Infrastructure as a Service) 형태의 클라우드 활용이다. 가상 컴퓨팅 리소스만을 서비스 제공자로부터 제공받아 직접 운영체제를 구성하고 서비스까지 운영하였다. 사용자의 관리 범위가 운영체제부터 서비스까지가 되는 것이다.

반응형