Epic: Camel Application Runtime #5

Open
opened 2026-03-29 23:17:06 +02:00 by claude · 1 comment
Owner

Overview

Managed Camel runtime — customers upload JARs, platform builds immutable container images with cameleer3 agent auto-injected, deploys to tenant environments.

Architecture decision (2026-04-04): Docker-first development. RuntimeOrchestrator interface abstracts Docker and K8s deployment. Docker mode uses docker-java, K8s mode uses fabric8. Similar to Coolify/MuleSoft CloudHub model. See docs/superpowers/specs/2026-04-04-dual-deployment-architecture.md.

Architecture

RuntimeOrchestrator (interface)
  + deployApp(tenantId, appId, envId, imageRef, config) -> Deployment
  + stopApp(tenantId, appId, envId) -> void
  + restartApp(tenantId, appId, envId) -> void
  + getAppLogs(tenantId, appId, envId, since) -> Stream<LogLine>
  + getAppStatus(tenantId, appId, envId) -> AppStatus
  + listApps(tenantId) -> List<AppSummary>

DockerRuntimeOrchestrator (docker-java)     ← Phase 3
KubernetesRuntimeOrchestrator (fabric8)     ← Phase 5

Image Build Pipeline

Customer JAR upload
  → Validation (type, size, SHA-256, security scan)
  → Templated Dockerfile (JRE + agent + JAR + -javaagent)
  → Docker mode: docker build via docker-java (local cache)
  → K8s mode: Kaniko Job → push to registry
  → Deploy to requested environment

Image Registry Strategy

Environment Build Store
Docker Compose docker build (docker-java) Local Docker image cache
K8s (SaaS) Kaniko Job Gitea registry
K8s (self-hosted) Kaniko Job registry:2 or customer registry

Implemented In

  • Phase 3 (#26 — Runtime Orchestration, Docker)
  • Phase 5 (#25 — K8s Operational Layer)
## Overview Managed Camel runtime — customers upload JARs, platform builds immutable container images with cameleer3 agent auto-injected, deploys to tenant environments. > **Architecture decision (2026-04-04):** Docker-first development. `RuntimeOrchestrator` interface abstracts Docker and K8s deployment. Docker mode uses docker-java, K8s mode uses fabric8. Similar to Coolify/MuleSoft CloudHub model. See `docs/superpowers/specs/2026-04-04-dual-deployment-architecture.md`. ## Architecture ``` RuntimeOrchestrator (interface) + deployApp(tenantId, appId, envId, imageRef, config) -> Deployment + stopApp(tenantId, appId, envId) -> void + restartApp(tenantId, appId, envId) -> void + getAppLogs(tenantId, appId, envId, since) -> Stream<LogLine> + getAppStatus(tenantId, appId, envId) -> AppStatus + listApps(tenantId) -> List<AppSummary> DockerRuntimeOrchestrator (docker-java) ← Phase 3 KubernetesRuntimeOrchestrator (fabric8) ← Phase 5 ``` ## Image Build Pipeline ``` Customer JAR upload → Validation (type, size, SHA-256, security scan) → Templated Dockerfile (JRE + agent + JAR + -javaagent) → Docker mode: docker build via docker-java (local cache) → K8s mode: Kaniko Job → push to registry → Deploy to requested environment ``` ## Image Registry Strategy | Environment | Build | Store | |-------------|-------|-------| | Docker Compose | docker build (docker-java) | Local Docker image cache | | K8s (SaaS) | Kaniko Job | Gitea registry | | K8s (self-hosted) | Kaniko Job | registry:2 or customer registry | ## Implemented In - Phase 3 (#26 — Runtime Orchestration, Docker) - Phase 5 (#25 — K8s Operational Layer)
claude added the epicruntime labels 2026-03-29 23:17:59 +02:00
Author
Owner

Status Update (2026-04-07)

Runtime orchestration done:

  • Docker-based deployment via DockerRuntimeOrchestrator
  • JAR upload, image build, container start/stop/restart
  • Deployment versioning with status tracking (BUILDING/STARTING/RUNNING/FAILED/STOPPED)
  • Container resource limits (memory, CPU shares)
  • ClickHouse log ingestion + query
  • Environment isolation (per-tenant, per-environment)

Remaining:

  • K8s orchestrator implementation (Phase 5, #25)
  • Promotion pipeline (dev → staging → prod)
## Status Update (2026-04-07) ### Runtime orchestration done: - Docker-based deployment via `DockerRuntimeOrchestrator` - JAR upload, image build, container start/stop/restart - Deployment versioning with status tracking (BUILDING/STARTING/RUNNING/FAILED/STOPPED) - Container resource limits (memory, CPU shares) - ClickHouse log ingestion + query - Environment isolation (per-tenant, per-environment) ### Remaining: - K8s orchestrator implementation (Phase 5, #25) - Promotion pipeline (dev → staging → prod)
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: cameleer/cameleer-saas#5