| 특징 |
설명 |
| 고성능 |
단일 함수 인스턴스로 초당 수십만 HTTP 요청 또는 데이터 레코드 처리 |
| CPU/GPU 지원 |
머신러닝·딥러닝 워크로드에 GPU 직접 활용 가능 |
| 다양한 트리거 |
HTTP, Kafka, RabbitMQ, NATS, Cron, Kinesis, MQTT, Azure Event Hubs 등 |
| 멀티 런타임 |
Go, Python, Node.js, Java, C++, Shell 함수 지원 |
| Kaniko 통합 |
런타임에 Docker 데몬 없이 컨테이너 이미지 안전 빌드 |
| 데이터 과학 통합 |
Jupyter, Kubeflow와 네이티브 통합 |
| 함수 버전 관리 |
여러 버전 동시 실행 및 별칭(alias) 기반 이벤트 매핑 |
| API Gateway |
인증·카나리아 배포·함수 라우팅 내장 |
컨테이너 레지스트리 준비 (Gitea)
- Nuclio는 빌드된 함수 이미지를 푸시할 컨테이너 레지스트리가 필요
- 아래 예시는 Gitea + Longhorn을 사용하는 경우
gitea-values.yaml
service:
http:
type: NodePort
nodePort: 30100
ingress:
hosts:
- host: gitea-http.gitea.svc.cluster.local:3000
paths:
- path: /
pathType: Prefix
dnf install cryptsetup
kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.6.1/deploy/prerequisite/longhorn-iscsi-installation.yaml
kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.6.1/deploy/longhorn.yaml
curl -sSfL https://raw.githubusercontent.com/longhorn/longhorn/v1.6.1/scripts/environment_check.sh | bash
helm repo add gitea-charts https://dl.gitea.com/charts/
helm repo update gitea-charts
helm install gitea gitea-charts/gitea --create-namespace --namespace gitea --values ./gitea-values.yaml
Nuclio 설치
nuclio-values.yaml
dashboard:
containerBuilderKind: kaniko
nodePort: 30200
registry:
secretName: registry-credentials
pushPullUrl: gitea-http.gitea.svc.cluster.local:3000
helm repo add nuclio https://nuclio.github.io/nuclio/charts
helm repo update nuclio
kubectl create namespace nuclio
# 레지스트리 인증 시크릿 생성 (패스워드는 환경에 맞게 변경)
kubectl --namespace nuclio create secret docker-registry registry-credentials \
--docker-username gitea_admin \
--docker-password "<YOUR_PASSWORD>" \
--docker-server gitea-http.gitea.svc.cluster.local:3000 \
--docker-email gitea@local.domain
helm install nuclio nuclio/nuclio --namespace nuclio --values ./nuclio-values.yaml
대시보드
- 브라우저에서
http://<cluster-ip>:30200 접속

테스트
- 함수
- NEW FUNCTION 클릭
helloworld (golang) 선택 후 프로젝트 선택 및 함수 이름 작성 후 CREATE 클릭
- 코드 확인
- 코딩 및 테스트 수행

- 설정 확인
- Deployment, Service 설정


- 트리거 확인
- DEPLOY 클릭
- 상태 확인
- 동작 확인
Function Processor
| 구성 요소 |
설명 |
| Event-source listeners |
소켓·메시지 대기열 수신 또는 외부 이벤트/데이터 소스 주기적 폴링. 정확히 한 번(exactly-once) 또는 최소 한 번(at-least-once) 실행 보장 |
| Runtime engine |
함수 환경 초기화·이벤트 공급·응답 반환. 병렬 워커 다수 보유 가능 |
| Data bindings |
외부 파일·DB·메시징 시스템에 대한 지속적 연결. 데이터 프리패치·캐싱·마이크로 배치 처리 |
| Control framework |
프로세서 구성 요소 초기화·제어, 로깅, 통계 모니터링, 원격 관리 미니 포털 |
Runtime 유형
| 유형 |
언어/실행 방식 |
특징 |
| Native |
Go, C 인라인 루틴 |
최저 지연, 실시간 처리 |
| SHMEM |
Python, Java, Node.js |
제로 복사 공유 메모리 채널로 프로세서와 통신 |
| Shell |
바이너리·커맨드 라인 실행 파일 |
stdout/stderr 결과 매핑, 파일 데이터 바인딩만 지원 |
Event Sources and Mapping
| 클래스 |
설명 |
예시 |
| Synchronous Request/Response |
요청 후 즉각 응답 대기 |
HTTP, RPC |
| Asynchronous Message-Queue |
게시 후 구독자에게 배포 |
RabbitMQ, MQTT, 이메일, Cron |
| Message/Record Streams |
순서가 있는 레코드 순차 처리 |
Kafka, Kinesis, V3IO |
| Record/Data Polling (ETL) |
주기적 또는 데이터 변경 트리거 기반 외부 DB 조회 |
DB 폴링 |
- 이벤트 소스 매핑: URL “/”→ 프로덕션, “/beta”→ 베타 버전 방식으로 함수 버전별 매핑 가능
- 딜러(Dealer): N 리소스(샤드·파티션·작업)를 M 프로세서에 동적 배포, 장애 및 스케일 변경 처리
Function Build & Deployment Flow

