Skip to content
Snippets Groups Projects
Commit 94aaf3ce authored by Sören Henning's avatar Sören Henning
Browse files

Merge branch 'update-graal-image' into 'master'

Update Graal Image in CI pipeline

Closes #171, #226, and #220

See merge request !157
parents ead9c08e 868d38e4
No related branches found
No related tags found
2 merge requests!157Update Graal Image in CI pipeline,!83WIP: Re-implementation of Theodolite with Kotlin/Quarkus
Pipeline #3824 passed
Showing
with 819 additions and 54 deletions
......@@ -37,10 +37,11 @@ lint-helm:
GRADLE_OPTS: "-Dorg.gradle.daemon=false"
cache:
paths:
- .gradle
- .gradle/wrapper
- .gradle/caches
before_script:
- cd theodolite-benchmarks
- export GRADLE_USER_HOME=`pwd`/.gradle
- cd theodolite-benchmarks
build-benchmarks:
stage: build
......@@ -212,13 +213,86 @@ deploy-uc4-load-generator:
# Theodolite Framework
.theodolite:
image:
name: ghcr.io/graalvm/native-image:java11-21.1.0
entrypoint: [""]
tags:
- exec-docker
variables:
GRADLE_OPTS: "-Dorg.gradle.daemon=false"
cache:
paths:
- .gradle/wrapper
- .gradle/caches
before_script:
- export GRADLE_USER_HOME=`pwd`/.gradle
- cd theodolite-quarkus
build-theodolite-jvm:
stage: build
extends: .theodolite
script: ./gradlew --build-cache assemble
artifacts:
paths:
- "theodolite-quarkus/build/lib/*"
- "theodolite-quarkus/build/*-runner.jar"
expire_in: 6 hours
build-theodolite-native:
stage: build
extends: .theodolite
script:
- ./gradlew --build-cache assemble -Dquarkus.package.type=native
when: manual
artifacts:
paths:
- "theodolite-quarkus/build/*-runner"
expire_in: 6 hours
test-theodolite:
stage: test
extends: .theodolite
needs:
- build-theodolite-jvm
#- build-theodolite-native
script: ./gradlew test --stacktrace
artifacts:
reports:
junit:
- "theodolite-quarkus/**/build/test-results/test/TEST-*.xml"
# Disabled for now
.ktlint-theodolite:
stage: check
extends: .theodolite
needs:
- build-theodolite-jvm
- test-theodolite
script: ./gradlew ktlintCheck --continue
# Disabled for now
.detekt-theodolite:
stage: check
extends: .theodolite
needs:
- build-theodolite-jvm
- test-theodolite
script: ./gradlew detekt --continue
deploy-theodolite:
stage: deploy
extends:
- .theodolite
- .dind
needs:
#- build-theodolite-native
- build-theodolite-jvm
- test-theodolite
script:
- DOCKER_TAG_NAME=$(echo $CI_COMMIT_REF_SLUG- | sed 's/^master-$//')
- docker build --pull -t theodolite ./execution
#- docker build -f src/main/docker/Dockerfile.native -t theodolite .
- docker build -f src/main/docker/Dockerfile.jvm -t theodolite .
- "[ ! $CI_COMMIT_TAG ] && docker tag theodolite $CR_HOST/$CR_ORG/theodolite:${DOCKER_TAG_NAME}latest"
- "[ ! $CI_COMMIT_TAG ] && docker tag theodolite $CR_HOST/$CR_ORG/theodolite:$DOCKER_TAG_NAME$CI_COMMIT_SHORT_SHA"
- "[ $CI_COMMIT_TAG ] && docker tag theodolite $CR_HOST/$CR_ORG/theodolite:$CI_COMMIT_TAG"
......@@ -229,7 +303,46 @@ deploy-theodolite:
- if: "$CR_HOST && $CR_ORG && $CR_USER && $CR_PW && $CI_COMMIT_TAG"
when: always
- changes:
- execution/**/*
- theodolite-quarkus/**/*
if: "$CR_HOST && $CR_ORG && $CR_USER && $CR_PW"
when: always
- if: "$CR_HOST && $CR_ORG && $CR_USER && $CR_PW"
when: manual
allow_failure: true
# Theodolite SLO Checker: Lag Trend
test-slo-checker-lag-trend:
stage: test
image: python:3.7-slim
tags:
- exec-docker
script:
- cd slope-evaluator
- pip install -r requirements.txt
- cd app
- python -m unittest
deploy-slo-checker-lag-trend:
stage: deploy
extends:
- .dind
needs:
- test-slo-checker-lag-trend
script:
- DOCKER_TAG_NAME=$(echo $CI_COMMIT_REF_SLUG- | sed 's/^master-$//')
- docker build --pull -t theodolite-slo-checker-lag-trend slope-evaluator
- "[ ! $CI_COMMIT_TAG ] && docker tag theodolite-slo-checker-lag-trend $CR_HOST/$CR_ORG/theodolite-slo-checker-lag-trend:${DOCKER_TAG_NAME}latest"
- "[ $CI_COMMIT_TAG ] && docker tag theodolite-slo-checker-lag-trend $CR_HOST/$CR_ORG/theodolite-slo-checker-lag-trend:$CI_COMMIT_TAG"
- echo $CR_PW | docker login $CR_HOST -u $CR_USER --password-stdin
- docker push $CR_HOST/$CR_ORG/theodolite-slo-checker-lag-trend
- docker logout
rules:
- if: "$CR_HOST && $CR_ORG && $CR_USER && $CR_PW && $CI_COMMIT_TAG"
when: always
- changes:
- slope-evaluator/**/*
if: "$CR_HOST && $CR_ORG && $CR_USER && $CR_PW"
when: always
- if: "$CR_HOST && $CR_ORG && $CR_USER && $CR_PW"
......@@ -243,6 +356,7 @@ deploy-random-scheduler:
stage: deploy
extends:
- .dind
needs: []
script:
- DOCKER_TAG_NAME=$(echo $CI_COMMIT_REF_SLUG- | sed 's/^master-$//')
- docker build --pull -t theodolite-random-scheduler execution/infrastructure/random-scheduler
......
FROM python:3.8
RUN mkdir /app
WORKDIR /app
ADD requirements.txt /app/
RUN pip install -r requirements.txt
COPY uc-workload-generator /app/uc-workload-generator
COPY uc-application /app/uc-application
COPY strategies /app/strategies
COPY lib /app/lib
COPY lag_analysis.py /app/
COPY run_uc.py /app/
COPY theodolite.py /app/
CMD ["python", "/app/theodolite.py"]
......@@ -225,7 +225,17 @@ Theodolite locally on your machine see the description below.
see the [Configuration](#configuration) section below. Note, that you might uncomment the `serviceAccountName` line if
RBAC is enabled on your cluster (see installation of [Theodolite RBAC](#Theodolite-RBAC)).
To start the execution of a benchmark run (with `<your-theodolite-yaml>` being your job definition):
To start the execution of a benchmark create a ConfigMap which containts all required Kubernetes resource files for the SUT and the load generator, a ConfigMap for the execution and a ConfigMap for the benchmark.
```sh
kubectl create configmap app-resources-configmap --from-file=<folder-with-all-required-k8s-resources>
kubectl create configmap execution-configmap --from-file=<execution.yaml>
kubectl create configmap benchmark-configmap --from-file=<benchmark.yaml>
```
This will create three ConfigMaps. You can verify this via `kubectl get configmaps`.
Start the Theodolite job (with `<your-theodolite-yaml>` being your job definition):
```sh
kubectl create -f <your-theodolite-yaml>
......@@ -241,24 +251,7 @@ Kubernetes volume.
### Configuration
| Command line | Kubernetes | Description |
| -------------------- | ------------------- | ------------------------------------------------------------ |
| --uc | UC | **[Mandatory]** Stream processing use case to be benchmarked. Has to be one of `1`, `2`, `3` or `4`. |
| --loads | LOADS | **[Mandatory]** Values for the workload generator to be tested, should be sorted in ascending order. |
| --instances | INSTANCES | **[Mandatory]** Numbers of instances to be benchmarked, should be sorted in ascending order. |
| --duration | DURATION | Duration in minutes subexperiments should be executed for. *Default:* `5`. |
| --partitions | PARTITIONS | Number of partitions for Kafka topics. *Default:* `40`. |
| --cpu-limit | CPU_LIMIT | Kubernetes CPU limit for a single Pod. *Default:* `1000m`. |
| --memory-limit | MEMORY_LIMIT | Kubernetes memory limit for a single Pod. *Default:* `4Gi`. |
| --domain-restriction | DOMAIN_RESTRICTION | A flag that indiciates domain restriction should be used. *Default:* not set. For more details see Section [Domain Restriction](#domain-restriction). |
| --search-strategy | SEARCH_STRATEGY | The benchmarking search strategy. Can be set to `check-all`, `linear-search` or `binary-search`. *Default:* `check-all`. For more details see Section [Benchmarking Search Strategies](#benchmarking-search-strategies). |
| --reset | RESET | Resets the environment before each subexperiment. Useful if execution was aborted and just one experiment should be executed. |
| --reset-only | RESET_ONLY | Only resets the environment. Ignores all other parameters. Useful if execution was aborted and one want a clean state for new executions. |
| --namespace | NAMESPACE | Kubernetes namespace. *Default:* `default`. |
| --prometheus | PROMETHEUS_BASE_URL | Defines where to find the prometheus instance. *Default:* `http://localhost:9090` |
| --path | RESULT_PATH | A directory path for the results. Relative to the Execution folder. *Default:* `results` |
| --configurations | CONFIGURATIONS | Defines environment variables for the use cases and, thus, enables further configuration options. |
| --threshold | THRESHOLD | The threshold for the trend slop that the search strategies use to determine that a load could be handled. *Default:* `2000` |
Be sure, that the names of the configmap corresponds correctly to the specifications of the mounted `configmaps`, `volumes`, `mountPath`. In particular: The name of the execution file and the benchmark file must match the value of the corresponding environment variable.
### Domain Restriction
......
charts
\ No newline at end of file
......@@ -6,11 +6,9 @@ Install the chart via:
```sh
helm dependencies update .
helm install my-confluent .
helm install theodolite .
```
**Please note: Theodolite currently uses hard-coded URLs, to connect to Kafka and Zookeeper. For that reason, the name of this chart must be `my-confluent`.** We will change this behavior soon.
This chart installs requirements to execute benchmarks with Theodolite.
Dependencies and subcharts:
......@@ -27,7 +25,7 @@ Dependencies and subcharts:
Test the installation:
```sh
helm test <release-name>
helm test theodolite
```
Our test files are located [here](templates/../../theodolite-chart/templates/tests). Many subcharts have their own tests, these are also executed and are placed in the respective /templates folders.
......@@ -44,6 +42,31 @@ In development environments Kubernetes resources are often low. To reduce resour
helm install theodolite . -f preconfigs/one-broker-values.yaml
```
## Uninstall this Chart
To uninstall/delete the `theodolite` deployment:
```sh
helm delete theodolite
```
This command does not remove the CRDs which are created by this chart. Remove them manually with:
```sh
# CRDs from Theodolite
kubectl delete crd executions.theodolite.com
kubectl delete crd benchmarks.theodolite.com
# CRDs from Prometheus operator (see https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack#uninstall-chart)
kubectl delete crd alertmanagerconfigs.monitoring.coreos.com
kubectl delete crd alertmanagers.monitoring.coreos.com
kubectl delete crd podmonitors.monitoring.coreos.com
kubectl delete crd probes.monitoring.coreos.com
kubectl delete crd prometheuses.monitoring.coreos.com
kubectl delete crd prometheusrules.monitoring.coreos.com
kubectl delete crd servicemonitors.monitoring.coreos.com
kubectl delete crd thanosrulers.monitoring.coreos.com
```
## Development
**Hints**:
......
......@@ -9,7 +9,7 @@ cp-helm-charts:
## Kafka
## ------------------------------------------------------
cp-kafka:
brokers: 1 # deauflt: 10
brokers: 1 # default: 10
configurationOverrides:
offsets.topic.replication.factor: "1"
\ No newline at end of file
......@@ -253,7 +253,7 @@ data:
"steppedLine": false,
"targets": [
{
"expr": "sum by(group, topic) (kafka_consumergroup_group_lag > 0)",
"expr": "sum by(group, topic) (kafka_consumergroup_group_lag >= 0)",
"format": "time_series",
"intervalFactor": 1,
"legendFormat": "{{topic}}",
......@@ -436,7 +436,7 @@ data:
"steppedLine": false,
"targets": [
{
"expr": "sum by(group,topic) (kafka_consumergroup_group_offset > 0)",
"expr": "sum by(group,topic) (kafka_consumergroup_group_offset >= 0)",
"format": "time_series",
"intervalFactor": 1,
"legendFormat": "{{topic}}",
......@@ -527,7 +527,7 @@ data:
"steppedLine": false,
"targets": [
{
"expr": "count by(group,topic) (kafka_consumergroup_group_offset > 0)",
"expr": "count by(group,topic) (kafka_consumergroup_group_offset >= 0)",
"format": "time_series",
"intervalFactor": 1,
"legendFormat": "{{topic}}",
......@@ -892,7 +892,7 @@ data:
"steppedLine": false,
"targets": [
{
"expr": "sum by(group) (kafka_consumergroup_group_lag > 0)",
"expr": "sum by(group) (kafka_consumergroup_group_lag >= 0)",
"format": "time_series",
"intervalFactor": 1,
"legendFormat": "total lag",
......
{{- if .Values.operator.benchmarkCRD.create -}}
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: benchmarks.theodolite.com
spec:
group: theodolite.com
names:
kind: benchmark
plural: benchmarks
shortNames:
- bench
versions:
- name: v1
served: true
storage: true
schema:
openAPIV3Schema:
type: object
required: ["spec"]
properties:
spec:
type: object
required: []
properties:
name:
type: string
appResource:
type: array
minItems: 1
items:
type: string
loadGenResource:
type: array
minItems: 1
items:
type: string
resourceTypes:
type: array
minItems: 1
items:
type: object
properties:
typeName:
type: string
patchers:
type: array
minItems: 1
items:
type: object
properties:
type:
type: string
default: ""
resource:
type: string
default: ""
properties:
type: object
additionalProperties: true
x-kubernetes-map-type: "granular"
default: {}
loadTypes:
type: array
minItems: 1
items:
type: object
properties:
typeName:
type: string
patchers:
type: array
minItems: 1
items:
type: object
properties:
type:
type: string
default: ""
resource:
type: string
default: ""
properties:
type: object
additionalProperties: true
x-kubernetes-map-type: "granular"
default: {}
kafkaConfig:
type: object
properties:
bootstrapServer:
type: string
topics:
type: array
minItems: 1
items:
type: object
required: []
properties:
name:
type: string
default: ""
numPartitions:
type: integer
default: 0
replicationFactor:
type: integer
default: 0
removeOnly:
type: boolean
default: false
additionalPrinterColumns:
- name: Age
type: date
jsonPath: .metadata.creationTimestamp
subresources:
status: {}
scope: Namespaced
{{- end }}
{{- if .Values.operator.executionCRD.create -}}
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: executions.theodolite.com
spec:
group: theodolite.com
names:
kind: execution
plural: executions
shortNames:
- exec
versions:
- name: v1
served: true
storage: true
schema:
openAPIV3Schema:
type: object
required: ["spec"]
properties:
spec:
type: object
required: ["benchmark", "load", "resources", "slos", "execution", "configOverrides"]
properties:
name:
type: string
default: ""
benchmark:
type: string
load: # definition of the load dimension
type: object
required: ["loadType", "loadValues"]
properties:
loadType:
type: string
loadValues:
type: array
items:
type: integer
resources: # definition of the resource dimension
type: object
required: ["resourceType", "resourceValues"]
properties:
resourceType:
type: string
resourceValues:
type: array
items:
type: integer
slos: # def of service level objectives
type: array
items:
type: object
required: ["sloType", "threshold", "prometheusUrl", "externalSloUrl", "offset", "warmup"]
properties:
sloType:
type: string
threshold:
type: integer
prometheusUrl:
type: string
externalSloUrl:
type: string
offset:
type: integer
warmup:
type: integer
execution: # def execution config
type: object
required: ["strategy", "duration", "repetitions", "restrictions"]
properties:
strategy:
type: string
duration:
type: integer
repetitions:
type: integer
loadGenerationDelay:
type: integer
restrictions:
type: array
items:
type: string
configOverrides:
type: array
items:
type: object
properties:
patcher:
type: object
properties:
type:
type: string
default: ""
resource:
type: string
default: ""
properties:
type: object
additionalProperties: true
x-kubernetes-map-type: "granular"
default: {}
value:
type: string
status:
type: object
properties:
executionState:
description: ""
type: string
executionDuration:
description: "Duration of the execution in seconds"
type: string
additionalPrinterColumns:
- name: STATUS
type: string
description: State of the execution
jsonPath: .status.executionState
- name: Duration
type: string
description: Duration of the execution
jsonPath: .status.executionDuration
- name: Age
type: date
jsonPath: .metadata.creationTimestamp
subresources:
status: {}
scope: Namespaced
{{- end }}
{{- if .Values.randomScheduler.rbac.create -}}
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: {{ include "theodolite.fullname" . }}-random-scheduler
subjects:
- kind: ServiceAccount
name: {{ include "theodolite.fullname" . }}-random-scheduler
namespace: kube-system
roleRef:
kind: ClusterRole
apiGroup: rbac.authorization.k8s.io
name: system:kube-scheduler
{{- end }}
{{- if .Values.randomScheduler.enabled -}}
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "theodolite.fullname" . }}-random-scheduler
labels:
app: {{ include "theodolite.fullname" . }}
component: random-scheduler
namespace: kube-system
spec:
replicas: 1
selector:
matchLabels:
app: {{ include "theodolite.fullname" . }}
component: random-scheduler
template:
metadata:
labels:
app: {{ include "theodolite.fullname" . }}
component: random-scheduler
spec:
serviceAccount: {{ include "theodolite.fullname" . }}-random-scheduler
containers:
- name: random-scheduler
image: ghcr.io/cau-se/theodolite-random-scheduler:theodolite-kotlin-latest
#imagePullPolicy: Always
env:
- name: TARGET_NAMESPACE
value: {{ .Release.Namespace }}
{{- end }}
{{- if .Values.randomScheduler.serviceAccount.create -}}
apiVersion: v1
kind: ServiceAccount
metadata:
namespace: kube-system
name: {{ include "theodolite.fullname" . }}-random-scheduler
labels:
app: {{ include "theodolite.fullname" . }}
component: random-scheduler
{{- end }}
{{- if .Values.rbac.create -}}
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: RoleBinding
metadata:
name: {{ include "theodolite.fullname" . }}
labels:
app: {{ include "theodolite.name" . }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: {{ include "theodolite.fullname" . }}
subjects:
- kind: ServiceAccount
name: {{ include "theodolite.serviceAccountName" . }}
{{- end }}
\ No newline at end of file
{{- if .Values.rbac.create -}}
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: {{ include "theodolite.fullname" . }}
rules:
- apiGroups:
- apps
resources:
- deployments
- statefulsets
verbs:
- delete
- list
- get
- create
- update
- apiGroups:
- ""
resources:
- services
- pods
- configmaps
verbs:
- update
- delete
- list
- get
- create
- apiGroups:
- ""
resources:
- pods/exec
verbs:
- create
- get
- apiGroups:
- monitoring.coreos.com
resources:
- servicemonitors
verbs:
- update
- delete
- list
- create
{{- if .Values.operator.enabled }}
- apiGroups:
- theodolite.com
resources:
- benchmarks
- executions
- executions/status
verbs:
- delete
- list
- get
- create
- watch
- update
- patch
- apiGroups:
- coordination.k8s.io
resources:
- leases
verbs:
- delete
- get
- create
- update
{{- end }}
{{- end }}
\ No newline at end of file
{{- if .Values.serviceAccount.create -}}
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ include "theodolite.serviceAccountName" . }}
labels:
{{- include "theodolite.labels" . | nindent 4 }}
{{- with .Values.serviceAccount.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
{{- end }}
\ No newline at end of file
{{- if .Values.operator.enabled -}}
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "theodolite.fullname" . }}-operator
spec:
selector:
matchLabels:
app: {{ include "theodolite.fullname" . }}
replicas: 1
template:
metadata:
labels:
app: {{ include "theodolite.fullname" . }}
spec:
terminationGracePeriodSeconds: 0
serviceAccountName: {{ include "theodolite.serviceAccountName" . }}
securityContext:
runAsUser: 0 # Set the permissions for write access to the volumes.
containers:
- name: theodolite
image: "{{ .Values.operator.image }}:{{ .Values.operator.imageTag }}"
imagePullPolicy: "{{ .Values.operator.imagePullPolicy }}"
env:
- name: NAMESPACE
value: {{ .Release.Namespace }}
- name: MODE
value: operator
- name: THEODOLITE_APP_RESOURCES
value: "./benchmark-resources"
- name: RESULTS_FOLDER
value: "results"
volumeMounts:
{{- if .Values.operator.resultsVolume.enabled }}
- name: theodolite-pv-storage
mountPath: "/deployments/results"
{{- end }}
- name: benchmark-resources
mountPath: /work/benchmark-resources
{{- if .Values.operator.sloChecker.lagTrend.enabled }}
- name: lag-trend-slo-checker
image: "{{ .Values.operator.sloChecker.lagTrend.image }}:{{ .Values.operator.sloChecker.lagTrend.imageTag }}"
imagePullPolicy: "{{ .Values.operator.sloChecker.lagTrend.imagePullPolicy }}"
ports:
- containerPort: 80
name: analysis
env:
- name: LOG_LEVEL
value: INFO
{{- end }}
{{- if and .Values.operator.resultsVolume.enabled .Values.operator.resultsVolume.accessSidecar.enabled }}
- name: results-access
image: busybox:stable
image: "{{ .Values.operator.resultsVolume.accessSidecar.image }}:{{ .Values.operator.resultsVolume.accessSidecar.imageTag }}"
imagePullPolicy: "{{ .Values.operator.resultsVolume.accessSidecar.imagePullPolicy }}"
command:
- sh
- -c
- exec tail -f /dev/null
volumeMounts:
- mountPath: /results
name: theodolite-pv-storage
{{- end }}
volumes:
{{- if .Values.operator.resultsVolume.enabled }}
- name: theodolite-pv-storage
persistentVolumeClaim:
claimName: {{ .Values.operator.resultsVolume.persistentVolumeClaim.name | quote }}
{{- end }}
- name: benchmark-resources
configMap:
name: benchmark-resources
optional: true
{{- end }}
......@@ -25,8 +25,16 @@ grafana:
adminUser: admin
adminPassword: admin
grafana.ini:
#org_name: Theodolite
auth.anonymous:
# enable anonymous access
enabled: true
org_role: Admin # Role for unauthenticated users, other valid values are `Viewer`, `Editor` and `Admin`
users:
default_theme: light
#dashboards: # the following doesn't work but is planed
# Path to the default home dashboard. If this value is empty, then Grafana uses StaticRootPath + "dashboards/home.json"
#default_home_dashboard_path: "/tmp/dashboards/k8s-dashboard.json"
## Sidecars that collect the configmaps with specified label and stores the included files them into the respective folders
## Requires at least Grafana 5 to work and can't be used together with parameters dashboardProviders, datasources and dashboards
sidecar:
......@@ -92,8 +100,9 @@ cp-helm-charts:
"replica.fetch.max.bytes": "134217728" # 128 MB
#default.replication.factor: 1
# "min.insync.replicas": 2
# "auto.create.topics.enable": false
"log.retention.ms": "10000" # 10s
"auto.create.topics.enable": false
#"log.retention.ms": "10000" # 10s
"log.retention.ms": "7200000" # 2h
"metrics.sample.window.ms": "5000" #5s
"advertised.listeners": |-
EXTERNAL://${HOST_IP}:$((31090 + ${KAFKA_BROKER_ID}))
......@@ -148,8 +157,8 @@ kafka-lag-exporter:
enabled: true
nodeSelector: {}
clusters:
- name: "my-confluent-cp-kafka"
bootstrapBrokers: "my-confluent-cp-kafka:9092"
- name: "theodolite-cp-kafka"
bootstrapBrokers: "theodolite-cp-kafka:9092"
## The interval between refreshing metrics
pollIntervalSeconds: 15
......@@ -230,3 +239,49 @@ prometheus:
enabled: true
clusterRoleBinding:
enabled: true
###
# Theodolite Operator
###
operator:
enabled: true
image: ghcr.io/cau-se/theodolite
imageTag: theodolite-kotlin-latest
imagePullPolicy: Always
executionCRD:
create: true
benchmarkCRD:
create: true
sloChecker:
lagTrend:
enabled: true
image: ghcr.io/cau-se/theodolite-slo-checker-lag-trend
imageTag: theodolite-kotlin-latest
imagePullPolicy: Always
resultsVolume:
enabled: true
persistentVolumeClaim:
name: theodolite-pv-claim
accessSidecar:
enabled: true
image: busybox
imageTag: stable
imagePullPolicy: IfNotPresent
serviceAccount:
create: true
rbac:
create: true
randomScheduler:
enabled: true
rbac:
create: true
serviceAccount:
create: true
......@@ -48,7 +48,7 @@ cp-kafka:
# cpu: 100m
# memory: 128Mi
configurationOverrides:
#"offsets.topic.replication.factor": "3"
# offsets.topic.replication.factor: "3"
"message.max.bytes": "134217728" # 128 MB
"replica.fetch.max.bytes": "134217728" # 128 MB
# "default.replication.factor": 3
......
## ------------------------------------------------------
## Zookeeper
## ------------------------------------------------------
cp-zookeeper:
enabled: true
servers: 1
image: confluentinc/cp-zookeeper
imageTag: 5.4.0
## Optionally specify an array of imagePullSecrets. Secrets must be manually created in the namespace.
## https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
imagePullSecrets:
# - name: "regcred"
heapOptions: "-Xms512M -Xmx512M"
persistence:
enabled: false
resources: {}
## If you do want to specify resources, uncomment the following lines, adjust them as necessary,
## and remove the curly braces after 'resources:'
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
## ------------------------------------------------------
## Kafka
## ------------------------------------------------------
cp-kafka:
enabled: true
brokers: 1
image: confluentinc/cp-enterprise-kafka
imageTag: 5.4.0
## Optionally specify an array of imagePullSecrets. Secrets must be manually created in the namespace.
## https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
imagePullSecrets:
# - name: "regcred"
heapOptions: "-Xms512M -Xmx512M"
persistence:
enabled: false
resources: {}
## If you do want to specify resources, uncomment the following lines, adjust them as necessary,
## and remove the curly braces after 'resources:'
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
configurationOverrides:
offsets.topic.replication.factor: "1"
"message.max.bytes": "134217728" # 128 MB
"replica.fetch.max.bytes": "134217728" # 128 MB
# "default.replication.factor": 3
# "min.insync.replicas": 2
"auto.create.topics.enable": false
"log.retention.ms": "10000" # 10s
#"log.retention.ms": "86400000" # 24h
"metrics.sample.window.ms": "5000" #5s
# access kafka from outside
nodeport:
enabled: true
## ------------------------------------------------------
## Schema Registry
## ------------------------------------------------------
cp-schema-registry:
enabled: true
image: confluentinc/cp-schema-registry
imageTag: 5.4.0
## Optionally specify an array of imagePullSecrets. Secrets must be manually created in the namespace.
## https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
imagePullSecrets:
# - name: "regcred"
heapOptions: "-Xms512M -Xmx512M"
resources: {}
## If you do want to specify resources, uncomment the following lines, adjust them as necessary,
## and remove the curly braces after 'resources:'
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
cp-kafka-rest:
enabled: false
cp-kafka-connect:
enabled: false
cp-ksql-server:
enabled: false
cp-control-center:
enabled: false
......@@ -39,3 +39,25 @@ rules:
- delete
- list
- create
- apiGroups:
- theodolite.com
resources:
- executions
- benchmarks
verbs:
- delete
- list
- get
- create
- watch
- update
- patch
- apiGroups:
- coordination.k8s.io
resources:
- leases
verbs:
- delete
- get
- create
- update
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment