153 lines
3.1 KiB
YAML
153 lines
3.1 KiB
YAML
|
|
schemaVersion: 2.2.0
|
||
|
|
metadata:
|
||
|
|
name: whisper-distributed
|
||
|
|
version: 1.0.0
|
||
|
|
|
||
|
|
components:
|
||
|
|
# RabbitMQ
|
||
|
|
- name: rabbitmq
|
||
|
|
container:
|
||
|
|
image: rabbitmq:3-management
|
||
|
|
env:
|
||
|
|
- name: RABBITMQ_DEFAULT_USER
|
||
|
|
value: user
|
||
|
|
- name: RABBITMQ_DEFAULT_PASS
|
||
|
|
value: password
|
||
|
|
endpoints:
|
||
|
|
- name: amqp
|
||
|
|
targetPort: 5672
|
||
|
|
protocol: tcp
|
||
|
|
- name: management
|
||
|
|
targetPort: 15672
|
||
|
|
protocol: http
|
||
|
|
volumeMounts:
|
||
|
|
- name: rabbitmq-data
|
||
|
|
path: /var/lib/rabbitmq
|
||
|
|
|
||
|
|
# Receiver service
|
||
|
|
- name: receiver
|
||
|
|
container:
|
||
|
|
image: receiver:latest
|
||
|
|
endpoints:
|
||
|
|
- name: http
|
||
|
|
targetPort: 8000
|
||
|
|
protocol: http
|
||
|
|
volumeMounts:
|
||
|
|
- name: input-volume
|
||
|
|
path: /app/input
|
||
|
|
- name: shared-volume
|
||
|
|
path: /app/shared
|
||
|
|
|
||
|
|
# Splitter service
|
||
|
|
- name: splitter
|
||
|
|
container:
|
||
|
|
image: splitter:latest
|
||
|
|
endpoints:
|
||
|
|
- name: http
|
||
|
|
targetPort: 8000
|
||
|
|
protocol: http
|
||
|
|
volumeMounts:
|
||
|
|
- name: shared-volume
|
||
|
|
path: /app/shared
|
||
|
|
|
||
|
|
# Processor1 service
|
||
|
|
- name: processor1
|
||
|
|
container:
|
||
|
|
image: processor:latest
|
||
|
|
env:
|
||
|
|
- name: PROCESSOR_ID
|
||
|
|
value: "1"
|
||
|
|
endpoints:
|
||
|
|
- name: http
|
||
|
|
targetPort: 8000
|
||
|
|
protocol: http
|
||
|
|
volumeMounts:
|
||
|
|
- name: shared-volume
|
||
|
|
path: /app/shared
|
||
|
|
|
||
|
|
# Processor2 service
|
||
|
|
- name: processor2
|
||
|
|
container:
|
||
|
|
image: processor:latest
|
||
|
|
env:
|
||
|
|
- name: PROCESSOR_ID
|
||
|
|
value: "2"
|
||
|
|
endpoints:
|
||
|
|
- name: http
|
||
|
|
targetPort: 8000
|
||
|
|
protocol: http
|
||
|
|
volumeMounts:
|
||
|
|
- name: shared-volume
|
||
|
|
path: /app/shared
|
||
|
|
|
||
|
|
# Unifier service
|
||
|
|
- name: unifier
|
||
|
|
container:
|
||
|
|
image: unifier:latest
|
||
|
|
endpoints:
|
||
|
|
- name: http
|
||
|
|
targetPort: 8000
|
||
|
|
protocol: http
|
||
|
|
volumeMounts:
|
||
|
|
- name: shared-volume
|
||
|
|
path: /app/shared
|
||
|
|
- name: output-volume
|
||
|
|
path: /app/output
|
||
|
|
|
||
|
|
# Volumes
|
||
|
|
- name: rabbitmq-data
|
||
|
|
volume:
|
||
|
|
size: 1Gi
|
||
|
|
|
||
|
|
- name: shared-volume
|
||
|
|
volume:
|
||
|
|
size: 5Gi
|
||
|
|
|
||
|
|
- name: input-volume
|
||
|
|
volume:
|
||
|
|
size: 2Gi
|
||
|
|
|
||
|
|
- name: output-volume
|
||
|
|
volume:
|
||
|
|
size: 2Gi
|
||
|
|
|
||
|
|
# Build commands for each service
|
||
|
|
commands:
|
||
|
|
# Build commands
|
||
|
|
- id: build-receiver
|
||
|
|
exec:
|
||
|
|
component: receiver
|
||
|
|
workingDir: /projects/receiver
|
||
|
|
commandLine: docker build -t receiver:latest .
|
||
|
|
|
||
|
|
- id: build-splitter
|
||
|
|
exec:
|
||
|
|
component: splitter
|
||
|
|
workingDir: /projects/splitter
|
||
|
|
commandLine: docker build -t splitter:latest .
|
||
|
|
|
||
|
|
- id: build-processor
|
||
|
|
exec:
|
||
|
|
component: processor1
|
||
|
|
workingDir: /projects/processor
|
||
|
|
commandLine: docker build -t processor:latest .
|
||
|
|
|
||
|
|
- id: build-unifier
|
||
|
|
exec:
|
||
|
|
component: unifier
|
||
|
|
workingDir: /projects/unifier
|
||
|
|
commandLine: docker build -t unifier:latest .
|
||
|
|
|
||
|
|
# Composite build command
|
||
|
|
- id: build-all
|
||
|
|
composite:
|
||
|
|
commands:
|
||
|
|
- build-receiver
|
||
|
|
- build-splitter
|
||
|
|
- build-processor
|
||
|
|
- build-unifier
|
||
|
|
|
||
|
|
# Events
|
||
|
|
events:
|
||
|
|
preStart:
|
||
|
|
- build-all
|