본문 바로가기
반응형

airflow15

[Airflow] KubernetesPodOperator 로컬 테스트를 위한 환경 구축(feat. KIND(Kubernetes In Docker) | LIM docker image를 활용해 airflow에서 실행시키기 위해서 KubernetesPodOperator를 사용하게 되었는데 이는 기존 로컬 환경에서 테스트가 바로 안 된다는 단점이 있었다. 이번에 한국데이터 엔지니어 모임 3회에 참여해 발표를 들었던 내용 중에 로컬 환경에서 KubernetesPodOperator 를 사용할 수 있게끔 로컬 Airflow on K8S 구축에 Vault 곁들이기 설명을 들었는데 그 블로그를 참조해서 테스트해보았다. 🚀 KIND(Kubernetes in Docker) 활용하기 Kubernetes In Docker는 Kubernetes 클러스터를 Docker 컨테이너 내에서 실행할 수 있게 해주는 도구다. 이를 활용해 빠르고 쉽게 로컬 환경에서 Kubernetes 클러스터를.. 2023. 9. 17.
[Airflow] LocalExecutor 사용 시 PostgreSQL 설치 (Mac M1) | LIM Airflow 를 설치하면 가장 기본적으로 설정되어 있는 executor 는 Sequential Executor 이다. 하지만 이 Executor는 병렬처리를 진행할 수 없기 때문에 잘 사용하지 않고 보통 LocalExecutor나 CeleryExecutor 를 많이 사용한다. 이 때 LocalExecutor 를 사용하기 위해 기존 sqlite 로 되어있던 것에서 postgresql 로 변경해야 한다. 설치 환경은 Mac M1 기준이다. Postgresql 설치 brew install postgresql psql 을 입력하여 접속 >> psql 여기서 잘 접속된다면 해피하지만 보통은 그런 일이 잘 없다. 다음과 같은 에러 발생! 에러 핸들링 psql: error: connection to server o.. 2023. 6. 4.
[Airflow] Sensor - ExternalTaskSensor | LIM Intro Airflow의 DAG안에 Task들 간의 의존성을 통해 Task의 실행 여부 및 순서를 결정할 수 있듯이 DAG 간에도 가능하다. 예로, DAG A의 마지막 TaskC의 실행이 성공으로 끝나면 DAG B의 Sensor가 이를 인지하고 Task D가 시작되는 이러한 흐름이다. ExternalTaskSensor의 구성요소 ✔️ task_id - 현재 dag( 위의 예시에서 Dag B )의 task 이름 ✔️ external_dag_id - sensing 하는 dag( 위의 예시에서 Dag A )의 이름 ✔️ external_task_id - sensing 하는 dag의 최종적인 task 이름( 위의 예시에서 Dag A - Task C ) ✔️ execution_date_fn - sensing 대.. 2023. 5. 12.
[Airflow] DAG Creation Boilerplate CLI 도구 생성 | LIM Airflow 관리 관련해서 쏘카 기술 블로그 글을 읽다가 반복되는 DAG 코드를 쉽게 작성하기 위해 CLI 도구를 만들었다는 것을 보고 우리 팀에도 적용되면 좋을 것 같아 구현해 보았다. 이 도구는 이럴 때 유용할 것 같다. DAG 작성자가 처음에 DAG 작성을 어떻게 할지 모를 때 팀 내 DAG Template을 공통되게 유지하고 싶을 때 우리 팀은 현재 이럴 때 이미 작성된 코드를 복붙 해서 쓰고 있었는데, 뼈대가 되는 코드를 어떤 걸 기준으로 삼을 건지가 명확하지 않았고 처음부터 다들 제각각 작성하고 있어서 코드가 통일되지 않았었다. 참고했던 쏘카 기술 블로그이다. https://tech.socarcorp.kr/data/2021/06/01/data-engineering-with-airflow.ht.. 2023. 1. 14.
[Airflow] Connection 정보 Vault 이관 작업(feat.Plugin) | LIM 🧐 Vault 란 HashiCorp 사에서 만든 비밀정보, 즉 공개되면 안 되는 비밀번호나(DB 연결 정보), API 키, 토큰 등을 저장하고 관리하는 플랫폼이다. 👩‍💻 현재 조직 내에서 Airflow 관리 방안 지금 우리 팀은 데이터엔지니어 수가 많지 않아 Airflow 를 GCP의 managed service 인 Composer를 통해 관리하고 있다. Composer로 Airflow를 운영하면 Connection을 관리할 수 있는 방법이 기본적으로 2가지가 있다. Secret Manager 에 airflow prefix를 통한 저장 동일하게 airflow connection_id 를 통해 가져올 수 있다. 단순 Airflow UI에서 Connection 을 생성한다. 물론 API 로도 생성할 수 있.. 2023. 1. 13.
[Airflow] Custom UI for Airflow | LIM 에어플로우는 Plugin 을 이용해서 Webserver 에 메뉴를 수정할 수 있다. 기본적으로 에어플로우를 설치 후 Webserver 를 띄우면 이렇게 생겼다. Airflow Version: 2.2.4 Python Version: 3.8 😩 AS-IS 회사 내에서 Airflow 를 개발/ 운영 을 나누어서 2개를 사용하고 있었는데 해당 UI 두개가 동일하여 현재 Airflow 가 Dev인지 Prod 인지 헷갈렸었기 때문에 Plugin 을 이용해 단순 메뉴를 추가함으로써 Dev/ Prod 를 구분하고자 했다. ✨ TO-BE 추가로 원하는 Template 을 생성해 UI로 expose 시킬 수도 있다. 현재는 단순 Text 만 보이게 해두었다. 📝 Plugin 을 통해 Webserver 에 Menu Item.. 2022. 12. 29.
반응형