Sermos Yaml

Definition of the sermos.yaml file. This is only relevant/used for managed deployments through Sermos.ai. If self-hosting, safely disregard this yaml format, no sermos.yaml is required for your application.

If using, a basic file may look like:

imageConfig:
    - name: private-worker-image
      imageUri: rhoai/private-worker-image:latest
      registryDomain: index.docker.io/v1/
      registryUser: rhoai
      registryPassword: abc123
    - name: public-api-image
      imageUri: myregistry/public-api-image

environmentVariables:
    - name: GLOBAL_ENV_VAR
        value: globally-available-env-var

serviceConfig:
    - name: demo-api
      serviceType: external
      serviceId: ${SERVICE_ID_API}  # Rendered using `sermos deploy` if available in the environment.
      imageName: public-api-image
      command: gunicorn --log-level info -k gevent -b 0.0.0.0:5000 sermos_demo_client.app:create_app()
      port: 5000
      replicaCount: 1
      cpuLimit: 0.5
      memoryLimit: 0.5
      environmentVariables:
        - name: FLASK_SECRET_KEY
          value: ${FLASK_SECRET_KEY}
    - name: sermos-worker
      serviceType: celery-worker
      serviceId: ${SERVICE_ID_WORKER}
      imageName: private-worker-image
      command: celery -A sermos_demo_client.celery worker --without-gossip --without-mingle -c '1' -l INFO --queue default-task-queue
      replicaCount: 1
      cpuLimit: 0.5
      memoryLimit: 0.5
      registeredTasks:
        - handler: sermos_demo_client.workers.demo_worker.demo_worker_task
        - handler: sermos_demo_client.workers.demo_worker.demo_model_task
      environmentVariables:
        - name: WORKER_NAME
          value: sermos-worker

pipelines:
    demo-pipeline:
        name: demo-pipeline
        description: Demo Pipeline.
        schemaVersion: 1
        config:
            dagAdjacency:
                node_a:
                    - node_b
                    - node_c
            metadata:
                maxRetry: 3
                maxTtl: 60
                queue: default-task-queue
            taskDefinitions:
                node_a:
                    handler: sermos_demo_client.workers.demo_pipeline.demo_pipeline_node_a
                node_b:
                    handler: sermos_demo_client.workers.demo_pipeline.demo_pipeline_node_b
                    queue: node-b-queue
                node_c:
                    handler: sermos_demo_client.workers.demo_pipeline.demo_pipeline_node_c

scheduledTasks:
    demo-model-task:
        name: Demo Model Task
        enabled: true
        config:
            scheduleType: interval
            task: sermos_demo_client.workers.demo_worker.demo_model_task
            queue: default-task-queue
            schedule:
                every: 60
                period: seconds
        schemaVersion: 1

Yaml Format

sermos_yaml.SermosYamlSchema = <class 'sermos.sermos_yaml.SermosYamlSchema'>