Kubernetes

Airflow - Airflow on kubernetes(K8S) 설치 - 1

크라우니 2022. 4. 27. 18:01

1. Airflow를 도입하게 된 이유

  - Azure Functions (Serverless SaaS)를 이용해서 데이터를 처리하는 과정에서 적은 리소스로 많은 작업을 처리해야 하는 상황이 발생 당시 3.5Gb의 적은 메모리 용량으로 다양한 배치 작업 및 실시간 트리거를 활용한 작업까지 모두 처리해야 하는 상황이었기 때문에 배치 작업만이라도 다른곳으로 돌려 작업의 효율성을 만들기 위함

 

2. Airflow K8S를 선택하게 된 이유

  - 우선 사내에서 운영하고있는 K8S가 있었기 때문이며 해당 K8S는 MLOps를 통해서 배포된 모델 API가 동작하는 용도로만 쓰이고 있었음. 리소스가 무려 코어 12개 메모리 48기가의 내용물을 가지고 있었음에도 특별하게 활용되고 있지 않았기 때문에 남는 리소스를 활용하기 위해서 K8S에 Airflow를 올리는 방향으로 결정

 

3. 환경

  - K8S(Azure Kubernetes Service) 1.12.7

  - Windows

  - VS Code

 

Airflow 설치 시작합니다.

 

준비물

  - Kubernetes Cluster

  - Docker

  - Helm

  - 용기와 끈기

 

우선 설치를 하기위해서 Airflow 공식 Helm설치 홈페이지를 참고합니다.

링크 : https://airflow.apache.org/docs/helm-chart/stable/index.html

 

Helm Chart for Apache Airflow — helm-chart Documentation

 

airflow.apache.org

step 1. install helm chart Airflow

helm repo add apache-airflow https://airflow.apache.org
helm upgrade --install airflow apache-airflow/airflow --namespace airflow --create-namespace

1번 라인에서 Helm Chart를 등록하고 2번 라인에서 Helm Chart를 통해서 설치를 진행합니다.

설치된 Helm의 이름은 airflow이며 이 Helm Chart를 통해서 설치되는 위치는 새로 생성한 airflow namespace에 설치됩니다.

 

step 2. 설치 확인하기

kubectl get po -n airflow

 

kubectl 명령어를 통해서 방금 생성한 airflow namespace에 pod를 조회해 보자.

 

다음과 비슷한 내용을 얻었다면 

설치 성공!

 

step 3. 접속 Airflow

kubectl get svc -n airflow

airflow webserver의 SVC 즉 service 이름을 찾아 냅니다.

저는 그냥 airflow-webserver 로 되어있더군요 

 

kubectl port-forward svc/airflow-webserver 8080:8080 -n airflow

포트포워딩을 통해서 내부에만 존재하는 Airflow의 포트를 노출시켜 줍니다. 

요런식으로 나왔다면 웹브라우저를 열어서 localhost:8080 으로 접속을 합니다.

이렇게 접속이 되는 모습을 확인 가능합니다.

 

 

 

ps. 리스타트가 몇번 됐는데 한번 찾아봐야겠습니다.