WORK / ACTIVE SYSTEM

Beluga

로컬 Kubernetes에서 Kafka·CDC·Flink·Iceberg·Trino·Superset·Airflow를 통합하는 데이터 플랫폼

Kubernetes · k3s · Data Platform · Kafka · Debezium · Flink · Iceberg · Trino · Airflow · GitOps
01 / Problem02 / Architecture03 / Development04 / Proof05 / Knowledge06 / Record
01 / PROBLEM

모던 데이터 플랫폼의 핵심 컴포넌트는 각각 쉽게 설치할 수 있지만 CDC, streaming, lakehouse, query, BI, orchestration의 경계를 로컬 환경에서 일관되게 연결하고 검증하기가 어려움

RESPONSE

Vagrant와 k3s 위에 Helm·Argo CD GitOps로 전체 데이터 플랫폼을 재현하고, synthetic clickstream과 PostgreSQL CDC 두 가지 end-to-end 시나리오로 실제 동작을 검증

02 / ARCHITECTURE

기능보다 먼저 경계와 연결을 봅니다.

Identity, Delivery, Network, Storage, Workload 통합을 기능 목록이 아니라 운영 경계로 읽습니다.

Beluga data flow from Kafka and Debezium through Flink, Iceberg, Lakekeeper, Trino, Superset and Airflow
Beluga data platform flow from CDC and streaming to lakehouse, SQL, BI and orchestration.
ARCHITECTURE / HOW IT WORKS

Beluga Data Platform Pipeline

01
Kafka + Debezium
Events · CDC
02
Flink
Stream processing
03
Iceberg + Lakekeeper
Lakehouse · REST catalog
04
Trino + Superset
Distributed SQL · BI
05
Airflow
Orchestration
A GitOps-deployed data platform from streaming and CDC ingestion through stream processing and Iceberg storage to query, BI, and orchestration.
DATA FLOW / VISUAL EVIDENCE

Streaming to lakehouse to analytics

01
Kafka + Debezium
02
Flink processing
03
Iceberg + Lakekeeper
04
Trino + Superset + Airflow
A compact visual summary; the architecture diagram below explains the execution flow in more detail.
03 / DEVELOPMENT OVER TIME

계속 발전하는 과정도 evidence입니다.

첫 commit, 누적 commit, release와 최근 활동으로 시스템이 지금도 개발되고 있는지 보여줍니다.

DEVELOPMENT OBSERVATORY
dasomel/beluga

한 번 만든 결과가 아니라, 시간에 따라 계속 발전하는 시스템을 봅니다.

Contributors: 2
첫 commit
2026년 8월 9일
누적 commits
285
Releases
0
최신 release
최근 push
2026년 9월 19일
개발 기간
1개월
최근 개발 활동
257 commits / 20 weeks
PAST → NOW
언어: Shell라이선스: Apache-2.0Stars: 0Forks: 0Open issues: 101
04 / PROOF, NOT BADGES
10
technology / domain signals

Declared scope and technical context

6
connected docs

Operational or implementation documentation

4
engineering notes

Knowledge produced by the project

0
digest links

External signals explicitly connected

06 / ENGINEERING RECORD

구현 세부사항, 운영 기록과 프로젝트별 맥락을 이어서 봅니다.

프로젝트 소개

Beluga는 개인 개발 환경에서 현대적인 데이터 플랫폼의 전체 흐름을 재현하기 위한 Kubernetes 기반 self-hosted data platform입니다.

핵심은 개별 OSS를 모아 놓는 것이 아니라 다음과 같은 데이터 lifecycle을 하나의 재현 가능한 환경에서 검증하는 것입니다.

Beluga는 “프로덕션 규모 데이터 플랫폼”을 표방하지 않습니다. 로컬에서 데이터 플랫폼의 통합 동작, 권한 모델, storage/query 경계와 GitOps 운영 패턴을 실험하기 위한 개인/학습 스케일 reference platform입니다.

플랫폼 구성