- 각 함수는 YAML 또는 JSON으로 작성된 버전별 함수 사양(spec) 보유
- 함수 사양: 코드, 데이터 바인딩, 환경 리소스, 자격 증명, 이벤트 소스 등 정의
build 명령: 컴파일 후 아티팩트 생성 → 이후 여러 배포에 재사용 가능
run 명령: 소스를 받아 빌드 + 배포 또는 기존 아티팩트 직접 배포 가능
build.yaml 파일로 빌드 플래그 세밀하게 제어
Function Versioning
- 새 버전 게시 후 별칭(alias)으로 태그 지정 가능
- 프로덕션·베타 등 여러 버전을 동시에 실행
- 이벤트 소스 매핑은 버전 또는 별칭 기반 → 신규 배포 시 매핑 변경 불필요
Kubernetes Ingress를 사용하여 이름으로 함수 호출
- 플랫폼을 공유하는 모든 함수 간에 공유되는 별도 설정
- Kubernetes: 함수 네임스페이스에
platform-config ConfigMap으로 저장
- 플랫폼은 클러스터 또는 네임스페이스 단위로 적용
| 구성 요소 |
설명 |
| Log sinks |
로그 출력 대상 설정 |
| Metric sinks |
메트릭 수집 대상 설정 |
| Webadmin |
대시보드 설정 |
| Health check |
함수 상태 확인 방식 |
| Cron-trigger creation mode |
Cron 트리거 생성 방식 |
| Runtime |
런타임 기본값 설정 |
| Sensitive fields |
민감 필드 마스킹 규칙 |
함수
| 인수 |
설명 |
| Context |
함수 호출 전반에 걸쳐 상태 유지. 로거·데이터 바인딩·워커 정보·사용자 지정 데이터 포함 |
| Event |
이벤트 헤더·본문·트리거 정보 포함. EventID, Body, ContentType, Headers, Fields 등 |
| 트리거 |
유형 |
설명 |
| HTTP |
Synchronous |
REST API 엔드포인트 노출 |
| Kafka |
Stream |
토픽 파티션 기반 스트림 처리 |
| RabbitMQ |
Message Queue |
AMQP 메시지 소비 |
| NATS |
Message Queue |
NATS pub/sub 구독 |
| MQTT |
Message Queue |
IoT 디바이스 메시지 처리 |
| Cron |
Polling |
주기적 실행 스케줄 |
| Kinesis |
Stream |
AWS Kinesis 스트림 처리 |
| Azure Event Hubs |
Stream |
Azure 이벤트 스트림 처리 |
| V3IO stream |
Stream |
Iguazio V3IO 스트림 처리 |
- 함수를 웹 서비스로 노출하는 프록시 레이어
- UI, HTTP API,
nuctl CLI를 통해 생성·삭제 가능
| 기능 |
설명 |
| 함수 라우팅 |
요청을 대상 함수로 전달하고 응답 반환 |
| 인증 |
Basic Auth 등 접근 제어 |
| 카나리아 배포 |
트래픽을 여러 함수 버전으로 분산 |
| 런타임 |
버전 예시 |
| Go |
1.x |
| Python |
3.9, 3.10, 3.11 |
| Node.js |
18.x |
| Java |
11 |
| C++ |
- |
| Shell |
bash |
- 대시보드가 노출하는 REST API — 함수·프로젝트·API Gateway CRUD 지원
nuctl CLI는 내부적으로 이 API를 사용
유사 도구 비교
| 항목 |
Nuclio |
Knative |
OpenFaaS |
Fission |
| 대상 워크로드 |
데이터·I/O 집약, ML/AI |
범용 서버리스 |
범용 FaaS |
빠른 콜드 스타트 FaaS |
| Kubernetes 전용 |
O |
O |
O |
O |
| GPU 지원 |
O |
△ |
X |
X |
| 빌드 방식 |
Kaniko (데몬 불필요) |
Buildpacks/Dockerfile |
Dockerfile |
Dockerfile |
| 이벤트 소스 |
Kafka, NATS, MQTT, HTTP 등 다수 |
Knative Eventing |
HTTP, NATS 등 |
HTTP, MQ 등 |
| 대시보드 UI |
O |
X |
O |
X |
| 함수 버전 관리 |
O |
O |
X |
X |
| 적합 용도 |
고성능·스트리밍·ML 추론 |
클라우드 서비스 추상화 |
심플한 FaaS 배포 |
초저지연 함수 실행 |
관련 포스트