본문 바로가기
CSP (Cloud Service Provider)/GCP

[GCP] Composer 안의 Airflow 데이터 베이스 접속하기

by BTC_XOXO 2023. 7. 13.

베하~

안녕하세요 3대 5000의 man, xoxo 입니다.

이번 시간에는 Composer 안의 Airflow 데이터 베이스 접속에 대해 알아보도록 하겠습니다.

 

Composer 2를 생성한 후 아래의 그림과 같이 airflow 웹페이지를 접속합니다.

OPEN AIRFLOW UI 클릭

홈페이지의 Admin 탭 -> Configurations로 들어가셔서 아래로 스크롤을 하시면 (ctrl +f) sql_alchemy_conn 매개변수가 보입니다.

 

예를 들어 이 매개변수의 값이 postgresql+psycopg2://root:example-password@127.0.0.1:3306/composer-1-17-0-airflow-2-0-1-400fa094이면 사용자 이름이 root, 비밀번호가 example-password, 데이터베이스 이름이 composer-1-17-0-airflow-2-0-1-400fa094입니다.

 

해당 값을 따로 복사해둡니다.

 

composer를 생성할 때 생긴 gke로 접속합니다. (Environment details -> Resources -> GKE cluster -> Details 옆의 view cluster details를 클릭)

 

해당 클러스터에 Control plane authorized networks를 등록을 하기 위해 VM을 생성하여 등록 괜찮고 원래 있던 VM IP를 등록하시면 됩니다.

Control plane authorized networks 등록화면

등록 후 자신의 환경에 맞게 데이터베이스 엔드포인트 주소 가져옵니다. 

 

환경이 공개 IP 인 경우

  1. Google Cloud 콘솔에서 Kubernetes Engine > 서비스 및 인그레스 페이지로 이동합니다.
  2. 서비스 및 인그레스로 이동
  3. 클러스터의 airflow-sqlproxy-service 서비스를 선택합니다. 엔드포인트에 클러스터 이름 또는 나열된 IP 범위를 사용하여 올바른 항목을 찾을 수 있습니다.
  4. 서비스 세부정보 페이지에서 제공 포드의 IP 주소를 찾습니다. IP 주소는 엔드포인트 열의 제공 포드 섹션에 나열됩니다.

 

비공개 IP -PSC 인 경우

  1. Google Cloud 콘솔에서 네트워크 서비스 > Private Service Connect 페이지로 이동합니다.
  2. Private Service Connect로 이동
  3. 환경 이름을 가진 엔드포인트를 클릭합니다. 예를 들어 이름이 us-central1-example-environ-d9cb394f-psc일 수 있습니다.
  4. 환경은 IP 주소 행에 지정된 IP 주소를 통해 데이터베이스에 연결합니다.

 

비공개 IP - VPC 피어링 인 경우

  1. Google Cloud 콘솔에서 Kubernetes Engine > 서비스 및 인그레스 페이지로 이동합니다.
  2. 서비스 및 인그레스로 이동
  3. 클러스터의 airflow-sqlproxy-service 서비스를 선택합니다. 엔드포인트에 클러스터 이름 또는 나열된 IP 범위를 사용하여 올바른 항목을 찾을 수 있습니다.
  4. 서비스 세부정보 페이지에서 제공 포드의 IP 주소를 찾습니다. IP 주소는 엔드포인트 열의 제공 포드 섹션에 나열됩니다.

 

위의 3가지의 환경을 통하여 엔드포인트 주소를 들고 왔으면 아까 등록한 VM에 접속하여 GKE를 연결합니다.

상단의 CONNECT를 클릭

만약 내부 IP를 이용하는 경우 복사한 명령어 뒤에 --internal-ip를 붙입니다.

연결 후에 아래의 코드를 참조하여 postgresql을 설치합니다.

sudo apt-get update
sudo apt-get install postgresql-client

설치 후 이제 본격적으로 연결을 합니다.

psql --user=USERNAME --password \
  --host=DB_ENDPOINT \
  --port=3306 \
  DB_NAME

연결 후 이제 본격적으로 SQL 쿼리를 실행할 수 있습니다! (아래는 예시 쿼리)

SELECT * FROM dag LIMIT 10;

이번시간은 Composer 안의 Airflow 데이터 베이스 접속하는 방법에 대해 알아보았습니다.

다음 시간에는 연결하고 나서 파이썬 코드를 통해 특정 테이블을 조회 및 삭제하는 시간을 알아보도록 하겠습니다~

 

 

댓글