공식 Airflow Helm 차트의 values.yaml 은 대부분의 기본값을 이미 정의하고 있다. override 파일에는 실제로 바꿀 항목만 넣어야 nil pointer 오류를 피하고 차트 업그레이드 때 충돌이 적다. 내장 PostgreSQL 과 Redis 를 끄고 외부 PostgreSQL · RabbitMQ 를 쓰는 구성이다.
airflowVersion: "2.10.4"
defaultAirflowTag: "2.10.4"
executor: "CeleryExecutor"
# 내장 PostgreSQL 비활성화 — 외부 DB 사용
postgresql:
enabled: false
# 내장 Redis 비활성화 — 외부 RabbitMQ 사용
redis:
enabled: false
data:
metadataConnection:
user: airflow
pass: ${AIRFLOW_DB_PASSWORD}
protocol: postgresql
host: postgresql-service.databases
port: 5432
db: airflow
sslmode: disable
brokerUrl: "amqp://airflow:${RABBITMQ_PASSWORD}@rabbitmq-headless.message-queue:5672/"
pgbouncer:
enabled: true
ingress:
web:
enabled: true
ingressClassName: "nginx"
hosts:
- name: airflow.example.com
비밀번호를 평문으로 두지 않으려면 data.metadataSecretName 과 data.brokerUrlSecretName 에 미리 만든 Secret 이름을 주는 편이 낫다.
kubectl -n airflow create secret generic airflow-metadata \
--from-literal=connection="postgresql://airflow:${AIRFLOW_DB_PASSWORD}@postgresql-service.databases:5432/airflow?sslmode=disable"
kubectl -n airflow create secret generic airflow-broker \
--from-literal=connection="amqp://airflow:${RABBITMQ_PASSWORD}@rabbitmq-headless.message-queue:5672/"
max_connections 가 넉넉하지 않으면 켜 둔다./ 가 아닌 것으로 쓰면 URL 끝에 vhost 이름을 넣고 URL 인코딩한다(/airflow → %2Fairflow).fernetKey 와 webserverSecretKey 는 Secret 으로 고정한다. 값이 매 배포마다 바뀌면 기존 Connection 의 암호를 복호화하지 못한다.kubectl -n airflow run pg-test --rm -it --image=postgres:16-alpine -- \
psql "postgresql://airflow@postgresql-service.databases:5432/airflow" -c "select 1"
helm upgrade --install airflow apache-airflow/airflow -n airflow -f values.yaml
kubectl -n airflow get pods
RabbitMQ 자체도 Helm 으로 올렸다면 helm upgrade --install rabbitmq ./ -f values.yaml --namespace=message-queue 형태로 관리하고, Airflow 가 참조하는 서비스 이름(rabbitmq-headless)이 실제 Service 와 맞는지 확인한다.