Skip to content
Snippets Groups Projects
Commit 827432ca authored by Benedikt Wetzel's avatar Benedikt Wetzel
Browse files

Enhance crd benchmark schemata by adding an resources field, small enhancements

parent 72006cf5
No related branches found
No related tags found
1 merge request!197Add support for long-running infrastructure components
This commit is part of merge request !197. Comments created here will be created in the context of that merge request.
Showing
with 439 additions and 381 deletions
...@@ -79,19 +79,21 @@ Resource Types: ...@@ -79,19 +79,21 @@ Resource Types:
</tr> </tr>
</thead> </thead>
<tbody><tr> <tbody><tr>
<td><b>name</b></td> <td><b><a href="#benchmarkspecinfrastructure">infrastructure</a></b></td>
<td>string</td> <td>object</td>
<td> <td>
This field exists only for technical reasons and should not be set by the user. The value of the field will be overwritten.<br/> (Optional) A list of file names that reference Kubernetes resources that are deployed on the cluster to create the required infrastructure.<br/>
<br/>
<i>Default</i>: map[]<br/>
</td> </td>
<td>false</td> <td>false</td>
</tr><tr> </tr><tr>
<td><b><a href="#benchmarkspecinfrastructureindex">infrastructure</a></b></td> <td><b>name</b></td>
<td>[]object</td> <td>string</td>
<td> <td>
A list of file names that reference Kubernetes resources that are deployed on the cluster to create the required infrastructure.<br/> This field exists only for technical reasons and should not be set by the user. The value of the field will be overwritten.<br/>
</td> </td>
<td>true</td> <td>false</td>
</tr><tr> </tr><tr>
<td><b><a href="#benchmarkspeckafkaconfig">kafkaConfig</a></b></td> <td><b><a href="#benchmarkspeckafkaconfig">kafkaConfig</a></b></td>
<td>object</td> <td>object</td>
...@@ -100,8 +102,8 @@ Resource Types: ...@@ -100,8 +102,8 @@ Resource Types:
</td> </td>
<td>true</td> <td>true</td>
</tr><tr> </tr><tr>
<td><b><a href="#benchmarkspecloadgeneratorindex">loadGenerator</a></b></td> <td><b><a href="#benchmarkspecloadgenerator">loadGenerator</a></b></td>
<td>[]object</td> <td>object</td>
<td> <td>
The loadGenResourceSets specifies all Kubernetes resources required to start the load generator. A resourceSet can be either a configMap resourceSet or a fileSystem resourceSet.<br/> The loadGenResourceSets specifies all Kubernetes resources required to start the load generator. A resourceSet can be either a configMap resourceSet or a fileSystem resourceSet.<br/>
</td> </td>
...@@ -121,8 +123,8 @@ Resource Types: ...@@ -121,8 +123,8 @@ Resource Types:
</td> </td>
<td>true</td> <td>true</td>
</tr><tr> </tr><tr>
<td><b><a href="#benchmarkspecsutindex">sut</a></b></td> <td><b><a href="#benchmarkspecsut">sut</a></b></td>
<td>[]object</td> <td>object</td>
<td> <td>
The appResourceSets specifies all Kubernetes resources required to start the sut. A resourceSet can be either a configMap resourceSet or a fileSystem resourceSet.<br/> The appResourceSets specifies all Kubernetes resources required to start the sut. A resourceSet can be either a configMap resourceSet or a fileSystem resourceSet.<br/>
</td> </td>
...@@ -131,11 +133,40 @@ Resource Types: ...@@ -131,11 +133,40 @@ Resource Types:
</table> </table>
### benchmark.spec.infrastructure[index] ### benchmark.spec.infrastructure
<sup><sup>[↩ Parent](#benchmarkspec)</sup></sup> <sup><sup>[↩ Parent](#benchmarkspec)</sup></sup>
(Optional) A list of file names that reference Kubernetes resources that are deployed on the cluster to create the required infrastructure.
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Required</th>
</tr>
</thead>
<tbody><tr>
<td><b><a href="#benchmarkspecinfrastructureresourcesindex">resources</a></b></td>
<td>[]object</td>
<td>
<br/>
<br/>
<i>Default</i>: []<br/>
</td>
<td>false</td>
</tr></tbody>
</table>
### benchmark.spec.infrastructure.resources[index]
<sup><sup>[↩ Parent](#benchmarkspecinfrastructure)</sup></sup>
<table> <table>
...@@ -148,14 +179,14 @@ Resource Types: ...@@ -148,14 +179,14 @@ Resource Types:
</tr> </tr>
</thead> </thead>
<tbody><tr> <tbody><tr>
<td><b><a href="#benchmarkspecinfrastructureindexconfigmap">configMap</a></b></td> <td><b><a href="#benchmarkspecinfrastructureresourcesindexconfigmap">configMap</a></b></td>
<td>object</td> <td>object</td>
<td> <td>
The configMap resourceSet loads the Kubernetes manifests from an Kubernetes configMap.<br/> The configMap resourceSet loads the Kubernetes manifests from an Kubernetes configMap.<br/>
</td> </td>
<td>false</td> <td>false</td>
</tr><tr> </tr><tr>
<td><b><a href="#benchmarkspecinfrastructureindexfilesystem">fileSystem</a></b></td> <td><b><a href="#benchmarkspecinfrastructureresourcesindexfilesystem">fileSystem</a></b></td>
<td>object</td> <td>object</td>
<td> <td>
The fileSystem resourceSet loads the Kubernetes manifests from the filesystem.<br/> The fileSystem resourceSet loads the Kubernetes manifests from the filesystem.<br/>
...@@ -165,8 +196,8 @@ Resource Types: ...@@ -165,8 +196,8 @@ Resource Types:
</table> </table>
### benchmark.spec.infrastructure[index].configMap ### benchmark.spec.infrastructure.resources[index].configMap
<sup><sup>[↩ Parent](#benchmarkspecinfrastructureindex)</sup></sup> <sup><sup>[↩ Parent](#benchmarkspecinfrastructureresourcesindex)</sup></sup>
...@@ -199,8 +230,8 @@ The configMap resourceSet loads the Kubernetes manifests from an Kubernetes conf ...@@ -199,8 +230,8 @@ The configMap resourceSet loads the Kubernetes manifests from an Kubernetes conf
</table> </table>
### benchmark.spec.infrastructure[index].fileSystem ### benchmark.spec.infrastructure.resources[index].fileSystem
<sup><sup>[↩ Parent](#benchmarkspecinfrastructureindex)</sup></sup> <sup><sup>[↩ Parent](#benchmarkspecinfrastructureresourcesindex)</sup></sup>
...@@ -323,11 +354,40 @@ Contains the Kafka configuration. ...@@ -323,11 +354,40 @@ Contains the Kafka configuration.
</table> </table>
### benchmark.spec.loadGenerator[index] ### benchmark.spec.loadGenerator
<sup><sup>[↩ Parent](#benchmarkspec)</sup></sup> <sup><sup>[↩ Parent](#benchmarkspec)</sup></sup>
The loadGenResourceSets specifies all Kubernetes resources required to start the load generator. A resourceSet can be either a configMap resourceSet or a fileSystem resourceSet.
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Required</th>
</tr>
</thead>
<tbody><tr>
<td><b><a href="#benchmarkspecloadgeneratorresourcesindex">resources</a></b></td>
<td>[]object</td>
<td>
<br/>
<br/>
<i>Default</i>: []<br/>
</td>
<td>false</td>
</tr></tbody>
</table>
### benchmark.spec.loadGenerator.resources[index]
<sup><sup>[↩ Parent](#benchmarkspecloadgenerator)</sup></sup>
<table> <table>
...@@ -340,14 +400,14 @@ Contains the Kafka configuration. ...@@ -340,14 +400,14 @@ Contains the Kafka configuration.
</tr> </tr>
</thead> </thead>
<tbody><tr> <tbody><tr>
<td><b><a href="#benchmarkspecloadgeneratorindexconfigmap">configMap</a></b></td> <td><b><a href="#benchmarkspecloadgeneratorresourcesindexconfigmap">configMap</a></b></td>
<td>object</td> <td>object</td>
<td> <td>
The configMap resourceSet loads the Kubernetes manifests from an Kubernetes configMap.<br/> The configMap resourceSet loads the Kubernetes manifests from an Kubernetes configMap.<br/>
</td> </td>
<td>false</td> <td>false</td>
</tr><tr> </tr><tr>
<td><b><a href="#benchmarkspecloadgeneratorindexfilesystem">fileSystem</a></b></td> <td><b><a href="#benchmarkspecloadgeneratorresourcesindexfilesystem">fileSystem</a></b></td>
<td>object</td> <td>object</td>
<td> <td>
The fileSystem resourceSet loads the Kubernetes manifests from the filesystem.<br/> The fileSystem resourceSet loads the Kubernetes manifests from the filesystem.<br/>
...@@ -357,8 +417,8 @@ Contains the Kafka configuration. ...@@ -357,8 +417,8 @@ Contains the Kafka configuration.
</table> </table>
### benchmark.spec.loadGenerator[index].configMap ### benchmark.spec.loadGenerator.resources[index].configMap
<sup><sup>[↩ Parent](#benchmarkspecloadgeneratorindex)</sup></sup> <sup><sup>[↩ Parent](#benchmarkspecloadgeneratorresourcesindex)</sup></sup>
...@@ -391,8 +451,8 @@ The configMap resourceSet loads the Kubernetes manifests from an Kubernetes conf ...@@ -391,8 +451,8 @@ The configMap resourceSet loads the Kubernetes manifests from an Kubernetes conf
</table> </table>
### benchmark.spec.loadGenerator[index].fileSystem ### benchmark.spec.loadGenerator.resources[index].fileSystem
<sup><sup>[↩ Parent](#benchmarkspecloadgeneratorindex)</sup></sup> <sup><sup>[↩ Parent](#benchmarkspecloadgeneratorresourcesindex)</sup></sup>
...@@ -587,11 +647,40 @@ The fileSystem resourceSet loads the Kubernetes manifests from the filesystem. ...@@ -587,11 +647,40 @@ The fileSystem resourceSet loads the Kubernetes manifests from the filesystem.
</table> </table>
### benchmark.spec.sut[index] ### benchmark.spec.sut
<sup><sup>[↩ Parent](#benchmarkspec)</sup></sup> <sup><sup>[↩ Parent](#benchmarkspec)</sup></sup>
The appResourceSets specifies all Kubernetes resources required to start the sut. A resourceSet can be either a configMap resourceSet or a fileSystem resourceSet.
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Required</th>
</tr>
</thead>
<tbody><tr>
<td><b><a href="#benchmarkspecsutresourcesindex">resources</a></b></td>
<td>[]object</td>
<td>
<br/>
<br/>
<i>Default</i>: []<br/>
</td>
<td>false</td>
</tr></tbody>
</table>
### benchmark.spec.sut.resources[index]
<sup><sup>[↩ Parent](#benchmarkspecsut)</sup></sup>
<table> <table>
...@@ -604,14 +693,14 @@ The fileSystem resourceSet loads the Kubernetes manifests from the filesystem. ...@@ -604,14 +693,14 @@ The fileSystem resourceSet loads the Kubernetes manifests from the filesystem.
</tr> </tr>
</thead> </thead>
<tbody><tr> <tbody><tr>
<td><b><a href="#benchmarkspecsutindexconfigmap">configMap</a></b></td> <td><b><a href="#benchmarkspecsutresourcesindexconfigmap">configMap</a></b></td>
<td>object</td> <td>object</td>
<td> <td>
The configMap resourceSet loads the Kubernetes manifests from an Kubernetes configMap.<br/> The configMap resourceSet loads the Kubernetes manifests from an Kubernetes configMap.<br/>
</td> </td>
<td>false</td> <td>false</td>
</tr><tr> </tr><tr>
<td><b><a href="#benchmarkspecsutindexfilesystem">fileSystem</a></b></td> <td><b><a href="#benchmarkspecsutresourcesindexfilesystem">fileSystem</a></b></td>
<td>object</td> <td>object</td>
<td> <td>
The fileSystem resourceSet loads the Kubernetes manifests from the filesystem.<br/> The fileSystem resourceSet loads the Kubernetes manifests from the filesystem.<br/>
...@@ -621,8 +710,8 @@ The fileSystem resourceSet loads the Kubernetes manifests from the filesystem. ...@@ -621,8 +710,8 @@ The fileSystem resourceSet loads the Kubernetes manifests from the filesystem.
</table> </table>
### benchmark.spec.sut[index].configMap ### benchmark.spec.sut.resources[index].configMap
<sup><sup>[↩ Parent](#benchmarkspecsutindex)</sup></sup> <sup><sup>[↩ Parent](#benchmarkspecsutresourcesindex)</sup></sup>
...@@ -655,8 +744,8 @@ The configMap resourceSet loads the Kubernetes manifests from an Kubernetes conf ...@@ -655,8 +744,8 @@ The configMap resourceSet loads the Kubernetes manifests from an Kubernetes conf
</table> </table>
### benchmark.spec.sut[index].fileSystem ### benchmark.spec.sut.resources[index].fileSystem
<sup><sup>[↩ Parent](#benchmarkspecsutindex)</sup></sup> <sup><sup>[↩ Parent](#benchmarkspecsutresourcesindex)</sup></sup>
......
...@@ -3,24 +3,25 @@ kind: benchmark ...@@ -3,24 +3,25 @@ kind: benchmark
metadata: metadata:
name: uc1-flink name: uc1-flink
spec: spec:
infrastructure: []
sut: sut:
- configMap: resources:
name: "benchmark-resources-uc1-flink" - configMap:
files: name: "benchmark-resources-uc1-flink"
- "uc1-flink/flink-configuration-configmap.yaml" files:
- "uc1-flink/taskmanager-deployment.yaml" - "uc1-flink/flink-configuration-configmap.yaml"
- "uc1-flink/taskmanager-service.yaml" - "uc1-flink/taskmanager-deployment.yaml"
- "uc1-flink/service-monitor.yaml" - "uc1-flink/taskmanager-service.yaml"
- "uc1-flink/jobmanager-service.yaml" - "uc1-flink/service-monitor.yaml"
- "uc1-flink/jobmanager-deployment.yaml" - "uc1-flink/jobmanager-service.yaml"
#- "uc1-flink/jobmanager-rest-service.yaml" - "uc1-flink/jobmanager-deployment.yaml"
#- "uc1-flink/jobmanager-rest-service.yaml"
loadGenerator: loadGenerator:
- configMap: resources:
name: "benchmark-resources-uc1-loadgen" - configMap:
files: name: "benchmark-resources-uc1-loadgen"
- "uc1-kstreams/uc1-load-generator-deployment.yaml" files:
- "uc1-kstreams/uc1-load-generator-service.yaml" - "uc1-kstreams/uc1-load-generator-deployment.yaml"
- "uc1-kstreams/uc1-load-generator-service.yaml"
resourceTypes: resourceTypes:
- typeName: "Instances" - typeName: "Instances"
patchers: patchers:
......
...@@ -3,21 +3,22 @@ kind: benchmark ...@@ -3,21 +3,22 @@ kind: benchmark
metadata: metadata:
name: uc1-kstreams name: uc1-kstreams
spec: spec:
infrastructure: []
sut: sut:
- configMap: resources:
name: "benchmark-resources-uc1-kstreams" - configMap:
files: name: "benchmark-resources-uc1-kstreams"
- "uc1-kstreams/uc1-kstreams-deployment.yaml" files:
- "uc1-kstreams/uc1-kstreams-service.yaml" - "uc1-kstreams/uc1-kstreams-deployment.yaml"
- "uc1-kstreams/uc1-jmx-configmap.yaml" - "uc1-kstreams/uc1-kstreams-service.yaml"
- "uc1-kstreams/uc1-service-monitor.yaml" - "uc1-kstreams/uc1-jmx-configmap.yaml"
- "uc1-kstreams/uc1-service-monitor.yaml"
loadGenerator: loadGenerator:
- configMap: resources:
name: "benchmark-resources-uc1-loadgen" - configMap:
files: name: "benchmark-resources-uc1-loadgen"
- "uc1-kstreams/uc1-load-generator-deployment.yaml" files:
- "uc1-kstreams/uc1-load-generator-service.yaml" - "uc1-kstreams/uc1-load-generator-deployment.yaml"
- "uc1-kstreams/uc1-load-generator-service.yaml"
resourceTypes: resourceTypes:
- typeName: "Instances" - typeName: "Instances"
patchers: patchers:
......
name: "uc1-kstreams" name: "uc1-kstreams"
infrastructure: [] sut:
appResourceSet: resources:
- configMap: - configMap:
name: "benchmark-resources-uc1-kstreams" name: "benchmark-resources-uc1-kstreams"
files: files:
- "uc1-kstreams/uc1-kstreams-deployment.yaml" - "uc1-kstreams/uc1-kstreams-deployment.yaml"
- "uc1-kstreams/uc1-kstreams-service.yaml" - "uc1-kstreams/uc1-kstreams-service.yaml"
- "uc1-kstreams/uc1-jmx-configmap.yaml" - "uc1-kstreams/uc1-jmx-configmap.yaml"
- "uc1-kstreams/uc1-service-monitor.yaml" - "uc1-kstreams/uc1-service-monitor.yaml"
loadGenResourceSet: loadGenerator:
- configMap: resources:
name: "benchmark-resources-uc1-loadgen" - configMap:
files: name: "benchmark-resources-uc1-loadgen"
- "uc1-kstreams/uc1-load-generator-deployment.yaml" files:
- "uc1-kstreams/uc1-load-generator-service.yaml" - "uc1-kstreams/uc1-load-generator-deployment.yaml"
- "uc1-kstreams/uc1-load-generator-service.yaml"
resourceTypes: resourceTypes:
- typeName: "Instances" - typeName: "Instances"
patchers: patchers:
......
...@@ -3,24 +3,25 @@ kind: benchmark ...@@ -3,24 +3,25 @@ kind: benchmark
metadata: metadata:
name: uc2-flink name: uc2-flink
spec: spec:
infrastructure: []
sut: sut:
- configMap: resources:
name: "benchmark-resources-uc2-flink" - configMap:
files: name: "benchmark-resources-uc2-flink"
- "uc2-flink/flink-configuration-configmap.yaml" files:
- "uc2-flink/taskmanager-deployment.yaml" - "uc2-flink/flink-configuration-configmap.yaml"
- "uc2-flink/taskmanager-service.yaml" - "uc2-flink/taskmanager-deployment.yaml"
- "uc2-flink/service-monitor.yaml" - "uc2-flink/taskmanager-service.yaml"
- "uc2-flink/jobmanager-service.yaml" - "uc2-flink/service-monitor.yaml"
- "uc2-flink/jobmanager-deployment.yaml" - "uc2-flink/jobmanager-service.yaml"
#- "uc2-flink/jobmanager-rest-service.yaml" - "uc2-flink/jobmanager-deployment.yaml"
#- "uc2-flink/jobmanager-rest-service.yaml"
loadGenerator: loadGenerator:
- configMap: resources:
name: "benchmark-resources-uc2-loadgen" - configMap:
files: name: "benchmark-resources-uc2-loadgen"
- "uc2-kstreams/uc2-load-generator-deployment.yaml" files:
- "uc2-kstreams/uc2-load-generator-service.yaml" - "uc2-kstreams/uc2-load-generator-deployment.yaml"
- "uc2-kstreams/uc2-load-generator-service.yaml"
resourceTypes: resourceTypes:
- typeName: "Instances" - typeName: "Instances"
patchers: patchers:
......
...@@ -3,8 +3,8 @@ kind: benchmark ...@@ -3,8 +3,8 @@ kind: benchmark
metadata: metadata:
name: uc2-kstreams name: uc2-kstreams
spec: spec:
infrastructure: []
sut: sut:
resources:
- configMap: - configMap:
name: "benchmark-resources-uc2-kstreams" name: "benchmark-resources-uc2-kstreams"
files: files:
...@@ -13,11 +13,12 @@ spec: ...@@ -13,11 +13,12 @@ spec:
- "uc2-kstreams/uc2-jmx-configmap.yaml" - "uc2-kstreams/uc2-jmx-configmap.yaml"
- "uc2-kstreams/uc2-service-monitor.yaml" - "uc2-kstreams/uc2-service-monitor.yaml"
loadGenerator: loadGenerator:
- configMap: resources:
name: "benchmark-resources-uc2-loadgen" - configMap:
files: name: "benchmark-resources-uc2-loadgen"
- "uc2-kstreams/uc2-load-generator-deployment.yaml" files:
- "uc2-kstreams/uc2-load-generator-service.yaml" - "uc2-kstreams/uc2-load-generator-deployment.yaml"
- "uc2-kstreams/uc2-load-generator-service.yaml"
resourceTypes: resourceTypes:
- typeName: "Instances" - typeName: "Instances"
patchers: patchers:
......
name: "uc2-kstreams" name: "uc2-kstreams"
infrastructure: []
sut: sut:
- configMap: resources:
name: "benchmark-resources-uc2-kstreams" - configMap:
files: name: "benchmark-resources-uc2-kstreams"
- "uc2-kstreams/uc2-kstreams-deployment.yaml" files:
- "uc2-kstreams/uc2-kstreams-service.yaml" - "uc2-kstreams/uc2-kstreams-deployment.yaml"
- "uc2-kstreams/uc2-jmx-configmap.yaml" - "uc2-kstreams/uc2-kstreams-service.yaml"
- "uc2-kstreams/uc2-service-monitor.yaml" - "uc2-kstreams/uc2-jmx-configmap.yaml"
- "uc2-kstreams/uc2-service-monitor.yaml"
loadGenerator: loadGenerator:
- configMap: resources:
name: "benchmark-resources-uc2-loadgen" - configMap:
files: name: "benchmark-resources-uc2-loadgen"
- "uc2-kstreams/uc2-load-generator-deployment.yaml" files:
- "uc2-kstreams/uc2-load-generator-service.yaml" - "uc2-kstreams/uc2-load-generator-deployment.yaml"
- "uc2-kstreams/uc2-load-generator-service.yaml"
resourceTypes: resourceTypes:
- typeName: "Instances" - typeName: "Instances"
patchers: patchers:
......
apiVersion: theodolite.com/v1
kind: execution
metadata:
name: uc3-flink-template
spec:
benchmark: "uc3-flink"
load:
loadType: "NumSensors"
loadValues: [100]
resources:
resourceType: "Instances"
resourceValues: [1]
slos:
- sloType: "lag trend percent"
prometheusUrl: "http://prometheus-operated:9090"
offset: 0
properties:
percent: 0.05
externalSloUrl: "http://localhost:80/evaluate-slope"
warmup: 60 # in seconds
execution:
strategy: "LinearSearch"
duration: 300 # in seconds
repetitions: 1
loadGenerationDelay: 30 # in seconds
restrictions:
- "LowerBound"
configOverrides:
- patcher:
type: "ResourceLimitPatcher"
resource: "uc3-flink/jobmanager-deployment.yaml"
properties:
container: "jobmanager"
limitedResource: "cpu"
value: "200m"
- patcher:
type: "ResourceLimitPatcher"
resource: "uc3-flink/jobmanager-deployment.yaml"
properties:
container: "jobmanager"
limitedResource: "memory"
value: "1Gi"
- patcher:
type: "ResourceLimitPatcher"
resource: "uc3-flink/taskmanager-deployment.yaml"
properties:
container: "taskmanager"
limitedResource: "cpu"
value: "200m"
- patcher:
type: "ResourceLimitPatcher"
resource: "uc3-flink/taskmanager-deployment.yaml"
properties:
container: "taskmanager"
limitedResource: "memory"
value: "1Gi"
\ No newline at end of file
...@@ -3,24 +3,25 @@ kind: benchmark ...@@ -3,24 +3,25 @@ kind: benchmark
metadata: metadata:
name: uc3-flink name: uc3-flink
spec: spec:
infrastructure: []
sut: sut:
- configMap: resources:
name: "benchmark-resources-uc3-flink" - configMap:
files: name: "benchmark-resources-uc3-flink"
- "uc3-flink/flink-configuration-configmap.yaml" files:
- "uc3-flink/taskmanager-deployment.yaml" - "uc3-flink/flink-configuration-configmap.yaml"
- "uc3-flink/taskmanager-service.yaml" - "uc3-flink/taskmanager-deployment.yaml"
- "uc3-flink/service-monitor.yaml" - "uc3-flink/taskmanager-service.yaml"
- "uc3-flink/jobmanager-service.yaml" - "uc3-flink/service-monitor.yaml"
- "uc3-flink/jobmanager-deployment.yaml" - "uc3-flink/jobmanager-service.yaml"
#- "uc3-flink/jobmanager-rest-service.yaml" - "uc3-flink/jobmanager-deployment.yaml"
#- "uc3-flink/jobmanager-rest-service.yaml"
loadGenerator: loadGenerator:
- configMap: resources:
name: "benchmark-resources-uc3-loadgen" - configMap:
files: name: "benchmark-resources-uc3-loadgen"
- "uc3-kstreams/uc3-load-generator-deployment.yaml" files:
- "uc3-kstreams/uc3-load-generator-service.yaml" - "uc3-kstreams/uc3-load-generator-deployment.yaml"
- "uc3-kstreams/uc3-load-generator-service.yaml"
resourceTypes: resourceTypes:
- typeName: "Instances" - typeName: "Instances"
patchers: patchers:
......
...@@ -3,21 +3,22 @@ kind: benchmark ...@@ -3,21 +3,22 @@ kind: benchmark
metadata: metadata:
name: uc3-kstreams name: uc3-kstreams
spec: spec:
infrastructure: []
sut: sut:
- configMap: resources:
name: "benchmark-resources-uc3-kstreams" - configMap:
files: name: "benchmark-resources-uc3-kstreams"
- "uc3-kstreams/uc3-kstreams-deployment.yaml" files:
- "uc3-kstreams/uc3-kstreams-service.yaml" - "uc3-kstreams/uc3-kstreams-deployment.yaml"
- "uc3-kstreams/uc3-jmx-configmap.yaml" - "uc3-kstreams/uc3-kstreams-service.yaml"
- "uc3-kstreams/uc3-service-monitor.yaml" - "uc3-kstreams/uc3-jmx-configmap.yaml"
- "uc3-kstreams/uc3-service-monitor.yaml"
loadGenerator: loadGenerator:
- configMap: resources:
name: "benchmark-resources-uc3-loadgen" - configMap:
files: name: "benchmark-resources-uc3-loadgen"
- "uc3-kstreams/uc3-load-generator-deployment.yaml" files:
- "uc3-kstreams/uc3-load-generator-service.yaml" - "uc3-kstreams/uc3-load-generator-deployment.yaml"
- "uc3-kstreams/uc3-load-generator-service.yaml"
resourceTypes: resourceTypes:
- typeName: "Instances" - typeName: "Instances"
patchers: patchers:
......
name: "uc3-kstreams" name: "uc3-kstreams"
infrastructure: []
sut: sut:
- configMap: resources:
name: "benchmark-resources-uc3-kstreams" - configMap:
files: name: "benchmark-resources-uc3-kstreams"
- "uc3-kstreams/uc3-kstreams-deployment.yaml" files:
- "uc3-kstreams/uc3-kstreams-service.yaml" - "uc3-kstreams/uc3-kstreams-deployment.yaml"
- "uc3-kstreams/uc3-jmx-configmap.yaml" - "uc3-kstreams/uc3-kstreams-service.yaml"
- "uc3-kstreams/uc3-service-monitor.yaml" - "uc3-kstreams/uc3-jmx-configmap.yaml"
- "uc3-kstreams/uc3-service-monitor.yaml"
loadGenerator: loadGenerator:
- configMap: resources:
name: "benchmark-resources-uc3-loadgen" - configMap:
files: name: "benchmark-resources-uc3-loadgen"
- "uc3-kstreams/uc3-load-generator-deployment.yaml" files:
- "uc3-kstreams/uc3-load-generator-service.yaml" - "uc3-kstreams/uc3-load-generator-deployment.yaml"
- "uc3-kstreams/uc3-load-generator-service.yaml"
resourceTypes: resourceTypes:
- typeName: "Instances" - typeName: "Instances"
patchers: patchers:
......
...@@ -3,24 +3,25 @@ kind: benchmark ...@@ -3,24 +3,25 @@ kind: benchmark
metadata: metadata:
name: uc4-flink name: uc4-flink
spec: spec:
infrastructure: []
sut: sut:
- configMap: resources:
name: "benchmark-resources-uc4-flink" - configMap:
files: name: "benchmark-resources-uc4-flink"
- "uc4-flink/flink-configuration-configmap.yaml" files:
- "uc4-flink/taskmanager-deployment.yaml" - "uc4-flink/flink-configuration-configmap.yaml"
- "uc4-flink/taskmanager-service.yaml" - "uc4-flink/taskmanager-deployment.yaml"
- "uc4-flink/service-monitor.yaml" - "uc4-flink/taskmanager-service.yaml"
- "uc4-flink/jobmanager-service.yaml" - "uc4-flink/service-monitor.yaml"
- "uc4-flink/jobmanager-deployment.yaml" - "uc4-flink/jobmanager-service.yaml"
#- "uc4-flink/jobmanager-rest-service.yaml" - "uc4-flink/jobmanager-deployment.yaml"
#- "uc4-flink/jobmanager-rest-service.yaml"
loadGenerator: loadGenerator:
- configMap: resources:
name: "benchmark-resources-uc4-loadgen" - configMap:
files: name: "benchmark-resources-uc4-loadgen"
- "uc4-kstreams/uc4-load-generator-deployment.yaml" files:
- "uc4-kstreams/uc4-load-generator-service.yaml" - "uc4-kstreams/uc4-load-generator-deployment.yaml"
- "uc4-kstreams/uc4-load-generator-service.yaml"
resourceTypes: resourceTypes:
- typeName: "Instances" - typeName: "Instances"
patchers: patchers:
......
...@@ -3,21 +3,22 @@ kind: benchmark ...@@ -3,21 +3,22 @@ kind: benchmark
metadata: metadata:
name: uc4-kstreams name: uc4-kstreams
spec: spec:
infrastructure: []
sut: sut:
- configMap: resources:
name: "benchmark-resources-uc4-kstreams" - configMap:
files: name: "benchmark-resources-uc4-kstreams"
- "uc4-kstreams/uc4-kstreams-deployment.yaml" files:
- "uc4-kstreams/uc4-kstreams-service.yaml" - "uc4-kstreams/uc4-kstreams-deployment.yaml"
- "uc4-kstreams/uc4-jmx-configmap.yaml" - "uc4-kstreams/uc4-kstreams-service.yaml"
- "uc4-kstreams/uc4-jmx-configmap.yaml"
- "uc4-kstreams/uc4-service-monitor.yaml" - "uc4-kstreams/uc4-service-monitor.yaml"
loadGenerator: loadGenerator:
- configMap: resources:
name: "benchmark-resources-uc4-loadgen" - configMap:
files: name: "benchmark-resources-uc4-loadgen"
- "uc4-kstreams/uc4-load-generator-deployment.yaml" files:
- "uc4-kstreams/uc4-load-generator-service.yaml" - "uc4-kstreams/uc4-load-generator-deployment.yaml"
- "uc4-kstreams/uc4-load-generator-service.yaml"
resourceTypes: resourceTypes:
- typeName: "Instances" - typeName: "Instances"
patchers: patchers:
......
name: "uc4-kstreams" name: "uc4-kstreams"
infrastructure: []
sut: sut:
- configMap: resources:
name: "benchmark-resources-uc4-kstreams" - configMap:
files: name: "benchmark-resources-uc4-kstreams"
- "uc4-kstreams/uc4-kstreams-deployment.yaml" files:
- "uc4-kstreams/uc4-kstreams-service.yaml" - "uc4-kstreams/uc4-kstreams-deployment.yaml"
- "uc4-kstreams/uc4-jmx-configmap.yaml" - "uc4-kstreams/uc4-kstreams-service.yaml"
- "uc4-kstreams/uc4-service-monitor.yaml" - "uc4-kstreams/uc4-jmx-configmap.yaml"
- "uc4-kstreams/uc4-service-monitor.yaml"
loadGenerator: loadGenerator:
- configMap: resources:
name: "benchmark-resources-uc4-loadgen" - configMap:
files: name: "benchmark-resources-uc4-loadgen"
- "uc4-kstreams/uc4-load-generator-deployment.yaml" files:
- "uc4-kstreams/uc4-load-generator-service.yaml" - "uc4-kstreams/uc4-load-generator-deployment.yaml"
- "uc4-kstreams/uc4-load-generator-service.yaml"
resourceTypes: resourceTypes:
- typeName: "Instances" - typeName: "Instances"
patchers: patchers:
......
...@@ -20,110 +20,123 @@ spec: ...@@ -20,110 +20,123 @@ spec:
properties: properties:
spec: spec:
type: object type: object
required: ["infrastructure", "sut", "loadGenerator", "resourceTypes", "loadTypes", "kafkaConfig"] required: ["sut", "loadGenerator", "resourceTypes", "loadTypes", "kafkaConfig"]
properties: properties:
name: name:
description: This field exists only for technical reasons and should not be set by the user. The value of the field will be overwritten. description: This field exists only for technical reasons and should not be set by the user. The value of the field will be overwritten.
type: string type: string
infrastructure: infrastructure:
description: A list of file names that reference Kubernetes resources that are deployed on the cluster to create the required infrastructure. description: (Optional) A list of file names that reference Kubernetes resources that are deployed on the cluster to create the required infrastructure.
type: array type: object
items: default: {}
type: object properties:
oneOf: resources:
- required: [ configMap ] type: array
- required: [ fileSystem ] default: []
properties: items:
configMap:
description: The configMap resourceSet loads the Kubernetes manifests from an Kubernetes configMap.
type: object
properties:
name:
description: The name of the configMap
type: string
files:
description: (Optional) Specifies which files from the configMap should be loaded. If this field is not set, all files are loaded.
type: array
items:
type: string
fileSystem:
description: The fileSystem resourceSet loads the Kubernetes manifests from the filesystem.
type: object type: object
oneOf:
- required: [ configMap ]
- required: [ fileSystem ]
properties: properties:
path: configMap:
description: The path to the folder which contains the Kubernetes manifests files. description: The configMap resourceSet loads the Kubernetes manifests from an Kubernetes configMap.
type: string type: object
files: properties:
description: (Optional) Specifies which files from the configMap should be loaded. If this field is not set, all files are loaded. name:
type: array description: The name of the configMap
items: type: string
type: string files:
description: (Optional) Specifies which files from the configMap should be loaded. If this field is not set, all files are loaded.
type: array
items:
type: string
fileSystem:
description: The fileSystem resourceSet loads the Kubernetes manifests from the filesystem.
type: object
properties:
path:
description: The path to the folder which contains the Kubernetes manifests files.
type: string
files:
description: (Optional) Specifies which files from the configMap should be loaded. If this field is not set, all files are loaded.
type: array
items:
type: string
sut: sut:
description: The appResourceSets specifies all Kubernetes resources required to start the sut. A resourceSet can be either a configMap resourceSet or a fileSystem resourceSet. description: The appResourceSets specifies all Kubernetes resources required to start the sut. A resourceSet can be either a configMap resourceSet or a fileSystem resourceSet.
type: array type: object
items: properties:
type: object resources:
oneOf: type: array
- required: [ configMap ] default: [ ]
- required: [ fileSystem ] items:
properties:
configMap:
description: The configMap resourceSet loads the Kubernetes manifests from an Kubernetes configMap.
type: object
properties:
name:
description: The name of the configMap
type: string
files:
description: (Optional) Specifies which files from the configMap should be loaded. If this field is not set, all files are loaded.
type: array
items:
type: string
fileSystem:
description: The fileSystem resourceSet loads the Kubernetes manifests from the filesystem.
type: object type: object
oneOf:
- required: [ configMap ]
- required: [ fileSystem ]
properties: properties:
path: configMap:
description: The path to the folder which contains the Kubernetes manifests files. description: The configMap resourceSet loads the Kubernetes manifests from an Kubernetes configMap.
type: string type: object
files: properties:
description: (Optional) Specifies which files from the configMap should be loaded. If this field is not set, all files are loaded. name:
type: array description: The name of the configMap
items: type: string
type: string files:
description: (Optional) Specifies which files from the configMap should be loaded. If this field is not set, all files are loaded.
type: array
items:
type: string
fileSystem:
description: The fileSystem resourceSet loads the Kubernetes manifests from the filesystem.
type: object
properties:
path:
description: The path to the folder which contains the Kubernetes manifests files.
type: string
files:
description: (Optional) Specifies which files from the configMap should be loaded. If this field is not set, all files are loaded.
type: array
items:
type: string
loadGenerator: loadGenerator:
description: The loadGenResourceSets specifies all Kubernetes resources required to start the load generator. A resourceSet can be either a configMap resourceSet or a fileSystem resourceSet. description: The loadGenResourceSets specifies all Kubernetes resources required to start the load generator. A resourceSet can be either a configMap resourceSet or a fileSystem resourceSet.
type: array type: object
items: properties:
type: object resources:
oneOf: type: array
- required: [ configMap ] default: []
- required: [ fileSystem ] items:
properties:
configMap:
description: The configMap resourceSet loads the Kubernetes manifests from an Kubernetes configMap.
type: object
properties:
name:
description: The name of the configMap
type: string
files:
description: (Optional) Specifies which files from the configMap should be loaded. If this field is not set, all files are loaded.
type: array
items:
type: string
fileSystem:
description: The fileSystem resourceSet loads the Kubernetes manifests from the filesystem.
type: object type: object
oneOf:
- required: [ configMap ]
- required: [ fileSystem ]
properties: properties:
path: configMap:
description: The path to the folder which contains the Kubernetes manifests files. description: The configMap resourceSet loads the Kubernetes manifests from an Kubernetes configMap.
type: string type: object
files: properties:
description: (Optional) Specifies which files from the configMap should be loaded. If this field is not set, all files are loaded. name:
type: array description: The name of the configMap
items: type: string
type: string files:
description: (Optional) Specifies which files from the configMap should be loaded. If this field is not set, all files are loaded.
type: array
items:
type: string
fileSystem:
description: The fileSystem resourceSet loads the Kubernetes manifests from the filesystem.
type: object
properties:
path:
description: The path to the folder which contains the Kubernetes manifests files.
type: string
files:
description: (Optional) Specifies which files from the configMap should be loaded. If this field is not set, all files are loaded.
type: array
items:
type: string
resourceTypes: resourceTypes:
description: A list of resource types that can be scaled for this `benchmark` resource. For each resource type the concrete values are defined in the `execution` object. description: A list of resource types that can be scaled for this `benchmark` resource. For each resource type the concrete values are defined in the `execution` object.
type: array type: array
......
...@@ -3,18 +3,19 @@ kind: benchmark ...@@ -3,18 +3,19 @@ kind: benchmark
metadata: metadata:
name: uc1-kstreams name: uc1-kstreams
spec: spec:
infrastructure: []
sut: sut:
- configMap: resources:
name: "example-configmap" - configMap:
files: name: "example-configmap"
- "uc1-kstreams-deployment.yaml" files:
- "uc1-kstreams-deployment.yaml"
loadGenerator: loadGenerator:
- configMap: resources:
name: "example-configmap" - configMap:
files: name: "example-configmap"
- uc1-load-generator-service.yaml files:
- uc1-load-generator-deployment.yaml - uc1-load-generator-service.yaml
- uc1-load-generator-deployment.yaml
resourceTypes: resourceTypes:
- typeName: "Instances" - typeName: "Instances"
patchers: patchers:
......
apiVersion: v1
kind: Service
metadata:
name: test-service
labels:
app: test-service
spec:
type: ClusterIP
clusterIP: None
selector:
app: test
ports:
- name: coordination
port: 5701
targetPort: 5701
protocol: TCP
name: "uc1-kstreams" name: "uc1-kstreams"
infrastructure: [] infrastructure: []
sut: sut:
- configMap: resources:
name: "example-configmap" - configMap:
files: name: "example-configmap"
- "uc1-kstreams-deployment.yaml" files:
- "uc1-kstreams-deployment.yaml"
loadGenerator: loadGenerator:
- configMap: resources:
name: "example-configmap" - configMap:
files: name: "example-configmap"
- uc1-load-generator-service.yaml files:
- uc1-load-generator-deployment.yaml - uc1-load-generator-service.yaml
- uc1-load-generator-deployment.yaml
resourceTypes: resourceTypes:
- typeName: "Instances" - typeName: "Instances"
patchers: patchers:
......
...@@ -40,9 +40,9 @@ class KubernetesBenchmark : KubernetesResource, Benchmark { ...@@ -40,9 +40,9 @@ class KubernetesBenchmark : KubernetesResource, Benchmark {
lateinit var resourceTypes: List<TypeName> lateinit var resourceTypes: List<TypeName>
lateinit var loadTypes: List<TypeName> lateinit var loadTypes: List<TypeName>
lateinit var kafkaConfig: KafkaConfig lateinit var kafkaConfig: KafkaConfig
lateinit var infrastructure: List<ResourceSets> lateinit var infrastructure: Resources
lateinit var sut: List<ResourceSets> lateinit var sut: Resources
lateinit var loadGenerator: List<ResourceSets> lateinit var loadGenerator: Resources
var namespace = System.getenv("NAMESPACE") ?: DEFAULT_NAMESPACE var namespace = System.getenv("NAMESPACE") ?: DEFAULT_NAMESPACE
@Transient @Transient
...@@ -59,14 +59,14 @@ class KubernetesBenchmark : KubernetesResource, Benchmark { ...@@ -59,14 +59,14 @@ class KubernetesBenchmark : KubernetesResource, Benchmark {
override fun setupInfrastructure() { override fun setupInfrastructure() {
val kubernetesManager = K8sManager(this.client) val kubernetesManager = K8sManager(this.client)
loadKubernetesResources(this.infrastructure) loadKubernetesResources(this.infrastructure.resources)
.map{it.second} .map{it.second}
.forEach { kubernetesManager.deploy(it) } .forEach { kubernetesManager.deploy(it) }
} }
override fun teardownInfrastructure() { override fun teardownInfrastructure() {
val kubernetesManager = K8sManager(this.client) val kubernetesManager = K8sManager(this.client)
loadKubernetesResources(this.infrastructure) loadKubernetesResources(this.infrastructure.resources)
.map{it.second} .map{it.second}
.forEach { kubernetesManager.remove(it) } .forEach { kubernetesManager.remove(it) }
} }
...@@ -89,8 +89,8 @@ class KubernetesBenchmark : KubernetesResource, Benchmark { ...@@ -89,8 +89,8 @@ class KubernetesBenchmark : KubernetesResource, Benchmark {
): BenchmarkDeployment { ): BenchmarkDeployment {
logger.info { "Using $namespace as namespace." } logger.info { "Using $namespace as namespace." }
val appResources = loadKubernetesResources(this.sut) val appResources = loadKubernetesResources(this.sut.resources)
val loadGenResources = loadKubernetesResources(this.loadGenerator) val loadGenResources = loadKubernetesResources(this.loadGenerator.resources)
val patcherFactory = PatcherFactory() val patcherFactory = PatcherFactory()
......
package theodolite.benchmark
import com.fasterxml.jackson.databind.annotation.JsonDeserialize
import com.fasterxml.jackson.databind.annotation.JsonSerialize
import io.quarkus.runtime.annotations.RegisterForReflection
@JsonDeserialize
@RegisterForReflection
class Resources {
lateinit var resources: List<ResourceSets>
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment