Airflow의 Default Helm Chart는 Metadata DB로 Container에서 동작하는 Postgre DB를 사용한다.
하지만 실무에서는 AWS RDS 같은 DB를 사용한다.
따라서 Airflow Metadata DB를 외부 DB로 설정하는 방법을 알아본다.
우선 Chart 설정 정보를 파일로 저장한다.
helm show values apache-airflow/airflow > values.yaml
Chart에서 우선 Default Postgres Container를 비활성화시킨다.
이제 외부 DB를 연결하기 위해 DB 연결정보를 담은 Secret을 만들어야 한다.
두 가지 방법이 있다.
values.yaml
에 연결정보 직접 입력values.yaml 파일의 data.metadataConnection
에 외부 DB 연결정보를 입력한다.
이렇게 하면 Chart가 간단하게 K8s Secret을 만들어준다.
고급 옵션이 필요한 경우 secret을 만들어 매핑하는 방법을 사용하면 될 듯
values.yaml
Helm Chart를 배포해보면(배포 방법은 아래에) 다음과 같이 airflow-airflow-metadata
secret이 생성된 걸 볼 수 있다.
secret을 YAML 포맷으로 조회해보자.
kubectl get secret airflow-airflow-metadata -n airflow -o yaml
base64 인코딩된 연결정보를 디코딩해보자.
echo <base64_encoded_connection_string> | base64 --decode
<protocol>://<user>:<password>@<host>:<port>/<db>
형태의 Connection String이 Base64 인코딩된 채로 K8s Secret이 생성되었다는 것을 알 수 있다.
DB에도 Airflow Metadata Table들이 생성된 것을 볼 수 있다.
YAML 파일에 정의 후 Cluster에 적용시켜주거나, 아래 Command로 Credential을 저장한 Secret을 생성해준다.
kubectl create secret generic <secret name> --from-literal=connection='<protocol>://<user>:<password>@<host>:<port>/<db>' -n airflow
values.yaml
에 생성한 Secret을 설정한다.
위와 같이 K8s Secret이 만들어졌다면 Helm Chart를 배포한다.
helm upgrade --install airflow apache-airflow/airflow -n airflow -f values.yaml --debug
참고
https://airflow.apache.org/docs/helm-chart/stable/production-guide.html