Airflow on KIND

1. Introduction
공식문서는 Hell Chart for Airflow를 참고 합니다.
제 글에서는 다음의 것들을 할 것입니다.
- Kind 설치
- Helm 을 사용해서 Airflow 를 Kind 그리고 AWS EKS에 배포해보도록 하겠습니다.
2. Kind
2.1 Kind Installation
https://kind.sigs.k8s.io/docs/user/quick-start/에서 설치 방법이 있습니다.
Ubuntu의 경우는 다음과 같이 설치 합니다.
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.11.1/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind
2.2 Kind Cluster
Latest version의 Kubernetes로 클러스터를 생성합니다.
1.21.1 을 선택한 이유는 일단 현재 시점에서 EKS Kubernetes Version과 최대한 동일하게 가려고 하기 위함입니다.
$ kind create cluster --image kindest/node:v1.21.1
# 설치 잘 됐는지 확인
$ kubectl cluster-info --context kind-kind
2.3 Install Airflow
# Airflow Helm Stable Repo를 추가시킵니다.
$ helm repo add apache-airflow https://airflow.apache.org
$ helm repo update
# Namespace 를 설정합니다.
$ export NAMESPACE=airflow
$ kubectl create namespace $NAMESPACE
$ kubectl get namespaces airflow
Airflow를 설치 합니다.
# 만약 Example DAGs 까지 모두 설치하고자 한다면 아래 옵션을 더 추가 시켜 줍니다.
# --set 'env[0].name=AIRFLOW__CORE__LOAD_EXAMPLES,env[0].value=True'
$ export RELEASE_NAME=airflow
$ helm install $RELEASE_NAME apache-airflow/airflow --namespace $NAMESPACE
설치 확인을 합니다.
$ kubectl get pods --namespace airflow
$ helm list --namespace airflow
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
airflow airflow 1 2021-12-02 13:13:09.877693925 +0900 KST deployed airflow-1.3.0 2.2.1
2.4 주요 접속 경로
설치를 다하게 되면 위에 있는 것처럼 Airflow에 접속할 수 있습니다.
- Webserver:
kubectl port-forward svc/airflow-webserver 8080:8080 --namespace airflow
- default Username:
admin
- default Password:
admin
- default Username:
- Postgre Connection
- default Username:
postgres
- default Password:
postgres
- Port:
5432
- default Username:
-
Dashboard:
kubectl port-forward svc/airflow-flower 5555:5555 --namespace airflow
- Secret Key는 다음과 같이 얻습니다.
$ echo Fernet Key: $(kubectl get secret --namespace airflow airflow-fernet-key -o jsonpath="{.data.fernet-key}" | base64 --decode)
웹서버 접속은 다음과 같이 합니다.
$ kubectl port-forward svc/airflow-webserver 8080:8080 --namespace airflow
3. Custom Airflow Image
3.1 Adding DAGs
dags 디렉토리에 DAG파일을 추가시키면 됩니다.
mkdir my-airflow-project && cd my-airflow-project
mkdir dags # put dags here
cat <<EOM > Dockerfile
FROM apache/airflow
COPY . .
USER root
RUN apt-get update \
&& apt-get install -y --no-install-recommends vim
USER airflow
EOM
Docker Build 시키고 배포합니다.
$ docker build --tag my-dags:0.0.1 .
$ kind load docker-image my-dags:0.0.1
$ helm upgrade airflow apache-airflow/airflow --namespace airflow \
--set images.airflow.repository=my-dags \
--set images.airflow.tag=0.0.1