1084713614
flowise/6.0.0 의 dip-values.yaml + dip-questions.yaml 스키마를 airflow 에 적용했다.
doc1 은 cnpg-cluster(airflow-db), doc2 는 airflow 본체다.
dip-values.yaml
- bootstrap.initdb 의 database/owner 는 airflow-db-values.yaml 과 맞춘 airflow.
- databases[] 도 airflow/airflow. 차트 기본값인 appdb/appuser 를 쓰면 appuser
롤이 생성되지 않아 Database CR reconcile 이 실패한다.
- bootstrap.initdb 에는 ensure/reclaimPolicy 를 넣지 않았다. cnpg-cluster 의
cluster.yaml 이 읽지 않는 databases[] 전용 키다.
- postgresql.enabled: false. 내장 bitnami 대신 syncWave 0 의 cnpg 를 쓴다.
- metadataConnection.host 는 "{{ .Name }}-airflow-db-rw". dip 배포는 cnpg
릴리스명에 테넌트 접두사를 붙여 나간다(관측: instance=demo01-air-airflow-db).
flowise 의 externalPostgresql.host 와 같은 규칙이다.
dip-questions.yaml
- git-sync 는 GIT_SYNC_*/GITSYNC_* 네 키를 모두 선언한다. 차트가 네 개를 각각
secretKeyRef 로 잡아서 하나라도 없으면 파드가 기동되지 않는다.
- connection 기본값 호스트는 $CATALOG_NAME-airflow-db-rw.$CATALOG_NAME.
차트가 data.metadataSecretName 의 connection 키를
AIRFLOW__DATABASE__SQL_ALCHEMY_CONN 에 그대로 주입하므로 이 값이 유일한 실효 값이다.
두 파일의 토큰 형식 차이는 의도한 것이다 — dip-questions 는 $CATALOG_NAME,
dip-values 는 {{ .Name }} 가 각 파일의 기존 관례다.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
airflow ArgoCD ApplicationSet
airflow-db(cnpg-cluster, syncWave 0) → airflow(syncWave 1) 2단계로 배포한다.
전체 스키마는 manifests/applicationset/openmetadata/1.12.1/와
manifests/applicationset/victoria-metrics/1.0.0/를 따른다.
구성
applicationset.yaml— list generator로 Application 2개 생성.airflow-db-values.yaml— cnpg-cluster 환경 오버레이 템플릿(DB/owner, 시크릿 참조).airflow-values.yaml— airflow 환경 오버레이 템플릿(DB 비밀번호만).
두 파일 모두 템플릿이다 — dip-console이 렌더링해 값 repo(dip/tenant-catalog)의
airflow/*.yaml로 커밋하는 것을 가정한다.
값 적용 순서 (2단)
각 Application은 baseValues(카탈로그 차트의 custom-values.yaml) + valuesPath(값 repo의
환경 오버레이, 나중 파일 우선)를 병합한다.
사전 준비 (ArgoCD 밖)
cloudnative-pgoperator(manifests/helm/cloudnative-pg/0.29.0)가 클러스터에 먼저 설치되어 있어야 한다 — 없으면airflow-db(Cluster CR)가 webhook 부재로 생성 자체가 거부된다.airflow-db-values.yaml의bootstrap.initdb.secretName과 동일한 이름·값의 K8s Secret이 대상 네임스페이스에 미리 존재해야 한다(username/password키).- ArgoCD가
Cluster.postgresql.cnpg.io커스텀 리소스의 상태를 "Healthy"로 판정하려면argocd-cm에 해당 CRD용 커스텀 헬스 체크(Lua)가 등록되어 있어야 sync-wave 1이 정상 대기한다 — 미등록 시 wave 0이 Progressing으로만 남아 wave 1로 못 넘어갈 수 있다.
배포 테스트
절차와 주의사항은 .claude/deploy-test-procedure.md
"카탈로그 앱 → cnpg-cluster 전환 배포 테스트" 절을 따른다.
APP_POD_SELECTOR="component=webserver", fixture는
scripts/deploy-test/fixtures/airflow-deploy-test-overrides.yaml.