영역컴포넌트역할
Clusterk3s + Cilium + MetalLB로컬 Kubernetes 실행 기반
GatewayAPISIX + etcd플랫폼 UI 및 API entrypoint
GitOpsArgo CDapp-of-apps 기반 선언적 배포
IdentityKeycloak + OpenLDAP인증 및 그룹 기반 접근 제어
PolicyOPA + OpenFGA서비스 정책과 lakehouse 인가
StreamingStrimzi Kafka + DebeziumEvent streaming / CDC
ProcessingFlink Kubernetes OperatorStatefull stream processing
CatalogLakekeeperIceberg REST catalog
StorageSeaweedFSS3-compatible object storage
DatabaseCloudNativePGPostgreSQL source / metadata DB
QueryTrinoIceberg distributed SQL
BISupersetInteractive analytics / dashboards
OrchestrationAirflow 3compaction / aggregation DAG
Optional GovernanceOpenMetadata + OpenSearchmetadata / lineage
ObservabilityPrometheus Stackplatform metrics

핵심 설계 포인트

1. Kubernetes가 데이터 플랫폼의 공통 운영 경계

각 데이터 컴포넌트가 서로 다른 설치 방법을 사용하지 않도록 Helm과 Operator를 중심으로 Kubernetes 리소스에 맞춥니다. Beluga의 주요 차트는 beluga-platformbeluga-data로 계층화되어 있습니다.

2. GitOps가 실제 deployment contract

Argo CD App-of-Apps를 통해 플랫폼과 데이터 레이어를 선언적으로 배포합니다. 따라서 “로컬에서 한 번 잘 동작했다”가 아니라 Git 상태와 실제 cluster 상태를 비교할 수 있습니다.

3. 데이터 경로를 두 개의 시나리오로 검증

  • Clickstream demo — synthetic events → Kafka → Flink → Iceberg → Trino/Superset
  • PostgreSQL CDC — PostgreSQL → Debezium → Kafka → Flink → Iceberg

이는 단순 chart install 성공보다 실제 데이터가 경계를 통과하는지를 검증합니다.

아키텍처

로컬 리소스 모델

Beluga는 VM 4대와 전체 데이터 스택을 함께 구동하므로 가벼운 demo가 아닙니다.

  • 최소 호스트 RAM: 32GB
  • 48GB 이상: OpenMetadata 및 Trino worker 등 확장 profile 사용 가능
  • 64GB 이상: worker memory 추가 확장
  • VMware Fusion(ARM64) 또는 VirtualBox(AMD64) 지원
  • 실제 메모리 상황에 따라 profile을 자동 선택

따라서 Kube-Ready-Box처럼 “노드 baseline”을 제공하는 프로젝트와 달리 Beluga는 전체 data platform 통합 비용을 한 번에 보여주는 상위 reference environment입니다.

검증 구조

Beluga는 렌더링 성공과 실제 동작을 구분합니다.

각 단계는 “서비스가 설치되었는가”가 아니라 실제 API와 데이터 흐름이 기대한 상태인지 확인합니다.

보안 및 자격증명

Beluga는 repository에 비밀번호를 커밋하지 않고 bootstrap 시점에 credential을 생성합니다. Kubernetes Secret에 저장하고 Helm에는 값 자체가 아니라 필요한 참조만 넘기는 구조를 사용합니다.

또한 policies/를 별도 source of truth로 두어 Keycloak, Rego, PostgreSQL 권한 산출물 사이의 일관성을 관리하려는 방향을 취합니다.

현재 상태

Beluga는 개인/학습 스케일의 reference implementation입니다.

  • 핵심 Kafka/CDC → Flink → Iceberg → Trino/Superset/Airflow 흐름은 clean-install E2E를 목표로 구현
  • 라이브 클러스터가 항상 실행 중인 것은 아니므로 모든 최신 변경이 상시 live validation되는 것은 아님
  • 정책 컴파일러 통합과 거버넌스 영역은 별도 범위로 계속 진화

시작하기

git clone https://github.com/dasomel/beluga.git
cd beluga
make up
make status
make test

상세 기술 문서

주제문서내용
Overview플랫폼 개요문제 정의와 제품 범위
Architecture아키텍처전체 데이터 흐름과 컴포넌트 경계
Getting Started설치 가이드VM → k3s → GitOps bootstrap
Operations운영 가이드상태, upgrade, data lifecycle
Troubleshooting문제 해결cluster, Kafka, Flink, query 장애

프로젝트 관계