본문 바로가기
App Programming/Apache Airflow

[Apache Airflow] 개발 환경 구성

by goatlab 2024. 6. 14.
728x90
반응형
SMALL

개발 환경 구성

 

DAG 개발시 서버에서 직접 개발하지 않으며, 일반적으로 git을 활용한 CI/CD 환경을 주로 이용한다. Airflow 서버가 별도로 존재한다고 가정할 때, 코드 개발은 로컬에서 개발 후 완성된 코드를 서버로 배포하는 식으로 진행한다.

 

다음 명령어로 파이썬 버전을 확인하고 로컬에서 동일한 버전을 설치한다.

 

sudo docker exec -it {스케줄러 컨테이너ID} bash
default@~: python-V

 

가상 환경

 

파이참에서는 프로젝트마다 가상 환경 생성이 가능하다.

 

 

Git 구성

 

git 홈페이지에서 프로그램을 OS에 맞게 다운 받고, git 계정을 설정한다.

 

git config --global --edit

 

그 다음, 코드를 올리기 위한 github Repository 만들고, 레포지토리 권한을 얻기 위해 토큰을 생성한다.

 

Settings → Developer settings → Personal Access Tokens → Tokens (classic), 필요 권한 : repo

 

로컬에서 작업하기 레포지토리를 git clone하고 파이참에서 다음과 같이 파일이 구성되도록 생성한다.

 

 

env 파일에는 다음과 같이 저장한다.

 

AIRFLOW_UID=1000

 

 

docker-compose.yaml 파일의 경우 설치한 Git 터미널에서 다음 명령어를 통해 작업 폴더에 다운받는다.

 

 curl-LfO 'https://airflow.apache.org/docs/apache-airflow/2.9.1/docker-compose.yaml'

 

그리고 docker-compose.yaml 파일의 volumes 항목을 수정한다.

 

  volumes:
    - /home/ubuntu/airflow/dags:/opt/airflow/dags
    - /home/ubuntu/logs:/opt/airflow/logs
    - /home/ubuntu/config:/opt/airflow/config
    - /home/ubuntu/plugins:/opt/airflow/plugins

 

로컬 환경에서 파일 작성이 완료되었다면, git commit & git push를 진행한다.

 

$git branch -M master
$git status
$git add .
$git commit -m "first commit"
$git status
$git remote add origin https://github.com/{github ID}/airflow.git
$git push -u origin master
Username for 'https://github.com':github ID
Password for 'https://{user}@github.com':토큰

 

로컬에서 git credential 인증이 반복적으로 뜬다면 다음 명령어로 생략가능하다.

 

git config credential.helper store

 

github와 서버 연동

 

github와 서버의 Airflow 컨테이너와 연결된 디렉토리로 추가 연동이 필요하다. /home/ubuntu/docker-compose.yaml이 아닌 /home/ubuntu/airflow/docker-compose.yaml 파일을 이용해 컨테이너를 가동한다.

 

ubuntu~$ cd /home/ubuntu
ubuntu~$ git clone https://github.com/{github ID}/airflow.git
ubuntu~$ ls -al
ubuntu~$ cd airflow
ubuntu~$ ls -al

 

다음 명령어로 도커 컨테이너를 가동시킨다.

 

sudo docker compose up

728x90
반응형
LIST

'App Programming > Apache Airflow' 카테고리의 다른 글

[Apache Airflow] Python 오퍼레이터  (0) 2024.06.17
[Apache Airflow] Email 오퍼레이터  (0) 2024.06.17
[Apache Airflow] Cron Schedule  (0) 2024.06.17
[Apache Airflow] DAG 개발  (0) 2024.06.14
Apache Airflow  (0) 2024.06.14