Data Engineering/Airflow

Apache Airflow를 Minikube와 Helm으로 설치하기 (Apple M1 환경)

ygtoken 2025. 2. 24. 14:41
728x90

최근 로컬 개발 환경에서 워크플로우 관리 도구인 Apache Airflow를 사용해보고자, Apple M1 Pro 환경(MacBook Pro, 16GB 메모리)에서 Minikube와 Helm을 이용해 설치한 경험을 공유합니다. 이 글에서는 Minikube 클러스터 생성부터 Helm 차트를 활용한 Airflow 설치, 그리고 웹 UI 접속 및 초기 관리자 계정 설정까지의 전체 과정을 단계별로 정리합니다.


1. Minikube 클러스터 생성

먼저, Apple M1 Pro 환경에서 Docker 드라이버를 이용해 2노드 클러스터를 생성합니다.
클러스터 생성 시, 총 7680MB 메모리와 4개의 CPU를 할당했습니다.
다음 커맨드를 터미널에 입력합니다:

minikube start --driver=docker --kubernetes-version=stable --nodes=2 --memory=7680 --cpus=4

이 명령어는 Minikube 클러스터를 Apple M1 Pro 환경에 최적화된 리소스로 생성합니다.
노드 이름은 기본적으로 minikube 및 minikube-m02 등으로 자동 지정되며, 필요 시 node-role.kubernetes.io/worker 등의 라벨링을 추가해 워커 노드에 작업을 배정할 수 있습니다.


2. Airflow Helm 차트 설치

Minikube 클러스터가 준비되면, Helm을 사용해 Airflow를 설치합니다.
Airflow 웹 UI를 외부에 노출하기 위해 웹서버 서비스 타입을 LoadBalancer로 설정하고, PostgreSQL 컨테이너의 권한 문제를 해결하기 위해 securityContext를 설정했습니다.

또한, 기본 관리자 계정 정보를 아래와 같이 admin/admin으로 지정하여 설치하였습니다.

전체 설치 명령어는 다음과 같습니다:

helm upgrade --install airflow apache-airflow/airflow --namespace airflow --create-namespace \
  --set webserver.service.type=LoadBalancer \
  --set auth.defaultUser.enabled=true \
  --set auth.defaultUser.username=admin \
  --set auth.defaultUser.password=admin \
  --set postgresql.primary.securityContext.runAsUser=0 \
  --set postgresql.primary.securityContext.fsGroup=0 \
  --set postgresql.volumePermissions.enabled=true \
  --set workers.resources.requests.memory=2048Mi \
  --set workers.resources.limits.memory=3072Mi \
  --set workers.resources.requests.cpu=500m \
  --set workers.resources.limits.cpu=1000m

이 커맨드의 주요 포인트는 다음과 같습니다:

  • LoadBalancer 노출:
    --set webserver.service.type=LoadBalancer 옵션으로 웹서버를 외부에서 접속할 수 있도록 설정했습니다.
  • 관리자 계정 설정:
    auth.defaultUser 옵션을 이용해 초기 로그인 정보를 admin/admin으로 명시했습니다.
  • PostgreSQL 권한 문제 해결:
    PostgreSQL 컨테이너가 호스트의 볼륨에 접근할 수 있도록 securityContext와 volumePermissions.enabled 옵션을 추가했습니다.
  • 워커 리소스 조정:
    Minikube 클러스터의 제한된 리소스(총 7680MB 메모리, 4 CPU) 내에서 안정적인 동작을 위해 워커의 메모리와 CPU 요청/한도를 보수적으로 설정했습니다.

3. 웹 UI 접속 및 minikube tunnel

Helm 차트 설치 후, Airflow 웹 UI가 LoadBalancer로 노출되었음을 확인합니다.

외부 IP 확인

kubectl get svc -n airflow

출력 결과에서 airflow-webserver의 EXTERNAL-IP가 할당되어 있음을 확인할 수 있습니다.
Minikube 환경에서는 LoadBalancer 외부 IP 할당을 위해 터널(tunnel)이 필요하므로, 다음 명령어를 사용합니다:

sudo nohup minikube tunnel > /dev/null 2>&1 &

터널을 실행하면 외부 IP가 할당되고, 브라우저에서 http://127.0.0.1:8080 (또는 http://localhost:8080)으로 Airflow 웹 UI에 접근할 수 있습니다.


4. 초기 관리자 계정 로그인

Helm 차트에서 명시적으로 아래와 같이 기본 관리자 계정을 설정했으므로,

auth:
  defaultUser:
    enabled: true
    username: admin
    password: admin

웹 UI 로그인 시 ID: admin, Password: admin 으로 접속합니다.

만약 기본 로그인 정보가 제대로 동작하지 않는다면, 설치된 Secret 정보를 확인하거나 Helm 값을 재확인하는 것이 좋습니다.


마치며

이번 글에서는 Apple M1 Pro 환경에서 Minikube 클러스터를 생성하고, Helm 차트를 활용해 Apache Airflow를 설치하는 과정을 자세히 살펴보았습니다.
각 단계별로 필요한 리소스 조정, 웹서버 노출, 그리고 초기 로그인 설정까지 진행했으며, 로컬 개발 환경에서 Airflow 웹 UI를 http://127.0.0.1:8080 으로 접속해 확인할 수 있었습니다.

개발 환경에 맞춰 추가 설정을 하거나, 실제 운영 환경에서는 보안 및 리소스 관리에 대해 더 면밀한 검토가 필요합니다.
Airflow를 활용한 워크플로우 자동화에 도움이 되길 바랍니다!

728x90