개발새발

EKS 내부 DB 접속하기: kubectl port-forward로 PostgreSQL 로컬 연결 본문

기타

EKS 내부 DB 접속하기: kubectl port-forward로 PostgreSQL 로컬 연결

비숑주인 2026. 3. 17. 10:00

보통 운영 환경(Production)의 DB는 해킹 위험 때문에 외부 인터넷에서 접속할 수 있는 공인 IP(Public IP)를 아예 할당하지 않는다. 내가 회사 데이터베이스에 일반적인 방식으로 DBeaver에서 바로 접속이 거부당했던 것도 이 이유 때문이었다. 

 

포트 포워딩은 내가 이미 AWS 권한(aws configure)을 가지고 있으니, 쿠버네티스라는 '관리자 통로'를 타고 들어가서 DB를 로컬로 끌어오는 것이다. 별도의 복잡한 방화벽 설정 없이도 안전하게 접속할 수 있다. 

 

아래는 EKS(Amazon Elastic Kubernetes Service) 환경에 있는 PostgreSQL 데이터베이스를 로컬 PC에서 접속할 수 있도록 연결하는 방법이다. 

 

A. AWS CLI 설치 여부 확인 먼저 아래 명령어를 입력해서 설치가 되어 있는지 확인

aws --version

 

command not found가 뜬다면 아래 설치 과정을 진행해야 한다. 

 

B. AWS CLI 설치 (Mac 기준) 터미널에 다음 명령어를 복사해서 붙여넣기 (또는 AWS 공식 홈페이지에서 GUI 설치 파일을 받기).

curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
sudo installer -pkg AWSCLIV2.pkg -target /

 

설치가 완료되었다면 터미널을 완전히 껐다가 다시 키고, 아래 단계 진행하기

  1. aws configure (액세스 키와 비밀번호 입력 단계)
  2. aws eks update-kubeconfig ... (클러스터 연결 단계)
  3. kubectl port-forward ... (포트 포워딩 단계)

이 때 kubectl 명령어도 설치되어 있어야 한다! 만약 aws configure는 성공했는데 kubectl에서 다시 command not found가 뜬다면, 아래 명령어로 설치하자. 

brew install kubernetes-cli

 

aws configure는 내 컴퓨터에 "나는 이 계정의 주인이니 AWS 리소스에 접근하게 해줘" 라고 신분증을 등록하는 과정이다. 

이 작업을 하려면 먼저 IAM User의 Access Key가 있어야 한다. (회사 관리자에게 받았거나, AWS 콘솔에서 직접 생성해야 함.)

 

1. aws configure 입력 및 정보 기입

터미널에 aws configure를 입력하면 총 4가지를 물어본다. 하나씩 입력하고 엔터를 치면 된다. 

$ aws configure
AWS Access Key ID [None]: (여기에 Access Key ID 입력)
AWS Secret Access Key [None]: (여기에 Secret Access Key 입력)
Default region name [None]: ap-northeast-2
Default output format [None]: json
  • Access Key ID: 보통 AKIA...로 시작하는 긴 문자열 
  • Secret Access Key: 아주 긴 비밀번호 같은 문자열 (입력 시 화면에 안 보일 수 있으니 복사 붙여넣기 후 엔터 치기.)
  • Default region name: 서울 리전인 ap-northeast-2 입력
  • Default output format: 보통 json

2단계: EKS 클러스터 연결 

aws eks update-kubeconfig --region ap-northeast-2 --name [클러스터_이름]

 

성공하면 Added new context ... 메시지가 나온다. 

 

3단계: PostgreSQL 서비스 확인 

kubectl get svc -n [네임스페이스]

 

우리 데이터베이스인 postgres 서비스가 목록에 보이는 걸 확인했다. 

4단계: Port Forward

kubectl port-forward svc/postgres 5432:5432 -n oracle

 

원격 서버의 포트를 내 로컬 포트로 끌어오는 단계이다. Forwarding from 127.0.0.1:5432 -> 5432 메시지가 나오면 성공이다. 디비버를 사용하는 동안 이 창은 계속 켜두어야 연결이 유지된다. 

  • 왼쪽 5432: 내 컴퓨터(Local)에서 사용할 포트
  • 오른쪽 5432: EKS 내부 DB 서버의 포트

이 터미널은 닫으면 연결이 끊긴다!!!! 절대 닫지 말자!!!

 

다시 연결하고 싶을 때는 전부 다 반복할 필요는 없다. aws configure와 eks update-kubeconfig는 한 번만 하면 설정이 저장되기 때문에 터미널을 닫았다가 다시 연결할 때는 맨 마지막 명령어만 다시 실행하면 된다. 

kubectl port-forward svc/postgres 5432:5432 -n oracle

 

입력이 끝났다면 아래 명령어를 쳐서 내 정보가 잘 나오는지 확인하면 된다. 

aws sts get-caller-identity

 

이렇게 내 계정 번호(Account)가 포함된 결과가 나오면 성공이다!! DBeaver 설정 시 Host는 localhost 또는 127.0.0.1로, Port는 5432로 설정하면 된다. 

 

5단계: DBeaver에서 연결하기

포트 포워딩 터미널을 띄워둔 상태에서 DBeaver를 켜고 아래와 같이 설정하면 된다

  1. Host: localhost 또는 127.0.0.1 (중요: RDS 주소가 아닌 로컬 주소를 넣어야 한다!)
  2. Port: 5432 (포트 포워딩 명령어에서 앞에 적은 숫자와 일치해야 함)
  3. Database: 접속하려는 DB 이름 (예: postgres)
  4. Username / Password: DB 계정 정보 입력