본문 바로가기
Database

Cloud Composer의 내부DB 접근

by BTC_최총무 2023. 9. 14.

베하~ 반갑습니다!!

 

인사통의 BTC_김회장, 최총무입니다!!

 

 

오늘은 Cloud Composer의 Worker를 통해 내부 DB에 접근해보도록 하겠습니다!!

 

함께 시작해 보시죠!!

개요

  • Composer GKE 연결하기
  • Composer Worker 접속하기
  • 내부 DB 연결하기

1. Composer GKE 연결하기

먼저 Composer의 Worker에 접근하기 위해서는 먼저 Composer 와 함께 생성된 GKE와의 연결이 필요합니다!

먼저 접근할 GKE의 상단 CONNECT를 통해 접근하기 위한 연결 명령어를 확인하실 수 있습니다.

 

연결이 되면 kubectl 명령어 등을 통해 kubernetes환경 내 명령어 사용이 가능합니다.

 

수행 명령어 예시 

$ gcloud container clusters get-credentials {cluster_name} --zone {LOCATION} --project {project}
 

--internal-ip : 비공개 클러스터에 접근을 위해 해당 옵션을 통해 클러스터 엔드포인트의 내부 ip 주소를 사용한다는 지정을 할 수 있습니다.


2. Composer Worker 접속하기

접속하게 되면 kubectl 명령어를 사용할 수 있습니다. (필요한 경우 설치해주세요)

아래 명령어를 통해 Pod 형태로 생성되어있는 Worker에 접속할 수 있습니다.

$ kubectl get pods -n {namespace}
 

Namespace란 쿠버네티스 클러스터 내부의 논리적인 분리 단위라고 생각하면 됩니다.

출처 : https://tommypagy.tistory.com/230

Namespace별 접근 권한 등을 구분할 수 있기 때문에 특정 Namespace에 들어있는 pod를 보기위해서는 -n 옵션을 통해 Namespace 지정이 필요합니다.

 

이후 kubectl exec -it를 통해 해당 namespace와 pod를 함께 지정하여 접속할 수 있습니다.

아래 명령어가 일반적으로 접근을 위한 명령어 입니다.

$ kubectl -n {namespace} exec -it {worker pod} -- /bin/bash

여기까지 진행하시면 Worker pod에는 이상없이 진행할 수 있을거에요!


3. 내부 DB 연결하기

아마 Default로 Composer를 생성하셨다면 내부 DB로 Postgresql이 설치되었을 겁니다.

그렇기에 오늘은 Postgresql 기준으로 함께 진행해보겠습니다!

Worker 내부에 접근했다면 내부 DB에 접근하기 위한 요소들이 있습니다.

일반적으로 유저명, DB_ENDPOINT, 접속 포트, DB명, PW가 필요합니다.

 

하지만 처음 Composer를 사용하게되면 해당 정보들을 알 수 있는 곳이 숨겨져 있어

접속하기 막막할 수 있습니다.

 

정보들이 있는 위치를 알려드릴테니 차근차근 따라 해보실까요?

 

대부분의 정보는 Airflow Webserver의 Configuration - sql_alchemy_conn에서 확인할 수 있으나 DB_ENDPOINT의 내용은 확인할 수 없습니다.

이는 Kubernetes engine의 workload의 airflow-sqlproxy에서 endpoint를 확인할 수 있습니다.

이 정보들을 활용해서 worker 내부에서 접속을 해보겠습니다.

 

default인 postgresql을 기준으로 접속 명령의 형태는 다음과 같습니다.

$ psql -U {유저명} -h {endpoint} -p {포트번호} -d {DB명}
해당 명령어까지 Worker 내부에서 입력하면 접속이 되는것을 확인하실 수 있습니다!!

 


이상으로 오늘 실습을 마치겠습니다~

Airflow를 직접 만들었을때와는 사뭇 다르죠?.

 

하지만 Composer의 경우 GCP가 임의로 생성해주기 때문에 처음 접속하려면 당황할 수 있어요

오늘 실습을 통해 접속을 위한 각 정보들의 위치를 기억해두시면 다음에 찾기 쉬울거에요!

 

그럼 다음번에도 더욱 유용한 정보를 알려드리러 오겠습니다!!

 

모두 베빠!!

'Database' 카테고리의 다른 글

MyBatis 성능 개선포인트  (0) 2023.09.27
트랜잭션의 이해(ACID)  (0) 2023.09.15
문서 검색 챗봇 만들기  (0) 2023.09.13
[Airflow] Celery Executer  (0) 2023.09.04
LangChain이란?  (0) 2023.09.04

댓글