Skip to content

Cloud & Kubernetes

Simmate workers can easily be containerized and deployed to cloud environments like AWS, Google Cloud, or DigitalOcean using Docker and Kubernetes.

Docker

A Simmate worker only needs the Simmate python package and any external scientific software (like VASP, Quantum Espresso, or RDKit) installed.

Example Dockerfile

Simmate provides several example Dockerfiles in the envs/docker/ directory of the repository. A basic worker Dockerfile looks like this:

FROM python:3.10-slim

# Install system dependencies
RUN apt-get update && apt-get install -y build-essential

# Install Simmate
RUN pip install simmate

# Copy your configuration (or use environment variables)
COPY settings.yaml /root/.simmate/settings.yaml

# Start the worker by default
CMD ["simmate", "engine", "start-worker"]

Kubernetes

Deploying workers as a Kubernetes Deployment allows you to easily scale the number of workers up or down.

Example Deployment

apiVersion: apps/v1
kind: Deployment
metadata:
  name: simmate-worker
spec:
  replicas: 5
  selector:
    matchLabels:
      app: simmate-worker
  template:
    metadata:
      labels:
        app: simmate-worker
    spec:
      containers:
      - name: worker
        image: your-registry/simmate-worker:latest
        env:
        - name: SIMMATE_DATABASE_PASSWORD
          valueFrom:
            secretKeyRef:
              name: db-secrets
              key: password

Helm Charts

For more complex deployments (including the Web UI, Database, and Workers), Simmate provides Helm charts in envs/helm/. These charts help manage:

  • Scaling workers based on queue size.
  • Secret management for database credentials.
  • Ingress for the Web UI.

Serverless & Ephemeral Workers

Because Simmate workers can be configured to shut down when the queue is empty (--close-on-empty-queue), they are ideal for "serverless" or "auto-scaling" environments. You can trigger the creation of new worker pods/instances whenever new jobs are submitted to the database.