Deployment Guide
This guide walks you through deploying the Scientific Data Layer (SDL) using Docker Compose for local development, or Kubernetes for scalable cloud deployments.
Local Development with Docker Compose
Prerequisites
Directory Structure
sdl-platform/
├── services/
│ ├── catalog/
│ ├── repository/
│ ├── registry/
│ ├── storage/
│ ├── transfer/
│ └── workspace/
├── docker-compose.yml
└── .env
Quickstart
git clone https://code.ornl.gov/intersect/data/acl.git
cd acl
Services will be available at:
http://localhost:8000/dms/dcs/http://localhost:8000/dms/drs/http://localhost:8000/dms/reg/
Environment Variables
Create a .env file:
GRAPH_STORE_URL=http://graph:8080/blazegraph/namespace/sdl/sparql
OBJECT_STORE_URL=http://minio:9000
DEFAULT_NAMESPACE=http://example.org/ns/sdl/
JWT_SECRET=your-secret-token
Kubernetes Deployment (Advanced)
Requirements
Structure
- Each SDL service has a Helm chart or K8s manifest in
./k8s - Storage volumes are configured as PersistentVolumeClaims
- Config is injected via ConfigMaps and Secrets
Example Deployment
kubectl apply -f k8s/namespace.yaml
kubectl apply -f k8s/minio.yaml
kubectl apply -f k8s/blazegraph.yaml
kubectl apply -f k8s/catalog-service.yaml
Data Stores
SDL supports multiple storage backends:
| Layer | Options |
|---|---|
| RDF Graphs | Blazegraph, GraphDB |
| Binary Objects | MinIO, S3, Filesystem |
| Metadata | PostgreSQL (planned) |
Authentication
- Token-based auth via API Gateway or service middleware
- JWT tokens must be included in request headers:
Authorization: Bearer <your-token>
- RBAC rules defined per service or globally
Health Checks
Each service exposes:
/healthfor basic uptime check/metrics(planned) for Prometheus
Troubleshooting
- Use
docker compose logs -fto debug services - Check RDF graph store at
/blazegraphUI - Verify MinIO console at
http://localhost:9001
Additional Resources
This guide assumes a modular, service-oriented deployment of SDL. You may adapt the structure to suit monorepo or cloud-native requirements.