ILUM Spark Launcher: Spark client for CI/CD pipelines (AWS, GCS, Azure)
10K+
Lightweight Apache Spark client images for external spark-submit operations with pre-configured cloud storage connectors.
ilum/spark-launcher is a lightweight Docker image designed for running spark-submit commands from external systems (e.g., CI/CD pipelines, scheduled jobs, Kubernetes CronJobs). Unlike full Spark runtime images, these launcher images contain only the Spark client binaries and essential cloud storage connectors, optimized for job submission rather than execution.
# Submit a Spark job to a remote cluster
docker run --rm \
-v $(pwd)/my-app.jar:/app.jar:ro \
ilum/spark-launcher:3.5.7 \
./bin/spark-submit \
--master k8s://https://kubernetes.default.svc:443 \
--deploy-mode cluster \
--class com.example.MyApp \
/app.jar
Note: For Ilum-managed Spark clusters, use the Ilum Core REST API instead of direct spark-submit.
3.5.7, latest — Spark 3.5.7 + Java 17 JRE3.5.3 — Spark 3.5.3 + Java 17 JRE3.5.1 — Spark 3.5.1 + Java 17 JRE3.5.0 — Spark 3.5.0 + Java 17 JRE3.4.1 — Spark 3.4.1 + Java 11 Alpine3.4.0 — Spark 3.4.0 + Java 11 AlpineSubmit compiled Spark applications from GitLab CI, GitHub Actions, or Jenkins:
# .gitlab-ci.yml example
deploy_spark_job:
image: ilum/spark-launcher:3.5.7
script:
- spark-submit --master k8s://... --deploy-mode cluster /builds/my-app.jar
Schedule periodic Spark job submissions:
apiVersion: batch/v1
kind: CronJob
metadata:
name: daily-etl
spec:
schedule: "0 2 * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: spark-submit
image: ilum/spark-launcher:3.5.7
command: ["/usr/local/spark/bin/spark-submit"]
args: ["--master", "k8s://...", ...]
Submit Spark jobs from non-JVM systems (Python, Node.js, shell scripts):
docker run --rm \
-v /path/to/app:/app:ro \
-e AWS_ACCESS_KEY_ID \
-e AWS_SECRET_ACCESS_KEY \
ilum/spark-launcher:3.5.7 \
spark-submit --master yarn /app/etl.jar
When submitting jobs to cloud storage, provide credentials via environment variables:
| Variable | Description |
|---|---|
| AWS_ACCESS_KEY_ID | AWS credentials for S3 access |
| AWS_SECRET_ACCESS_KEY | AWS secret key |
| GOOGLE_APPLICATION_CREDENTIALS | Path to GCS service account JSON |
| AZURE_STORAGE_ACCOUNT | Azure storage account name |
| AZURE_STORAGE_KEY | Azure storage access key |
CAUTION: Use Kubernetes Secrets or CI/CD secret management, never hardcode credentials!
| Container Path | Purpose |
|---|---|
/app | Mount your application JARs or Python scripts |
/conf | Mount custom Spark configuration files |
docker run --rm \
-v $(pwd)/target/my-app.jar:/app/my-app.jar:ro \
-v $(pwd)/spark-defaults.conf:/conf/spark-defaults.conf:ro \
ilum/spark-launcher:3.5.7 \
spark-submit --conf spark.config.location=/conf /app/my-app.jar
These images run as root by default since they only execute client commands. For enhanced security in restricted environments, user switching is supported:
# In your CI Dockerfile
FROM ilum/spark-launcher:3.5.7
USER 1000:1000
# Trivy
trivy image ilum/spark-launcher:3.5.7
Run command from the ilum-ops/docker/ilum-spark-launcher directory:
# Build specific Spark version
docker buildx build \
--platform linux/amd64,linux/arm64 \
-t ilum/spark-launcher:3.5.7 \
-f Dockerfile-spark-3.5.7 \
--push .
dive ilum/spark-launcher:3.5.7
# Syft
syft ilum/spark-launcher:3.5.7 -o spdx-json > sbom.json
spark-submit — job submission toolspark-shell — interactive Scala shell (not typically used in launcher context)pyspark — Python APIhadoop-aws-3.3.4.jaraws-java-sdk-bundle-1.12.262.jargcs-connector-hadoop3-2.2.13-shaded.jarhadoop-azure-3.3.4.jarazure-storage-7.0.1.jarjetty-util-ajax-9.4.43.v20210629.jarjetty-util-9.4.43.v20210629.jar| Feature | Launcher Image | Runtime Image (ilum/spark) |
|---|---|---|
| Purpose | Submit jobs | Execute jobs |
| Size | ~500MB | ~2GB+ |
| Python/R | Not included | Included |
| Drivers | Basic | Full ecosystem (Delta, Iceberg, etc.) |
| Use Case | CI/CD, CronJobs | Spark driver/executor pods |
Content type
Image
Digest
sha256:da930bd24…
Size
1.2 GB
Last updated
3 months ago
docker pull ilum/spark-launcher:spark-4.1.2