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

Merge branch 'master' of git.se.informatik.uni-kiel.de:she/theodolite into introduce-k8s-events

parents dcab3da4 ffa2212f
No related branches found
No related tags found
1 merge request!173Introduce events in order to make it possible to see simple log message with...
...@@ -2,13 +2,13 @@ ...@@ -2,13 +2,13 @@
This project uses Quarkus, the Supersonic Subatomic Java Framework. This project uses Quarkus, the Supersonic Subatomic Java Framework.
If you want to learn more about Quarkus, please visit its website: https://quarkus.io/ . If you want to learn more about Quarkus, please visit its website: <https://quarkus.io/> .
## Running the application in dev mode ## Running the application in dev mode
You can run your application in dev mode using: You can run your application in dev mode using:
```shell script ```sh
./gradlew quarkusDev ./gradlew quarkusDev
``` ```
...@@ -16,7 +16,7 @@ You can run your application in dev mode using: ...@@ -16,7 +16,7 @@ You can run your application in dev mode using:
The application can be packaged using: The application can be packaged using:
```shell script ```sh
./gradlew build ./gradlew build
``` ```
...@@ -25,7 +25,7 @@ an _über-jar_ as the dependencies are copied into the `build/lib` directory. ...@@ -25,7 +25,7 @@ an _über-jar_ as the dependencies are copied into the `build/lib` directory.
If you want to build an _über-jar_, execute the following command: If you want to build an _über-jar_, execute the following command:
```shell script ```sh
./gradlew build -Dquarkus.package.type=uber-jar ./gradlew build -Dquarkus.package.type=uber-jar
``` ```
...@@ -33,92 +33,108 @@ The application is now runnable using `java -jar build/theodolite-1.0.0-SNAPSHOT ...@@ -33,92 +33,108 @@ The application is now runnable using `java -jar build/theodolite-1.0.0-SNAPSHOT
## Creating a native executable ## Creating a native executable
It is recommended to use the native GraalVM images to create executable jars from Theodolite. For more information please visit the [Native Image guide](https://www.graalvm.org/reference-manual/native-image/).
You can create a native executable using: You can create a native executable using:
```shell script ```sh
./gradlew build -Dquarkus.package.type=native ./gradlew build -Dquarkus.package.type=native
``` ```
Or, if you don't have GraalVM installed, you can run the native executable build in a container using: Or, if you don't have GraalVM installed, you can run the native executable build in a container using:
```shell script ```sh
./gradlew build -Dquarkus.package.type=native -Dquarkus.native.container-build=true ./gradlew build -Dquarkus.package.type=native -Dquarkus.native.container-build=true
``` ```
You can then execute your native executable with: You can then execute your native executable with:
```./build/theodolite-1.0.0-SNAPSHOT-runner``` ```./build/theodolite-1.0.0-SNAPSHOT-runner```
If you want to learn more about building native executables, please consult https://quarkus.io/guides/gradle-tooling. If you want to learn more about building native executables, please consult <https://quarkus.io/guides/gradle-tooling>.
## Build docker images ## Build docker images
For the jvm version use: For the jvm version use:
```shell script ```sh
./gradlew build ./gradlew build
docker build -f src/main/docker/Dockerfile.jvm -t theodolite-jvm . docker build -f src/main/docker/Dockerfile.jvm -t theodolite-jvm .
``` ```
For the native image version use: For the native image version use:
```shell script ```sh
./gradlew build -Dquarkus.package.type=native ./gradlew build -Dquarkus.package.type=native
docker build -f src/main/docker/Dockerfile.native -t theodolite-native . docker build -f src/main/docker/Dockerfile.native -t theodolite-native .
``` ```
## Execute docker images: ## Execute docker images
Remember to set the environment variables first. Remember to set the environment variables first.
Jvm version: Jvm version:
```shell script ```sh
docker run -i --rm theodolite-jvm docker run -i --rm theodolite-jvm
``` ```
Native image version: Native image version:
```shell script ```sh
docker run -i --rm theodolite-native docker run -i --rm theodolite-native
``` ```
## Environment variables ## Environment variables
**Production:** (Docker-Container) **Execution in Docker**:
| Variables name | Default value |Usage | | Variables name | Default value |Usage |
| -----------------------------|:----------------------------------:| ------------:| | -----------------------------|:----------------------------------:| ------------:|
| `NAMESPACE` | `default` |Determines the namespace of the Theodolite will be executed in. Used in the KubernetesBenchmark| | `NAMESPACE` | `default` |Determines the namespace of the Theodolite will be executed in. Used in the KubernetesBenchmark|
| `THEODOLITE_EXECUTION` | `./config/BenchmarkExecution.yaml`|The complete path to the benchmarkExecution file. Used in the TheodoliteYamlExecutor. | | `THEODOLITE_EXECUTION` | `execution/execution.yaml` |The complete path to the benchmarkExecution file. Used in the TheodoliteYamlExecutor. |
| `THEODOLITE_BENCHMARK_TYPE` | `./config/BenchmarkType.yaml` |The complete path to the benchmarkType file. Used in the TheodoliteYamlExecutor.| | `THEODOLITE_BENCHMARK_TYPE` | `benchmark/benchmark.yaml` |The complete path to the benchmarkType file. Used in the TheodoliteYamlExecutor.|
| `THEODOLITE_APP_RESOURCES` | `./config` |The path under which the yamls for the resources for the subexperiments are found. Used in the KubernetesBenchmark| | `THEODOLITE_APP_RESOURCES` | `./benchmark-resources` |The path under which the yamls for the resources for the subexperiments are found. Used in the KubernetesBenchmark|
| `MODE` | `yaml-executor` | Defines the mode of operation: either `yaml-executor` or `operator`| | `MODE` | `standalone` |Defines the mode of operation: either `standalone` or `operator`
**Development:** (local via Intellij) **Execution in IntelliJ**:
When running Theodolite from within IntelliJ via When running Theodolite from within IntelliJ via
[Run Configurations](https://www.jetbrains.com/help/idea/work-with-gradle-tasks.html#gradle_run_config), set the * [Run Configurations](https://www.jetbrains.com/help/idea/work-with-gradle-tasks.html#gradle_run_config), set the *Environment variables* field to:
Environment variables* field to:
Set the following environment variables to run the example in the `standalone` mode within the IDE:
```sh
THEODOLITE_BENCHMARK=./../../../../examples/standalone/example-benchmark.yaml;THEODOLITE_EXECUTION=./../../../../examples/standalone/example-execution.yaml;THEODOLITE_APP_RESOURCES=./../../../../examples/resources;
```
Alternative:
``` sh
export THEODOLITE_BENCHMARK=./../../../../examples/standalone/example-benchmark.yaml
export THEODOLITE_APP_RESOURCES=./../../../../examples/resources;
export THEODOLITE_EXECUTION=./../../../../examples/standalone/example-execution.yaml
./gradlew quarkusDev
``` ```
NAMESPACE=default;THEODOLITE_BENCHMARK=./../../../../config/BenchmarkType.yaml;THEODOLITE_APP_RESOURCES=./../../../../config;THEODOLITE_EXECUTION=./../../../../config/BenchmarkExecution.yaml;MODE=operator
Set the following environment variables to run the example in the `operator` mode within the IDE:
```sh
THEODOLITE_APP_RESOURCES=./../../../../examples/resources;MODE=operator
``` ```
Alternative: Alternative:
``` sh ``` sh
export NAMESPACE=default export THEODOLITE_APP_RESOURCES=./../../../../examples/resources;
export THEODOLITE_BENCHMARK=./../../../../config/BenchmarkType.yaml
export THEODOLITE_APP_RESOURCES=./../../../../config
export THEODOLITE_EXECUTION=./../../../../config/BenchmarkExecution.yaml
export MODE=operator export MODE=operator
./gradlew quarkusDev ./gradlew quarkusDev
``` ```
#### Install Detekt Code analysis Plugin Additionally, the benchmark and execution resources must be installed.
### Install Detekt Code analysis Plugin
Install https://plugins.jetbrains.com/plugin/10761-detekt Install <https://plugins.jetbrains.com/plugin/10761-detekt>
- Install the plugin - Install the plugin
- Navigate to Settings/Preferences -> Tools -> Detekt - Navigate to Settings/Preferences -> Tools -> Detekt
...@@ -127,7 +143,7 @@ Install https://plugins.jetbrains.com/plugin/10761-detekt ...@@ -127,7 +143,7 @@ Install https://plugins.jetbrains.com/plugin/10761-detekt
-> detekt issues will be annotated on-the-fly while coding -> detekt issues will be annotated on-the-fly while coding
**ingore Failures in build:** add **ingore Failures in build**: add
```ignoreFailures = true``` ```ignoreFailures = true```
......
...@@ -5,9 +5,6 @@ metadata: ...@@ -5,9 +5,6 @@ metadata:
spec: spec:
appResource: appResource:
- "uc1-kstreams-deployment.yaml" - "uc1-kstreams-deployment.yaml"
- "aggregation-service.yaml"
- "jmx-configmap.yaml"
- "uc1-service-monitor.yaml"
loadGenResource: loadGenResource:
- "uc1-load-generator-deployment.yaml" - "uc1-load-generator-deployment.yaml"
- "uc1-load-generator-service.yaml" - "uc1-load-generator-service.yaml"
......
apiVersion: apps/v1
kind: Deployment
metadata:
name: titan-ccp-aggregation
spec:
selector:
matchLabels:
app: titan-ccp-aggregation
replicas: 1
template:
metadata:
labels:
app: titan-ccp-aggregation
spec:
terminationGracePeriodSeconds: 0
containers:
- name: uc-application
image: ghcr.io/cau-se/theodolite-uc1-kstreams-app:latest
ports:
- containerPort: 5555
name: jmx
env:
- name: KAFKA_BOOTSTRAP_SERVERS
value: "theodolite-cp-kafka:9092"
- name: SCHEMA_REGISTRY_URL
value: "http://theodolite-cp-schema-registry:8081"
- name: JAVA_OPTS
value: "-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=5555"
- name: COMMIT_INTERVAL_MS # Set as default for the applications
value: "100"
resources:
limits:
memory: 4Gi
cpu: 1000m
\ No newline at end of file
apiVersion: apps/v1
kind: Deployment
metadata:
name: titan-ccp-load-generator
spec:
selector:
matchLabels:
app: titan-ccp-load-generator
replicas: 1
template:
metadata:
labels:
app: titan-ccp-load-generator
spec:
terminationGracePeriodSeconds: 0
containers:
- name: workload-generator
image: ghcr.io/cau-se/theodolite-uc1-workload-generator:latest
ports:
- containerPort: 5701
name: coordination
env:
- name: KUBERNETES_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: KUBERNETES_DNS_NAME
value: "titan-ccp-load-generator.$(KUBERNETES_NAMESPACE).svc.cluster.local"
- name: KAFKA_BOOTSTRAP_SERVERS
value: "theodolite-cp-kafka:9092"
- name: SCHEMA_REGISTRY_URL
value: "http://theodolite-cp-schema-registry:8081"
apiVersion: v1
kind: Service
metadata:
name: titan-ccp-load-generator
labels:
app: titan-ccp-load-generator
spec:
type: ClusterIP
clusterIP: None
selector:
app: titan-ccp-load-generator
ports:
- name: coordination
port: 5701
targetPort: 5701
protocol: TCP
name: "uc1-kstreams" name: "uc1-kstreams"
appResource: appResource:
- "uc1-kstreams-deployment.yaml" - "uc1-kstreams-deployment.yaml"
- "aggregation-service.yaml"
- "jmx-configmap.yaml"
- "uc1-service-monitor.yaml"
loadGenResource: loadGenResource:
- "uc1-load-generator-deployment.yaml" - "uc1-load-generator-deployment.yaml"
- "uc1-load-generator-service.yaml" - "uc1-load-generator-service.yaml"
...@@ -25,7 +22,7 @@ loadTypes: ...@@ -25,7 +22,7 @@ loadTypes:
properties: properties:
loadGenMaxRecords: "15000" loadGenMaxRecords: "15000"
kafkaConfig: kafkaConfig:
bootstrapServer: "localhost:31290" bootstrapServer: "theodolite-cp-kafka:9092"
topics: topics:
- name: "input" - name: "input"
numPartitions: 40 numPartitions: 40
......
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