ilum/core

By ilum

Updated 7 days ago

ILUM Core: Spark orchestration platform for Kubernetes (REST API, Livy, HA)

Image
Integration & delivery
Machine learning & AI
Data science
1

10K+

ilum/core repository overview

Ilum Core

Enterprise Apache Spark orchestration platform for Kubernetes, enabling serverless data processing at scale.

Base Image Architectures


Overview

ilum/core is the central control plane for Ilum — a production-grade Spark orchestration platform designed for Kubernetes-native workloads. It provides a comprehensive REST API to launch, monitor, and manage Apache Spark applications across multiple clusters with enterprise-grade scalability and high availability.

  • Spark Orchestration — launch and manage interactive and single Spark jobs via REST API
  • Apache Livy Compatibility — embedded Livy 0.8.0-compatible REST endpoints for seamless integration
  • Multi-Cluster Support — orchestrate Spark on Kubernetes, YARN, or local clusters from a single control plane
  • Cloud Storage Integration — built-in connectors for AWS S3, Google Cloud Storage, and Azure Blob Storage
  • Observability — OpenLineage integration for data lineage tracking
  • Scalability & HA — stateless architecture with Kafka-based communication for horizontal scaling

TL;DR / Quick Start

# Run Ilum Core (requires MongoDB, Kafka, MinIO)
docker run -d \
  --name ilum-core \
  -p 9000:9000 \

  -e MONGO_URI=mongodb://mongo:27017/ilum \
  -e SPRING_KAFKA_BOOTSTRAP_SERVERS=kafka:9092 \
  ilum/core:<version>

Note: For production deployments, use the official Ilum Helm Chart.


Supported Tags

  • <version>: Ilum 6.6.1 + Spark orchestration engine + Java 21

Environment Variables

Infrastructure (Required)
VariableDescription
MONGO_URIMongoDB connection string for metadata storage
SPRING_KAFKA_BOOTSTRAP_SERVERSKafka brokers for inter-service communication
ILUM_STORAGE_MINIO_URLMinIO endpoint for Spark artifacts and logs
ILUM_STORAGE_MINIO_ACCESS_KEYMinIO access key
ILUM_STORAGE_MINIO_SECRET_KEYMinIO secret key
Optional Configuration
VariableDefault ValueDescription
SERVER_PORT9000Ilum Core API port
ILUM_LIVY_PORT9888Apache Livy-compatible gateway port
ILUM_COMMUNICATION_TYPEkafkaCommunication mode: kafka or grpc

NOTE: Using grpc as communication type disables High Availability support. For production deployments with HA requirements, use kafka (default).


Data Persistence (Volumes)

Ilum Core is stateless. All persistent data is stored in external infrastructure components (MongoDB, Kafka, MinIO).

TIP: For disaster recovery, ensure regular backups of MongoDB (metadata) and MinIO (Spark artifacts, event logs).


Network Configuration

PortService
9000Ilum Core REST API + Apache Livy 0.8.0-compatible endpoints
9888gRPC communication (ilum-core ↔ Spark jobs)

Security

Non-root Architecture

The image runs as user ilum (UID 1001). Ensure that mounted volumes have appropriate permissions.

Secret Hygiene

CAUTION: Never pass sensitive credentials directly in environment variables!

Recommended methods:

  1. Kubernetes Secrets — mount MongoDB URI, Kafka credentials, and MinIO keys as secrets.
  2. IAM Roles (IRSA) — use cloud provider identity for storage access when running on managed Kubernetes.
Vulnerability Scanning

Before production deployment, scan the image:

# Trivy
trivy image ilum/core:<version>

Building the Image

Run commands from the root of the ilum-backend repository:

# Build the service
./gradlew clean build

# Build multi-platform Docker image
./gradlew dockerMultiplatformPush

Image Verification

Layer Analysis (Dive)
dive ilum/core:<version>
Software Bill of Materials (SBOM)
# Syft
syft ilum/core:<version> -o spdx-json > sbom.json

Image Contents — Details

Dockerfile Components
  • Base: Eclipse Temurin 21 JRE (via ilum/java:21.0.9_10-jre)
  • Application: Spring Boot REST API (v6.6.1)
  • Spark: Apache Spark 3.x binaries with cloud storage connectors
  • Observability: OpenLineage 1.37.0 for data lineage
  • Kyuubi Support: Kyuubi Spark SQL Engine 1.10.2 for serverless SQL
  • Example Jobs: Pre-packaged PySpark and Scala job examples
Cloud Storage Connectors
  • AWS S3: Hadoop AWS 3.3.4 + AWS SDK Bundle 1.12.262
  • Google Cloud Storage: GCS Connector (Hadoop3) 2.2.13
  • Azure Blob Storage: Hadoop Azure 3.3.4 + Azure Storage 7.0.1

API Documentation

The Ilum Core API is designed with an API-first approach.

Interactive API Documentation:

  • Swagger UI: http://<ilum-core>:9000/docs/api/
  • OpenAPI Spec: Available in the ilum-api-definition module

API Version Compatibility:

API VersionIlum Version
1.0.0<= 6.6.1

Architecture & Features

Job Types
Interactive Jobs

Long-running Spark applications that accept consecutive workload requests without re-initialization overhead. Ideal for:

  • Real-time data exploration
  • Multi-tenant query workloads
  • Serverless SQL via Kyuubi
Single Jobs

Traditional batch Spark jobs submitted via API. Supports:

  • Scheduled ETL pipelines
  • One-off data transformations
  • Integration with external orchestrators (Airflow, Argo Workflows)
Communication Modes
ModeUse CaseHA Support
KafkaProduction deployments requiring scalability and HA✅ Yes
gRPC (default)Development/testing environments, simplified setup❌ No
Cluster Support
  • Kubernetes: Primary target for production workloads
  • YARN: Legacy Hadoop clusters
  • Local: Development and testing only

Infrastructure Dependencies

Ilum Core requires the following components to operate:

  • MongoDB: Metadata storage (clusters, jobs, sessions)
  • Apache Kafka: Event streaming and inter-service communication (when using Kafka mode)
  • MinIO: S3-compatible storage for Spark JARs, Python archives, configuration files, and logs

All dependencies are automatically deployed when using the ilum-aio Helm chart.


Support and Feedback

Tag summary

Content type

Image

Digest

sha256:32104a9b1

Size

2.3 GB

Last updated

7 days ago

docker pull ilum/core:6.7.3