From 7f352e4694309727242a4dae48efba61e3e2a31c Mon Sep 17 00:00:00 2001 From: Patrick Hermann Date: Wed, 5 Nov 2025 14:51:17 +0000 Subject: [PATCH 1/4] feat: feat/add-homerun-base-stack --- Taskfile.yaml | 73 ++------- apps/README.md | 34 ++++ apps/homerun-base-stack.yaml.gotmpl | 65 ++++++++ apps/homerun-base-stack/README.md | 50 ++++++ apps/homerun-base-stack/env/defaults.yaml | 11 ++ apps/homerun-base-stack/env/fluxdev-2.yaml | 25 +++ apps/homerun-base-stack/env/homerun-dev.yaml | 22 +++ apps/homerun-base-stack/env/k3s.yaml | 22 +++ apps/homerun-base-stack/homerun-base.yaml | 51 ++++++ apps/homerun-base-stack/tests/send-events.sh | 149 ++++++++++++++++++ .../values/generic-pitcher.values.yaml.gotmpl | 65 ++++++++ apps/values/redis-stack.values.yaml.gotmpl | 26 +++ apps/values/text-catcher.values.yaml.gotmpl | 17 ++ 13 files changed, 546 insertions(+), 64 deletions(-) create mode 100644 apps/homerun-base-stack.yaml.gotmpl create mode 100644 apps/homerun-base-stack/README.md create mode 100644 apps/homerun-base-stack/env/defaults.yaml create mode 100644 apps/homerun-base-stack/env/fluxdev-2.yaml create mode 100644 apps/homerun-base-stack/env/homerun-dev.yaml create mode 100644 apps/homerun-base-stack/env/k3s.yaml create mode 100644 apps/homerun-base-stack/homerun-base.yaml create mode 100644 apps/homerun-base-stack/tests/send-events.sh create mode 100644 apps/values/generic-pitcher.values.yaml.gotmpl create mode 100644 apps/values/redis-stack.values.yaml.gotmpl create mode 100644 apps/values/text-catcher.values.yaml.gotmpl diff --git a/Taskfile.yaml b/Taskfile.yaml index fe909a49..8c672360 100644 --- a/Taskfile.yaml +++ b/Taskfile.yaml @@ -1,5 +1,9 @@ --- version: 3 +includes: + git: + taskfile: https://raw.githubusercontent.com/stuttgart-things/platform-engineering-showcase/refs/heads/main/taskfiles/git.yaml + vars: PROJECT: sh: echo ${PROJECT} @@ -124,16 +128,6 @@ tasks: - git branch - git branch --set-upstream-to=origin/main ${BRANCH_NAME} - pr: - desc: Create pull request into main - cmds: - - task: commit - - gh pr create -t "{{ .BRANCH }}" -b "{{ .BRANCH }} branch into main" - - sleep 2s - # - gh pr checks $(gh pr list | grep "^[^#;]" | awk '{print $1}') --watch - - gh pr merge $(gh pr list | grep "^[^#;]" | grep '{{ .BRANCH }}' | awk '{print $1}') --auto --rebase --delete-branch - - git checkout main && git pull - release: deps: - check @@ -324,29 +318,6 @@ tasks: - | echo *.$(kubectl get nodes -o json | jq -r '.items[] | select(.metadata.labels."ingress-ready" == "true") | .status.addresses[] | select(.type == "InternalIP") | .address').nip.io - check: - desc: "Run pre-commit hooks" - cmds: - - pre-commit run -a - - switch-remote: - desc: Switch to remote branch - cmds: - - | - git fetch - branches=($(git branch -r | grep -v 'origin/HEAD' | sed 's|origin/||')) - branch=$(printf "%s\n" "${branches[@]}" | gum choose) - git switch -c ${branch} --track origin/${branch} - git branch && git status - - switch-local: - desc: Switch to local branch - cmds: - - | - branches=$(git branch -a | grep -v 'remotes') - branch=$(printf "%s\n" "${branches[@]}" | gum choose) - git checkout ${branch} && git pull - tests-create-includes: desc: Create test files cmds: @@ -416,38 +387,12 @@ tasks: exit 0 silent: false - commit: - desc: Commit + push code into branch - deps: - - check - cmds: - - git branch --set-upstream-to=origin/{{ .BRANCH }} - - git pull - - git status - - | - git add * - git status - if [[ -n $(git status --porcelain) ]]; then - echo "Review the changes above." - gum confirm "Do you want to commit these changes?" || exit 0 - - echo "ENTER COMMIT MESSAGE" - COMMIT_MESSAGE=$(gum choose "CUSTOM MESSAGE" "feat: {{ .BRANCH }}" "fix: {{ .BRANCH }}" "BREAKING CHANGE: {{ .BRANCH }}") - - if [ "$COMMIT_MESSAGE" == "CUSTOM MESSAGE" ]; then - CHANGED_FILES=$(git status --short | awk '{print $2}' | tr '\n' ' ') - COMMIT_MESSAGE=$(gum input --placeholder "Commit message" --value "Changed: $CHANGED_FILES") - fi - - git commit --allow-empty -a -m "$COMMIT_MESSAGE" - else - echo "No changes to commit." - fi - - git push origin -u {{ .BRANCH }} - do: desc: Select a task to run cmds: - | - task=$(yq e '.tasks | keys' Taskfile.yaml | sed 's/^- //' | grep -v '^do$' | gum choose) - task ${task} + # Extract task names (keep internal colons, remove only trailing colon) + task_name=$(task -l | awk '/^\*/ {print $2}' | sed 's/:$//' | gum choose) + + # Run the selected task + [ -n "$task_name" ] && task "$task_name" diff --git a/apps/README.md b/apps/README.md index 8e23f616..2500cae8 100644 --- a/apps/README.md +++ b/apps/README.md @@ -6,6 +6,40 @@ App Helmfile templates. ## SERVICES +
HOMERUN-BASE-STACK + +```bash +# BASIC APPLY + +cat < homerun-base-stack.yaml +--- +helmfiles: + - path: git::https://github.com/stuttgart-things/helm.git@apps/homerun-base-stack.yaml.gotmpl + values: + - namespace: homerun + - stream: homerun + - searchIndex: homerun + - domain: demo-infra.sthings-vsphere.labul.sva.de + - issuerName: cluster-issuer-approle + - storageClass: nfs4-csi +EOF +``` + +```bash +# SET SECRETS AND APPLY + +export redisPassword=whaetver +export genericPitcherToken=whaetver + +helmfile apply -f homerun-base-stack.yaml +``` + + + +
+ + +
REDIS-STACK ```bash diff --git a/apps/homerun-base-stack.yaml.gotmpl b/apps/homerun-base-stack.yaml.gotmpl new file mode 100644 index 00000000..13e96228 --- /dev/null +++ b/apps/homerun-base-stack.yaml.gotmpl @@ -0,0 +1,65 @@ +--- +environments: + default: + values: + - version: v0.2.1 + - namespace: homerun + - ingressClass: nginx + - ingressPort: 80 + - persistenceEnabled: true + - storageClass: local-path + - stream: homerun + - searchIndex: homerun + - hostname: homerun + - domain: example.com + - persistenceEabled: true + - issuerKind: ClusterIssuer + - issuerName: selfsigned + - redisStack: + serviceType: ClusterIP + enabled: true + password: {{ env "redisPassword" }} + storageSize: 4Gi + port: 6379 + serviceName: homerun-redis-stack-headless + - genericPitcher: + enabled: true + name: homerun-generic-pitcher + port: 4000 + apiPath: generic + token: {{ env "genericPitcherToken" }} + - textCatcher: + enabled: true + name: homerun-text-catcher + logging: terminal + +releases: + - name: homerun-redis-stack + installed: true + namespace: {{ .Values.namespace }} + chart: stuttgart-things/homerun + version: {{ .Values.version }} + values: + - "values/redis-stack.values.yaml.gotmpl" + + - name: homerun-generic-pitcher + installed: true + namespace: {{ .Values.namespace }} + chart: stuttgart-things/homerun + version: {{ .Values.version }} + values: + - "values/generic-pitcher.values.yaml.gotmpl" + + - name: homerun-text-catcher + installed: true + namespace: {{ .Values.namespace }} + chart: stuttgart-things/homerun + version: {{ .Values.version }} + values: + - "values/text-catcher.values.yaml.gotmpl" + + +repositories: + - name: stuttgart-things + url: ghcr.io/stuttgart-things + oci: true diff --git a/apps/homerun-base-stack/README.md b/apps/homerun-base-stack/README.md new file mode 100644 index 00000000..233f77e5 --- /dev/null +++ b/apps/homerun-base-stack/README.md @@ -0,0 +1,50 @@ +# STUTTGART-THINGS/HELM/HOMERUN-BASE-STACK + +## PREPARATION + +* FOR NEW CLUSTER ADD ENV FILE IN ./env/${ENV_NAME}.yaml +* ADD ENV IN HELMFILE homerun-base.yaml (environments) +* RENDER ENV + +```bash +helmfile template -f homerun-base.yaml -e ${ENV_NAME} +``` + +## DEPLOY + +```bash +ENV_NAME=fluxdev-2 +helmfile apply -f homerun-base.yaml -e ${ENV_NAME} +``` + +## TEST REDIS + +```bash +kubectl -n homerun port-forward services/homerun-redis-stack-headless 5000:6379 +redis-cli -h localhost -p 5000 -a ${PASSWORD} +``` + +## TEST HOMERUN-GENERIC-PITCHER + +```bash +ADDRESS=https://homerun.fluxdev-2.sthings-vsphere.labul.sva.de/generic #https://cluster-test1.labul.sva.de/generic + +curl -k -X POST "${ADDRESS}" \ + -H "Content-Type: application/json" \ + -H "X-Auth-Token: IhrGeheimerToken" \ + -d '{ + "title": "Memory System Alert", + "message": "Memory usage is high", + "severity": "warning", + "author": "monitoring-system", + "timestamp": "2024-5-01T12:00:00Z", + "system": "flux", + "tags": "cpu,usage,alert", + "assigneeaddress": "admin@example.com", + "assigneename": "Admin", + "artifacts": "Admin", + "url": "Admin" + }' +``` + +## TEST HOMERUN-TEXT-CATCHER diff --git a/apps/homerun-base-stack/env/defaults.yaml b/apps/homerun-base-stack/env/defaults.yaml new file mode 100644 index 00000000..9d7886de --- /dev/null +++ b/apps/homerun-base-stack/env/defaults.yaml @@ -0,0 +1,11 @@ +--- +ingressClass: nginx +ingressPort: 80 + +redisStack: + serviceType: ClusterIP + enabled: true + password: ref+vault://apps/homerun/redisPassword + storageSize: 4Gi + port: 6379 + serviceName: homerun-redis-stack-headless \ No newline at end of file diff --git a/apps/homerun-base-stack/env/fluxdev-2.yaml b/apps/homerun-base-stack/env/fluxdev-2.yaml new file mode 100644 index 00000000..2fdaff5f --- /dev/null +++ b/apps/homerun-base-stack/env/fluxdev-2.yaml @@ -0,0 +1,25 @@ +--- +persistenceEabled: true +storageClass: nfs-csi +stream: homerun +searchIndex: homerun + +hostname: homerun +domain: fluxdev-2.sthings-vsphere.labul.sva.de +issuerKind: ClusterIssuer +issuerName: vault-approle + +redisStack: + serviceType: ClusterIP #LoadBalancer + +genericPitcher: + enabled: true + name: homerun-generic-pitcher + port: 4000 + apiPath: generic + token: ref+vault://apps/homerun/genericPitcherToken + +textCatcher: + enabled: true + name: homerun-text-catcher + logging: terminal diff --git a/apps/homerun-base-stack/env/homerun-dev.yaml b/apps/homerun-base-stack/env/homerun-dev.yaml new file mode 100644 index 00000000..c11a6ff2 --- /dev/null +++ b/apps/homerun-base-stack/env/homerun-dev.yaml @@ -0,0 +1,22 @@ +--- +persistenceEabled: true +storageClass: local-path +stream: homerun +searchIndex: homerun + +hostname: k3s-sprechstunde +domain: labul.sva.de +issuerKind: ClusterIssuer +issuerName: ca-issuer + +genericPitcher: + enabled: true + name: homerun-generic-pitcher + port: 4000 + apiPath: generic + token: ref+vault://apps/homerun/genericPitcherToken + +textCatcher: + enabled: true + name: homerun-text-catcher + logging: terminal diff --git a/apps/homerun-base-stack/env/k3s.yaml b/apps/homerun-base-stack/env/k3s.yaml new file mode 100644 index 00000000..5be09815 --- /dev/null +++ b/apps/homerun-base-stack/env/k3s.yaml @@ -0,0 +1,22 @@ +--- +persistenceEabled: true +storageClass: local-path +stream: homerun +searchIndex: homerun + +hostname: cluster-test1 +domain: labul.sva.de +issuerKind: ClusterIssuer +issuerName: vault-approle + +genericPitcher: + enabled: true + name: homerun-generic-pitcher + port: 4000 + apiPath: generic + token: ref+vault://apps/homerun/genericPitcherToken + +textCatcher: + enabled: true + name: homerun-text-catcher + logging: terminal diff --git a/apps/homerun-base-stack/homerun-base.yaml b/apps/homerun-base-stack/homerun-base.yaml new file mode 100644 index 00000000..be640e7d --- /dev/null +++ b/apps/homerun-base-stack/homerun-base.yaml @@ -0,0 +1,51 @@ +--- +environments: + k3s: + values: + - env/defaults.yaml + - env/{{ .Environment.Name }}.yaml + fluxdev-2: + values: + - env/defaults.yaml + - env/{{ .Environment.Name }}.yaml + homerun-dev: + values: + - env/defaults.yaml + - env/{{ .Environment.Name }}.yaml + +releases: + - name: homerun-redis-stack + installed: true + namespace: homerun + chart: stuttgart-things/homerun + version: v0.2.1 + values: + - "values/redis-stack.values.yaml.gotmpl" + + - name: homerun-generic-pitcher + installed: true + namespace: homerun + chart: stuttgart-things/homerun + version: v0.2.1 + values: + - "values/generic-pitcher.values.yaml.gotmpl" + + - name: homerun-text-catcher + installed: true + namespace: homerun + chart: stuttgart-things/homerun + version: v0.2.1 + values: + - "values/text-catcher.values.yaml.gotmpl" + +repositories: + - name: stuttgart-things + url: ghcr.io/stuttgart-things + oci: true + +helmDefaults: + verify: false + wait: true + timeout: 600 + recreatePods: false + force: true \ No newline at end of file diff --git a/apps/homerun-base-stack/tests/send-events.sh b/apps/homerun-base-stack/tests/send-events.sh new file mode 100644 index 00000000..2da48b63 --- /dev/null +++ b/apps/homerun-base-stack/tests/send-events.sh @@ -0,0 +1,149 @@ +#!/bin/bash +#ADDRESS=https://homerun.fluxdev-2.sthings-vsphere.labul.sva.de/generic +#ADDRESS=https://homerun.homerun-dev.sthings-vsphere.labul.sva.de/generic +#ADDRESS=https://k3s-sprechstunde.labul.sva.de/generic + +read -p "ENTER COUNT MESSAGES [5]: " COUNT_MESSAGE +COUNT_MESSAGE=${COUNT_MESSAGE:-5} +echo $COUNT_MESSAGE + +read -p "ENTER ADDRESS [https://homerun.homerun-dev.sthings-vsphere.labul.sva.de/generic]: " ADDRESS +ADDRESS=${ADDRESS:-https://homerun.homerun-dev.sthings-vsphere.labul.sva.de/generic} +echo $ADDRESS + +read -p "ENTER DELAY [10]: " DELAY +DELAY=${DELAY:-5} +echo $DELAY + +# POSSIBLE DATA +SYSTEMS=("github" "gitlab") #) "flux" "ansible") +TITLES=("System Alert" "System Incident" "Incident") +MESSAGES=("Memory usage is high" "CPU usage is high" "Memory and CPU usage is high") +SEVERITES=("INFO" "ERROR" "WARNING") +AUTHORS=("bibi" "gude" "andreu" "qolf" "pat") +ARTIFACTS=("image-1.23.tar.gz" "test.tar.gz" "report.json" "result.txt") +TAGS=("usage,alert" "cpu" "cpu,usage,alert" "memory,usage,alert" "monitoring,usage,alert, memory") + +# FUNCTION TO GET A RANDOM ITEM FROM A LIST +get_random_item() { + local items=("$@") + local count=${#items[@]} + local random_index=$((RANDOM % count)) + echo "${items[$random_index]}" +} + +generate_random_email() { + local domains=("example.com" "test.com" "mail.com" "demo.com") + local chars=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 + local length=8 + local local_part="" + + for i in $(seq 1 $length); do + local_part+=${chars:RANDOM%${#chars}:1} + done + + local domain=${domains[RANDOM%${#domains[@]}]} + echo "${local_part}@${domain}" +} + +# Function to generate a random ISO 8601 timestamp +generate_random_timestamp() { + # Generate random values for the timestamp components + local year=$((RANDOM % 10 + 2024)) # Random year from 2024 to 2033 + local month=$(printf "%02d" $((RANDOM % 12 + 1))) # Random month from 01 to 12 + local day=$(printf "%02d" $((RANDOM % 28 + 1))) # Random day from 01 to 28 + local hour=$(printf "%02d" $((RANDOM % 24))) # Random hour from 00 to 23 + local minute=$(printf "%02d" $((RANDOM % 60))) # Random minute from 00 to 59 + local second=$(printf "%02d" $((RANDOM % 60))) # Random second from 00 to 59 + + # Construct the ISO 8601 timestamp + echo "${year}-${month}-${day}T${hour}:${minute}:${second}Z" +} + +generate_random_url() { + local protocols=("http" "https") + local domains=("example.com" "test.com" "site.net" "demo.org" "mydomain.io") + local chars=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 + local sub_length=6 + local path_length=10 + local subdomain="" + local path="" + + # Wähle ein zufälliges Protokoll + local protocol=${protocols[RANDOM % ${#protocols[@]}]} + + # Erzeuge den Subdomain-Teil + for i in $(seq 1 $sub_length); do + subdomain+=${chars:RANDOM%${#chars}:1} + done + + # Wähle eine zufällige Domain + local domain=${domains[RANDOM % ${#domains[@]}]} + + # Erzeuge den Pfad + for i in $(seq 1 $path_length); do + path+=${chars:RANDOM%${#chars}:1} + done + + # Konstruktion der vollständigen URL + echo "${protocol}://${subdomain}.${domain}/${path}" +} + +for ((i=1; i<=${COUNT_MESSAGE}; i++)); do + + RANDOM_TIMESTAMP=$(generate_random_timestamp) + #echo "RANDOM TIMESTAMP: ${RANDOM_TIMESTAMP}" + + SYSTEM=$(get_random_item "${SYSTEMS[@]}") + echo "SYSTEM: ${SYSTEM}" + + TITLE=$(get_random_item "${TITLES[@]}") + echo "TITLE: ${TITLE}" + + MESSAGE=$(get_random_item "${MESSAGES[@]}") + echo "MESSAGE: ${MESSAGE}" + + SEVERITY=$(get_random_item "${SEVERITES[@]}") + echo "SEVERITY: ${SEVERITY}" + + AUTHOR=$(get_random_item "${AUTHORS[@]}") + echo "AUTHOR: ${AUTHOR}" + + MAIL=$(generate_random_email) + #echo "RANDOMLY GENERATED E-MAIL: ${MAIL}" + + ASSIGNE=$(get_random_item "${AUTHORS[@]}") + #echo "ASSIGNE: ${ASSIGNE}" + + TAG=$(get_random_item "${TAGS[@]}") + echo "TAGS: ${TAG}" + + RANDOM_URL=$(generate_random_url) + #echo "URLS: ${RANDOM_URL}" + + ARTIFACT=$(get_random_item "${ARTIFACTS[@]}") + #echo "ARTIFACT: ${ARTIFACT}" + + printf "\nWAITING FOR ${DELAY} SECONDS BEFORE SENDING THE (NEXT) EVENT\n" + sleep "$DELAY" # Pause für die angegebene Anzahl von Sekunden zwischen den Events + + curl -k -X POST "${ADDRESS}" \ + -H "Content-Type: application/json" \ + -H "X-Auth-Token: IhrGeheimerToken" \ + -d "{ + \"title\": \"${TITLE}\", + \"message\": \"${MESSAGE}\", + \"severity\": \"${SEVERITY}\", + \"author\": \"${AUTHOR}\", + \"timestamp\": \"${RANDOM_TIMESTAMP}\", + \"system\": \"${SYSTEM}\", + \"tags\": \"${TAG}\", + \"assigneeaddress\": \"${MAIL}\", + \"assigneename\": \"${ASSIGNE}\", + \"artifacts\": \"${ARTIFACT}\", + \"url\": \"${RANDOM_URL}\" + }" + + printf "\n\n" + +done \ No newline at end of file diff --git a/apps/values/generic-pitcher.values.yaml.gotmpl b/apps/values/generic-pitcher.values.yaml.gotmpl new file mode 100644 index 00000000..b8f35441 --- /dev/null +++ b/apps/values/generic-pitcher.values.yaml.gotmpl @@ -0,0 +1,65 @@ +--- +generic-pitcher: + enabled: {{ .Values.genericPitcher.enabled }} + + configmaps: + {{ .Values.genericPitcher.name }}: + API_PATH: {{ .Values.genericPitcher.apiPath }} + PORT: "{{ .Values.genericPitcher.port }}" + REDIS_STREAM: {{ .Values.stream }} + REDISEARCH_INDEX: {{ .Values.searchIndex }} + + secrets: + generic-token: + name: generic-token + labels: + app: {{ .Values.genericPitcher.name }} + dataType: stringData + secretKVs: + WEBHOOK_TOKEN: {{ .Values.genericPitcher.token }} + + redis-connection-{{ .Values.genericPitcher.name }}: + name: redis-connection-{{ .Values.genericPitcher.name }} + labels: + app: {{ .Values.genericPitcher.name }} + dataType: stringData + secretKVs: + REDIS_SERVER: {{ .Values.redisStack.serviceName }}.{{ .Release.Namespace }}.svc.cluster.local + REDIS_PORT: {{ .Values.redisStack.port }} + REDIS_PASSWORD: {{ .Values.redisStack.password }} + + customresources: + {{ .Values.genericPitcher.name }}-certificate: + apiVersion: cert-manager.io/v1 + kind: Certificate + metadata: + name: {{ .Values.genericPitcher.name }}-ingress + labels: + app: {{ .Values.genericPitcher.name }} + spec: + commonName: {{ .Values.hostname }}.{{ .Values.domain }} + dnsNames: + - {{ .Values.hostname }}.{{ .Values.domain }} + issuerRef: + name: {{ .Values.issuerName }} + kind: {{ .Values.issuerKind }} + secretName: {{ .Values.genericPitcher.name }}-ingress-tls + + ingress: + {{ .Values.genericPitcher.name }}-ingress: + labels: + app: {{ .Values.genericPitcher.name }} + name: {{ .Values.genericPitcher.name }} + ingressClassName: {{ .Values.ingressClass }} + annotations: + nginx.ingress.kubernetes.io/ssl-redirect: "true" + service: + name: {{ .Values.genericPitcher.name }}-service + port: {{ .Values.ingressPort }} + path: /{{ .Values.genericPitcher.apiPath }} + pathType: Prefix + hostname: {{ .Values.hostname }} + domain: {{ .Values.domain }} + tls: + secretName: {{ .Values.genericPitcher.name }}-ingress-tls + host: {{ .Values.hostname }}.{{ .Values.domain }} diff --git a/apps/values/redis-stack.values.yaml.gotmpl b/apps/values/redis-stack.values.yaml.gotmpl new file mode 100644 index 00000000..7f81e8a7 --- /dev/null +++ b/apps/values/redis-stack.values.yaml.gotmpl @@ -0,0 +1,26 @@ +--- +redis-stack: + sentinel: + service: + type: {{ .Values.redisStack.serviceType }} + + enabled: {{ .Values.persistenceEabled }} + + global: + redis: + password: {{ .Values.redisStack.password }} + + master: + service: + type: {{ .Values.redisStack.serviceType }} + + persistence: + enabled: {{ .Values.redisStack.enabled }} + storageClass: {{ .Values.storageClass }} + size: {{ .Values.redisStack.storageSize }} + + replica: + persistence: + enabled: {{ .Values.redisStack.enabled }} + storageClass: {{ .Values.storageClass }} + size: {{ .Values.redisStack.storageSize }} diff --git a/apps/values/text-catcher.values.yaml.gotmpl b/apps/values/text-catcher.values.yaml.gotmpl new file mode 100644 index 00000000..7e26b8e4 --- /dev/null +++ b/apps/values/text-catcher.values.yaml.gotmpl @@ -0,0 +1,17 @@ +--- +text-catcher: + enabled: {{ .Values.textCatcher.enabled }} + configmaps: + homerun-text-catcher: + REDIS_STREAM: {{ .Values.stream }} + LOGGING: {{ .Values.textCatcher.logging }} + secrets: + redis-connection-{{ .Values.textCatcher.name }}: + name: redis-connection-{{ .Values.textCatcher.name }} + labels: + app: {{ .Values.textCatcher.name }} + dataType: stringData + secretKVs: + REDIS_SERVER: {{ .Values.redisStack.serviceName }}.{{ .Release.Namespace }}.svc.cluster.local + REDIS_PORT: {{ .Values.redisStack.port }} + REDIS_PASSWORD: {{ .Values.redisStack.password }} \ No newline at end of file From a20244c6e93b2cf26a51c18a00e5da593e1e1ae3 Mon Sep 17 00:00:00 2001 From: Patrick Hermann Date: Wed, 5 Nov 2025 20:26:29 +0000 Subject: [PATCH 2/4] feat: feat/add-homerun-base-stack --- .gitignore | 2 +- apps/homerun-base-stack.yaml.gotmpl | 20 ++++---- apps/homerun-base-stack/env/defaults.yaml | 11 ---- apps/homerun-base-stack/env/fluxdev-2.yaml | 25 --------- apps/homerun-base-stack/env/homerun-dev.yaml | 22 -------- apps/homerun-base-stack/env/k3s.yaml | 22 -------- apps/homerun-base-stack/homerun-base.yaml | 51 ------------------- .../homerun-send-events.sh} | 2 +- .../README.md => tests/homerun.md} | 0 .../values/generic-pitcher.values.yaml.gotmpl | 6 +-- apps/values/redis-stack.values.yaml.gotmpl | 22 ++++---- apps/values/text-catcher.values.yaml.gotmpl | 6 +-- 12 files changed, 29 insertions(+), 160 deletions(-) delete mode 100644 apps/homerun-base-stack/env/defaults.yaml delete mode 100644 apps/homerun-base-stack/env/fluxdev-2.yaml delete mode 100644 apps/homerun-base-stack/env/homerun-dev.yaml delete mode 100644 apps/homerun-base-stack/env/k3s.yaml delete mode 100644 apps/homerun-base-stack/homerun-base.yaml rename apps/{homerun-base-stack/tests/send-events.sh => tests/homerun-send-events.sh} (99%) rename apps/{homerun-base-stack/README.md => tests/homerun.md} (100%) diff --git a/.gitignore b/.gitignore index 6f72f892..3b2d2054 100644 --- a/.gitignore +++ b/.gitignore @@ -13,7 +13,7 @@ # Output of the go coverage tool, specifically when used with LiteIDE *.out - +.task # Dependency directories (remove the comment below to include it) # vendor/ diff --git a/apps/homerun-base-stack.yaml.gotmpl b/apps/homerun-base-stack.yaml.gotmpl index 13e96228..6addfbea 100644 --- a/apps/homerun-base-stack.yaml.gotmpl +++ b/apps/homerun-base-stack.yaml.gotmpl @@ -6,22 +6,22 @@ environments: - namespace: homerun - ingressClass: nginx - ingressPort: 80 - - persistenceEnabled: true - - storageClass: local-path - stream: homerun - searchIndex: homerun - hostname: homerun - domain: example.com - - persistenceEabled: true - issuerKind: ClusterIssuer - issuerName: selfsigned - - redisStack: - serviceType: ClusterIP - enabled: true - password: {{ env "redisPassword" }} - storageSize: 4Gi - port: 6379 - serviceName: homerun-redis-stack-headless + - persistenceEnabled: true + - storageClass: standard + - redisStackServiceType: ClusterIP + - redisStackEnabled: true + - redisStackPersistenceEnabled: true + - redisStackPassword: {{ env "redisPassword" }} + - redisStackStorageClass: openebs-hostpath + - redisStackStorageSize: 4Gi + - redisStackPort: 6379 + - redisStackServiceName: homerun-redis-stack-headless - genericPitcher: enabled: true name: homerun-generic-pitcher diff --git a/apps/homerun-base-stack/env/defaults.yaml b/apps/homerun-base-stack/env/defaults.yaml deleted file mode 100644 index 9d7886de..00000000 --- a/apps/homerun-base-stack/env/defaults.yaml +++ /dev/null @@ -1,11 +0,0 @@ ---- -ingressClass: nginx -ingressPort: 80 - -redisStack: - serviceType: ClusterIP - enabled: true - password: ref+vault://apps/homerun/redisPassword - storageSize: 4Gi - port: 6379 - serviceName: homerun-redis-stack-headless \ No newline at end of file diff --git a/apps/homerun-base-stack/env/fluxdev-2.yaml b/apps/homerun-base-stack/env/fluxdev-2.yaml deleted file mode 100644 index 2fdaff5f..00000000 --- a/apps/homerun-base-stack/env/fluxdev-2.yaml +++ /dev/null @@ -1,25 +0,0 @@ ---- -persistenceEabled: true -storageClass: nfs-csi -stream: homerun -searchIndex: homerun - -hostname: homerun -domain: fluxdev-2.sthings-vsphere.labul.sva.de -issuerKind: ClusterIssuer -issuerName: vault-approle - -redisStack: - serviceType: ClusterIP #LoadBalancer - -genericPitcher: - enabled: true - name: homerun-generic-pitcher - port: 4000 - apiPath: generic - token: ref+vault://apps/homerun/genericPitcherToken - -textCatcher: - enabled: true - name: homerun-text-catcher - logging: terminal diff --git a/apps/homerun-base-stack/env/homerun-dev.yaml b/apps/homerun-base-stack/env/homerun-dev.yaml deleted file mode 100644 index c11a6ff2..00000000 --- a/apps/homerun-base-stack/env/homerun-dev.yaml +++ /dev/null @@ -1,22 +0,0 @@ ---- -persistenceEabled: true -storageClass: local-path -stream: homerun -searchIndex: homerun - -hostname: k3s-sprechstunde -domain: labul.sva.de -issuerKind: ClusterIssuer -issuerName: ca-issuer - -genericPitcher: - enabled: true - name: homerun-generic-pitcher - port: 4000 - apiPath: generic - token: ref+vault://apps/homerun/genericPitcherToken - -textCatcher: - enabled: true - name: homerun-text-catcher - logging: terminal diff --git a/apps/homerun-base-stack/env/k3s.yaml b/apps/homerun-base-stack/env/k3s.yaml deleted file mode 100644 index 5be09815..00000000 --- a/apps/homerun-base-stack/env/k3s.yaml +++ /dev/null @@ -1,22 +0,0 @@ ---- -persistenceEabled: true -storageClass: local-path -stream: homerun -searchIndex: homerun - -hostname: cluster-test1 -domain: labul.sva.de -issuerKind: ClusterIssuer -issuerName: vault-approle - -genericPitcher: - enabled: true - name: homerun-generic-pitcher - port: 4000 - apiPath: generic - token: ref+vault://apps/homerun/genericPitcherToken - -textCatcher: - enabled: true - name: homerun-text-catcher - logging: terminal diff --git a/apps/homerun-base-stack/homerun-base.yaml b/apps/homerun-base-stack/homerun-base.yaml deleted file mode 100644 index be640e7d..00000000 --- a/apps/homerun-base-stack/homerun-base.yaml +++ /dev/null @@ -1,51 +0,0 @@ ---- -environments: - k3s: - values: - - env/defaults.yaml - - env/{{ .Environment.Name }}.yaml - fluxdev-2: - values: - - env/defaults.yaml - - env/{{ .Environment.Name }}.yaml - homerun-dev: - values: - - env/defaults.yaml - - env/{{ .Environment.Name }}.yaml - -releases: - - name: homerun-redis-stack - installed: true - namespace: homerun - chart: stuttgart-things/homerun - version: v0.2.1 - values: - - "values/redis-stack.values.yaml.gotmpl" - - - name: homerun-generic-pitcher - installed: true - namespace: homerun - chart: stuttgart-things/homerun - version: v0.2.1 - values: - - "values/generic-pitcher.values.yaml.gotmpl" - - - name: homerun-text-catcher - installed: true - namespace: homerun - chart: stuttgart-things/homerun - version: v0.2.1 - values: - - "values/text-catcher.values.yaml.gotmpl" - -repositories: - - name: stuttgart-things - url: ghcr.io/stuttgart-things - oci: true - -helmDefaults: - verify: false - wait: true - timeout: 600 - recreatePods: false - force: true \ No newline at end of file diff --git a/apps/homerun-base-stack/tests/send-events.sh b/apps/tests/homerun-send-events.sh similarity index 99% rename from apps/homerun-base-stack/tests/send-events.sh rename to apps/tests/homerun-send-events.sh index 2da48b63..6653a4a6 100644 --- a/apps/homerun-base-stack/tests/send-events.sh +++ b/apps/tests/homerun-send-events.sh @@ -146,4 +146,4 @@ for ((i=1; i<=${COUNT_MESSAGE}; i++)); do printf "\n\n" -done \ No newline at end of file +done diff --git a/apps/homerun-base-stack/README.md b/apps/tests/homerun.md similarity index 100% rename from apps/homerun-base-stack/README.md rename to apps/tests/homerun.md diff --git a/apps/values/generic-pitcher.values.yaml.gotmpl b/apps/values/generic-pitcher.values.yaml.gotmpl index b8f35441..6dc6f513 100644 --- a/apps/values/generic-pitcher.values.yaml.gotmpl +++ b/apps/values/generic-pitcher.values.yaml.gotmpl @@ -24,9 +24,9 @@ generic-pitcher: app: {{ .Values.genericPitcher.name }} dataType: stringData secretKVs: - REDIS_SERVER: {{ .Values.redisStack.serviceName }}.{{ .Release.Namespace }}.svc.cluster.local - REDIS_PORT: {{ .Values.redisStack.port }} - REDIS_PASSWORD: {{ .Values.redisStack.password }} + REDIS_SERVER: {{ .Values.redisStackServiceName }}.{{ .Release.Namespace }}.svc.cluster.local + REDIS_PORT: {{ .Values.redisStackPort }} + REDIS_PASSWORD: {{ .Values.redisStackPassword }} customresources: {{ .Values.genericPitcher.name }}-certificate: diff --git a/apps/values/redis-stack.values.yaml.gotmpl b/apps/values/redis-stack.values.yaml.gotmpl index 7f81e8a7..4f397c4b 100644 --- a/apps/values/redis-stack.values.yaml.gotmpl +++ b/apps/values/redis-stack.values.yaml.gotmpl @@ -1,26 +1,26 @@ --- redis-stack: + enabled: {{ .Values.redisStackEnabled }} sentinel: service: - type: {{ .Values.redisStack.serviceType }} + type: {{ .Values.redisStackServiceType }} - enabled: {{ .Values.persistenceEabled }} global: - redis: - password: {{ .Values.redisStack.password }} + password: {{ .Values.redisStackPassword }} + storageClass: {{ .Values.redisStackStorageClass }} master: service: - type: {{ .Values.redisStack.serviceType }} + type: {{ .Values.redisStackServiceType }} persistence: - enabled: {{ .Values.redisStack.enabled }} - storageClass: {{ .Values.storageClass }} - size: {{ .Values.redisStack.storageSize }} + enabled: {{ .Values.redisStackPersistenceEnabled }} + storageClass: {{ .Values.redisStackStorageClass }} + size: {{ .Values.redisStackStorageSize }} replica: persistence: - enabled: {{ .Values.redisStack.enabled }} - storageClass: {{ .Values.storageClass }} - size: {{ .Values.redisStack.storageSize }} + enabled: {{ .Values.redisStackPersistenceEnabled }} + storageClass: {{ .Values.redisStackStorageClass }} + size: {{ .Values.redisStackStorageSize }} diff --git a/apps/values/text-catcher.values.yaml.gotmpl b/apps/values/text-catcher.values.yaml.gotmpl index 7e26b8e4..486668c1 100644 --- a/apps/values/text-catcher.values.yaml.gotmpl +++ b/apps/values/text-catcher.values.yaml.gotmpl @@ -12,6 +12,6 @@ text-catcher: app: {{ .Values.textCatcher.name }} dataType: stringData secretKVs: - REDIS_SERVER: {{ .Values.redisStack.serviceName }}.{{ .Release.Namespace }}.svc.cluster.local - REDIS_PORT: {{ .Values.redisStack.port }} - REDIS_PASSWORD: {{ .Values.redisStack.password }} \ No newline at end of file + REDIS_SERVER: {{ .Values.redisStackServiceName }}.{{ .Release.Namespace }}.svc.cluster.local + REDIS_PORT: {{ .Values.redisStackPort }} + REDIS_PASSWORD: {{ .Values.redisStackPassword }} From b77aa9d3fc5f8a91dca211fcdaf5a1b4c8411fad Mon Sep 17 00:00:00 2001 From: Patrick Hermann Date: Thu, 6 Nov 2025 10:17:00 +0000 Subject: [PATCH 3/4] feat: feat/add-homerun-base-stack --- apps/README.md | 13 +---- apps/homerun-base-stack.yaml.gotmpl | 57 +++++++++++---------- apps/tests/homerun-send-events.sh | 31 ++++++----- apps/values/text-catcher.values.yaml.gotmpl | 10 ++-- database/README.md | 11 ++++ database/redis-stack.yaml.gotmpl | 1 + database/values/redis-stack.yaml.gotmpl | 3 ++ 7 files changed, 69 insertions(+), 57 deletions(-) diff --git a/apps/README.md b/apps/README.md index 2500cae8..7ac83bd4 100644 --- a/apps/README.md +++ b/apps/README.md @@ -10,19 +10,8 @@ App Helmfile templates. ```bash # BASIC APPLY +helmfile apply -f /home/sthings/projects/apps/helm/apps/homerun-base-stack.yaml.gotmpl --state-values-set redisStackStorageClass=openebs-hostpath -cat < homerun-base-stack.yaml ---- -helmfiles: - - path: git::https://github.com/stuttgart-things/helm.git@apps/homerun-base-stack.yaml.gotmpl - values: - - namespace: homerun - - stream: homerun - - searchIndex: homerun - - domain: demo-infra.sthings-vsphere.labul.sva.de - - issuerName: cluster-issuer-approle - - storageClass: nfs4-csi -EOF ``` ```bash diff --git a/apps/homerun-base-stack.yaml.gotmpl b/apps/homerun-base-stack.yaml.gotmpl index 6addfbea..72c28a93 100644 --- a/apps/homerun-base-stack.yaml.gotmpl +++ b/apps/homerun-base-stack.yaml.gotmpl @@ -4,6 +4,16 @@ environments: values: - version: v0.2.1 - namespace: homerun + - redisStackEnabled: true + - redisStackServiceType: ClusterIP + - redisStackStorageClass: openebs-hostpath + - redisStackStorageSize: 4Gi + - redisStackPort: 6379 + - redisStackServiceName: redis-stack-headless + - redisStackPassword: {{ env "redisPassword" }} + - textCatcherEnabled: true + - textCatcherLogging: terminal + - textCatcherName: homerun-text-catcher - ingressClass: nginx - ingressPort: 80 - stream: homerun @@ -14,42 +24,35 @@ environments: - issuerName: selfsigned - persistenceEnabled: true - storageClass: standard - - redisStackServiceType: ClusterIP - - redisStackEnabled: true - - redisStackPersistenceEnabled: true - - redisStackPassword: {{ env "redisPassword" }} - - redisStackStorageClass: openebs-hostpath - - redisStackStorageSize: 4Gi - - redisStackPort: 6379 - - redisStackServiceName: homerun-redis-stack-headless + - genericPitcher: enabled: true name: homerun-generic-pitcher port: 4000 apiPath: generic token: {{ env "genericPitcherToken" }} - - textCatcher: - enabled: true - name: homerun-text-catcher - logging: terminal -releases: - - name: homerun-redis-stack - installed: true - namespace: {{ .Values.namespace }} - chart: stuttgart-things/homerun - version: {{ .Values.version }} +{{- if .Values.redisStackEnabled }} +helmfiles: + - path: ../database/redis-stack.yaml.gotmpl values: - - "values/redis-stack.values.yaml.gotmpl" + - namespace: {{ .Values.namespace }} + - password: {{ .Values.redisStackPassword }} + - storageClass: {{ .Values.redisStackStorageClass }} + - serviceType: {{ .Values.redisStackServiceType }} + - storageSize: {{ .Values.redisStackStorageSize }} +{{- end }} - - name: homerun-generic-pitcher - installed: true - namespace: {{ .Values.namespace }} - chart: stuttgart-things/homerun - version: {{ .Values.version }} - values: - - "values/generic-pitcher.values.yaml.gotmpl" +releases: +# - name: homerun-generic-pitcher +# installed: true +# namespace: {{ .Values.namespace }} +# chart: stuttgart-things/homerun +# version: {{ .Values.version }} +# values: +# - "values/generic-pitcher.values.yaml.gotmpl" +{{- if .Values.textCatcherEnabled }} - name: homerun-text-catcher installed: true namespace: {{ .Values.namespace }} @@ -57,7 +60,7 @@ releases: version: {{ .Values.version }} values: - "values/text-catcher.values.yaml.gotmpl" - +{{- end }} repositories: - name: stuttgart-things diff --git a/apps/tests/homerun-send-events.sh b/apps/tests/homerun-send-events.sh index 6653a4a6..75115031 100644 --- a/apps/tests/homerun-send-events.sh +++ b/apps/tests/homerun-send-events.sh @@ -3,17 +3,17 @@ #ADDRESS=https://homerun.homerun-dev.sthings-vsphere.labul.sva.de/generic #ADDRESS=https://k3s-sprechstunde.labul.sva.de/generic -read -p "ENTER COUNT MESSAGES [5]: " COUNT_MESSAGE +read -r -p "ENTER COUNT MESSAGES [5]: " COUNT_MESSAGE COUNT_MESSAGE=${COUNT_MESSAGE:-5} -echo $COUNT_MESSAGE +echo "$COUNT_MESSAGE" -read -p "ENTER ADDRESS [https://homerun.homerun-dev.sthings-vsphere.labul.sva.de/generic]: " ADDRESS +read -r -p "ENTER ADDRESS [https://homerun.homerun-dev.sthings-vsphere.labul.sva.de/generic]: " ADDRESS ADDRESS=${ADDRESS:-https://homerun.homerun-dev.sthings-vsphere.labul.sva.de/generic} -echo $ADDRESS +echo "$ADDRESS" -read -p "ENTER DELAY [10]: " DELAY +read -r -p "ENTER DELAY [10]: " DELAY DELAY=${DELAY:-5} -echo $DELAY +echo "$DELAY" # POSSIBLE DATA SYSTEMS=("github" "gitlab") #) "flux" "ansible") @@ -50,11 +50,16 @@ generate_random_email() { generate_random_timestamp() { # Generate random values for the timestamp components local year=$((RANDOM % 10 + 2024)) # Random year from 2024 to 2033 - local month=$(printf "%02d" $((RANDOM % 12 + 1))) # Random month from 01 to 12 - local day=$(printf "%02d" $((RANDOM % 28 + 1))) # Random day from 01 to 28 - local hour=$(printf "%02d" $((RANDOM % 24))) # Random hour from 00 to 23 - local minute=$(printf "%02d" $((RANDOM % 60))) # Random minute from 00 to 59 - local second=$(printf "%02d" $((RANDOM % 60))) # Random second from 00 to 59 + local month + month=$(printf "%02d" $((RANDOM % 12 + 1))) # Random month from 01 to 12 + local day + day=$(printf "%02d" $((RANDOM % 28 + 1))) # Random day from 01 to 28 + local hour + hour=$(printf "%02d" $((RANDOM % 24))) # Random hour from 00 to 23 + local minute + minute=$(printf "%02d" $((RANDOM % 60))) # Random minute from 00 to 59 + local second + second=$(printf "%02d" $((RANDOM % 60))) # Random second from 00 to 59 # Construct the ISO 8601 timestamp echo "${year}-${month}-${day}T${hour}:${minute}:${second}Z" @@ -89,7 +94,7 @@ generate_random_url() { echo "${protocol}://${subdomain}.${domain}/${path}" } -for ((i=1; i<=${COUNT_MESSAGE}; i++)); do +for ((i=1; i<=COUNT_MESSAGE; i++)); do RANDOM_TIMESTAMP=$(generate_random_timestamp) #echo "RANDOM TIMESTAMP: ${RANDOM_TIMESTAMP}" @@ -124,7 +129,7 @@ for ((i=1; i<=${COUNT_MESSAGE}; i++)); do ARTIFACT=$(get_random_item "${ARTIFACTS[@]}") #echo "ARTIFACT: ${ARTIFACT}" - printf "\nWAITING FOR ${DELAY} SECONDS BEFORE SENDING THE (NEXT) EVENT\n" + printf '\nWAITING FOR %s SECONDS BEFORE SENDING THE (NEXT) EVENT\n' "${DELAY}" sleep "$DELAY" # Pause für die angegebene Anzahl von Sekunden zwischen den Events curl -k -X POST "${ADDRESS}" \ diff --git a/apps/values/text-catcher.values.yaml.gotmpl b/apps/values/text-catcher.values.yaml.gotmpl index 486668c1..ff2ad3b4 100644 --- a/apps/values/text-catcher.values.yaml.gotmpl +++ b/apps/values/text-catcher.values.yaml.gotmpl @@ -1,15 +1,15 @@ --- text-catcher: - enabled: {{ .Values.textCatcher.enabled }} + enabled: {{ .Values.textCatcherEnabled }} configmaps: homerun-text-catcher: REDIS_STREAM: {{ .Values.stream }} - LOGGING: {{ .Values.textCatcher.logging }} + LOGGING: {{ .Values.textCatcherLogging }} secrets: - redis-connection-{{ .Values.textCatcher.name }}: - name: redis-connection-{{ .Values.textCatcher.name }} + redis-connection-{{ .Values.textCatcherName }}: + name: redis-connection-{{ .Values.textCatcherName }} labels: - app: {{ .Values.textCatcher.name }} + app: {{ .Values.textCatcherName }} dataType: stringData secretKVs: REDIS_SERVER: {{ .Values.redisStackServiceName }}.{{ .Release.Namespace }}.svc.cluster.local diff --git a/database/README.md b/database/README.md index eca637d0..4b0ab3ed 100644 --- a/database/README.md +++ b/database/README.md @@ -6,6 +6,17 @@ Database Helmfile templates for deploying common stateful services. ## SERVICES +
REDIS-STACK + +```bash +helmfile apply -f \ +git::https://github.com/stuttgart-things/helm.git@database/redis-stack.yaml.gotmpl \ +--state-values-set storageClass=openebs-hostpath \ +--state-values-set password= +``` + +
+
OPENLDAP ```bash diff --git a/database/redis-stack.yaml.gotmpl b/database/redis-stack.yaml.gotmpl index 831884c5..cc8b672e 100644 --- a/database/redis-stack.yaml.gotmpl +++ b/database/redis-stack.yaml.gotmpl @@ -8,6 +8,7 @@ environments: - password: - persistenceEnabled: true - storageClass: standard + - storageSize: 8Gi - imageRegistry: ghcr.io - imageRepository: stuttgart-things/redis-stack-server - redisStackVersion: 7.2.0-v18 #6.2.6-v9 diff --git a/database/values/redis-stack.yaml.gotmpl b/database/values/redis-stack.yaml.gotmpl index 46fecfd5..62bd428a 100644 --- a/database/values/redis-stack.yaml.gotmpl +++ b/database/values/redis-stack.yaml.gotmpl @@ -24,6 +24,7 @@ master: persistence: enabled: {{ .Values.persistenceEnabled }} storageClass: {{ .Values.storageClass }} + size: {{ .Values.storageSize }} args: - -c - /opt/bitnami/scripts/merged-start-scripts/start-master.sh @@ -39,6 +40,8 @@ replica: persistence: enabled: {{ .Values.persistenceEnabled }} storageClass: {{ .Values.storageClass }} + size: {{ .Values.storageSize }} + replicaCount: 1 args: - -c From 277aadd1493a87a9900c6694d00de72e714356c2 Mon Sep 17 00:00:00 2001 From: Patrick Hermann Date: Thu, 6 Nov 2025 19:29:56 +0000 Subject: [PATCH 4/4] feat: feat/add-homerun-base-stack --- apps/README.md | 39 ++++------ apps/homerun-base-stack.yaml.gotmpl | 71 ++++++++++--------- apps/tests/homerun-send-events.sh | 10 ++- apps/tests/homerun.md | 50 ------------- .../values/generic-pitcher.values.yaml.gotmpl | 56 +++++++-------- apps/values/redis-stack.values.yaml.gotmpl | 26 ------- database/README.md | 18 +++++ 7 files changed, 101 insertions(+), 169 deletions(-) delete mode 100644 apps/tests/homerun.md delete mode 100644 apps/values/redis-stack.values.yaml.gotmpl diff --git a/apps/README.md b/apps/README.md index 7ac83bd4..570f0160 100644 --- a/apps/README.md +++ b/apps/README.md @@ -10,38 +10,29 @@ App Helmfile templates. ```bash # BASIC APPLY -helmfile apply -f /home/sthings/projects/apps/helm/apps/homerun-base-stack.yaml.gotmpl --state-values-set redisStackStorageClass=openebs-hostpath +export redisPassword= +export genericPitcherToken= + +helmfile apply -f \ +git::https://github.com/stuttgart-things/helm.git@apps/apps/homerun-base-stack.yaml.gotmpl \ +--state-values-set redisStackStorageClass=openebs-hostpath\ +--state-values-set genericPitcherDomain=demo-infra.example.com ``` ```bash -# SET SECRETS AND APPLY - -export redisPassword=whaetver -export genericPitcherToken=whaetver +# CREATE REDISEARCH INDEX +sudo apt install redis-tools -y +kubectl port-forward -n homerun svc/redis-stack 6379:6379 +redis-cli -h localhost -p 6379 -a -helmfile apply -f homerun-base-stack.yaml +FT.CREATE homerun ON HASH PREFIX 1 "message:" SCHEMA messageID TEXT SORTABLE timestamp NUMERIC SORTABLE +FT._LIST ``` - - -
- - - -
REDIS-STACK - ```bash -# BASIC -cat < redis-stack.yaml ---- -helmfiles: - - path: git::https://github.com/stuttgart-things/helm.git@apps/redis-stack.yaml.gotmpl - values: - - namespace: redis-stack - - password: {{ env "REDIS_STACK_PASSWORD" | default "whateverpa$$w0rd" }} - - storageClass: standard -EOF +export HOMERUN_ADDRESS=https://homerun.demo-infra.whatever.de/generic +bash tests/homerun-send-events.sh ```
diff --git a/apps/homerun-base-stack.yaml.gotmpl b/apps/homerun-base-stack.yaml.gotmpl index 72c28a93..db6d6a57 100644 --- a/apps/homerun-base-stack.yaml.gotmpl +++ b/apps/homerun-base-stack.yaml.gotmpl @@ -2,35 +2,31 @@ environments: default: values: - - version: v0.2.1 - - namespace: homerun - - redisStackEnabled: true - - redisStackServiceType: ClusterIP - - redisStackStorageClass: openebs-hostpath - - redisStackStorageSize: 4Gi - - redisStackPort: 6379 - - redisStackServiceName: redis-stack-headless + - version: {{ .Values.version | default "v0.2.1" }} + - namespace: {{ .Values.namespace | default "homerun" }} + - redisStackEnabled: {{ .Values.redisStackEnabled | default true }} + - redisStackServiceType: {{ .Values.redisStackServiceType | default "ClusterIP" }} + - redisStackStorageClass: {{ .Values.redisStackStorageClass | default "openebs-hostpath" }} + - redisStackStorageSize: {{ .Values.redisStackStorageSize | default "4Gi" }} + - redisStackPort: {{ .Values.redisStackPort | default 6379 }} + - redisStackServiceName: {{ .Values.redisStackServiceName | default "redis-stack-headless" }} - redisStackPassword: {{ env "redisPassword" }} - - textCatcherEnabled: true - - textCatcherLogging: terminal - - textCatcherName: homerun-text-catcher - - ingressClass: nginx - - ingressPort: 80 - - stream: homerun - - searchIndex: homerun - - hostname: homerun - - domain: example.com - - issuerKind: ClusterIssuer - - issuerName: selfsigned - - persistenceEnabled: true - - storageClass: standard - - - genericPitcher: - enabled: true - name: homerun-generic-pitcher - port: 4000 - apiPath: generic - token: {{ env "genericPitcherToken" }} + - textCatcherEnabled: {{ .Values.textCatcherEnabled | default true }} + - textCatcherLogging: {{ .Values.textCatcherLogging | default "terminal" }} + - textCatcherName: {{ .Values.textCatcherName | default "homerun-text-catcher" }} + - genericPitcherEnabled: {{ .Values.genericPitcherEnabled | default true }} + - genericPitcherName: {{ .Values.genericPitcherName | default "homerun-generic-pitcher" }} + - genericPitcherIngressClass: {{ .Values.genericPitcherIngressClass | default "nginx" }} + - genericPitcherIngressPort: {{ .Values.genericPitcherIngressPort | default 80 }} + - genericPitcherContainerPort: {{ .Values.genericPitcherContainerPort | default 4000 }} + - genericPitcherApiPath: {{ .Values.genericPitcherApiPath | default "generic" }} + - genericPitcherHostname: {{ .Values.genericPitcherHostname | default "homerun" }} + - genericPitcherDomain: {{ .Values.genericPitcherDomain | default "example.com" }} + - genericPitcherIssuerKind: {{ .Values.genericPitcherIssuerKind | default "ClusterIssuer" }} + - genericPitcherIssuerName: {{ .Values.genericPitcherIssuerName | default "selfsigned" }} + - genericPitcherToken: {{ env "genericPitcherToken" }} + - stream: {{ .Values.stream | default "homerun" }} + - searchIndex: {{ .Values.searchIndex | default "homerun" }} {{- if .Values.redisStackEnabled }} helmfiles: @@ -44,13 +40,18 @@ helmfiles: {{- end }} releases: -# - name: homerun-generic-pitcher -# installed: true -# namespace: {{ .Values.namespace }} -# chart: stuttgart-things/homerun -# version: {{ .Values.version }} -# values: -# - "values/generic-pitcher.values.yaml.gotmpl" +{{- if .Values.genericPitcherEnabled }} + - name: homerun-generic-pitcher + installed: true + namespace: {{ .Values.namespace }} + chart: stuttgart-things/homerun + version: {{ .Values.version }} + values: + - "values/generic-pitcher.values.yaml.gotmpl" + set: + - name: genericPitcherDomain + value: {{ .Values.genericPitcherDomain }} +{{- end }} {{- if .Values.textCatcherEnabled }} - name: homerun-text-catcher diff --git a/apps/tests/homerun-send-events.sh b/apps/tests/homerun-send-events.sh index 75115031..04aec851 100644 --- a/apps/tests/homerun-send-events.sh +++ b/apps/tests/homerun-send-events.sh @@ -1,14 +1,12 @@ #!/bin/bash -#ADDRESS=https://homerun.fluxdev-2.sthings-vsphere.labul.sva.de/generic -#ADDRESS=https://homerun.homerun-dev.sthings-vsphere.labul.sva.de/generic -#ADDRESS=https://k3s-sprechstunde.labul.sva.de/generic read -r -p "ENTER COUNT MESSAGES [5]: " COUNT_MESSAGE COUNT_MESSAGE=${COUNT_MESSAGE:-5} echo "$COUNT_MESSAGE" -read -r -p "ENTER ADDRESS [https://homerun.homerun-dev.sthings-vsphere.labul.sva.de/generic]: " ADDRESS -ADDRESS=${ADDRESS:-https://homerun.homerun-dev.sthings-vsphere.labul.sva.de/generic} +ADDRESS_DEFAULT="${HOMERUN_ADDRESS:-https://your-custom-address.com/endpoint}" +read -r -p "ENTER ADDRESS [${ADDRESS_DEFAULT}]: " ADDRESS +ADDRESS=${ADDRESS:-$ADDRESS_DEFAULT} echo "$ADDRESS" read -r -p "ENTER DELAY [10]: " DELAY @@ -134,7 +132,7 @@ for ((i=1; i<=COUNT_MESSAGE; i++)); do curl -k -X POST "${ADDRESS}" \ -H "Content-Type: application/json" \ - -H "X-Auth-Token: IhrGeheimerToken" \ + -H "X-Auth-Token: Atlan7is2026!" \ -d "{ \"title\": \"${TITLE}\", \"message\": \"${MESSAGE}\", diff --git a/apps/tests/homerun.md b/apps/tests/homerun.md deleted file mode 100644 index 233f77e5..00000000 --- a/apps/tests/homerun.md +++ /dev/null @@ -1,50 +0,0 @@ -# STUTTGART-THINGS/HELM/HOMERUN-BASE-STACK - -## PREPARATION - -* FOR NEW CLUSTER ADD ENV FILE IN ./env/${ENV_NAME}.yaml -* ADD ENV IN HELMFILE homerun-base.yaml (environments) -* RENDER ENV - -```bash -helmfile template -f homerun-base.yaml -e ${ENV_NAME} -``` - -## DEPLOY - -```bash -ENV_NAME=fluxdev-2 -helmfile apply -f homerun-base.yaml -e ${ENV_NAME} -``` - -## TEST REDIS - -```bash -kubectl -n homerun port-forward services/homerun-redis-stack-headless 5000:6379 -redis-cli -h localhost -p 5000 -a ${PASSWORD} -``` - -## TEST HOMERUN-GENERIC-PITCHER - -```bash -ADDRESS=https://homerun.fluxdev-2.sthings-vsphere.labul.sva.de/generic #https://cluster-test1.labul.sva.de/generic - -curl -k -X POST "${ADDRESS}" \ - -H "Content-Type: application/json" \ - -H "X-Auth-Token: IhrGeheimerToken" \ - -d '{ - "title": "Memory System Alert", - "message": "Memory usage is high", - "severity": "warning", - "author": "monitoring-system", - "timestamp": "2024-5-01T12:00:00Z", - "system": "flux", - "tags": "cpu,usage,alert", - "assigneeaddress": "admin@example.com", - "assigneename": "Admin", - "artifacts": "Admin", - "url": "Admin" - }' -``` - -## TEST HOMERUN-TEXT-CATCHER diff --git a/apps/values/generic-pitcher.values.yaml.gotmpl b/apps/values/generic-pitcher.values.yaml.gotmpl index 6dc6f513..0fc0eb8c 100644 --- a/apps/values/generic-pitcher.values.yaml.gotmpl +++ b/apps/values/generic-pitcher.values.yaml.gotmpl @@ -1,11 +1,11 @@ --- generic-pitcher: - enabled: {{ .Values.genericPitcher.enabled }} + enabled: {{ .Values.genericPitcherEnabled }} configmaps: - {{ .Values.genericPitcher.name }}: - API_PATH: {{ .Values.genericPitcher.apiPath }} - PORT: "{{ .Values.genericPitcher.port }}" + {{ .Values.genericPitcherName }}: + API_PATH: {{ .Values.genericPitcherApiPath }} + PORT: "{{ .Values.genericPitcherContainerPort }}" REDIS_STREAM: {{ .Values.stream }} REDISEARCH_INDEX: {{ .Values.searchIndex }} @@ -13,15 +13,15 @@ generic-pitcher: generic-token: name: generic-token labels: - app: {{ .Values.genericPitcher.name }} + app: {{ .Values.genericPitcherName }} dataType: stringData secretKVs: - WEBHOOK_TOKEN: {{ .Values.genericPitcher.token }} + WEBHOOK_TOKEN: {{ .Values.genericPitcherToken }} - redis-connection-{{ .Values.genericPitcher.name }}: - name: redis-connection-{{ .Values.genericPitcher.name }} + redis-connection-{{ .Values.genericPitcherName }}: + name: redis-connection-{{ .Values.genericPitcherName }} labels: - app: {{ .Values.genericPitcher.name }} + app: {{ .Values.genericPitcherName }} dataType: stringData secretKVs: REDIS_SERVER: {{ .Values.redisStackServiceName }}.{{ .Release.Namespace }}.svc.cluster.local @@ -29,37 +29,37 @@ generic-pitcher: REDIS_PASSWORD: {{ .Values.redisStackPassword }} customresources: - {{ .Values.genericPitcher.name }}-certificate: + {{ .Values.genericPitcherName }}-certificate: apiVersion: cert-manager.io/v1 kind: Certificate metadata: - name: {{ .Values.genericPitcher.name }}-ingress + name: {{ .Values.genericPitcherName }}-ingress labels: - app: {{ .Values.genericPitcher.name }} + app: {{ .Values.genericPitcherName }} spec: - commonName: {{ .Values.hostname }}.{{ .Values.domain }} + commonName: {{ .Values.genericPitcherHostname }}.{{ .Values.genericPitcherDomain }} dnsNames: - - {{ .Values.hostname }}.{{ .Values.domain }} + - {{ .Values.genericPitcherHostname }}.{{ .Values.genericPitcherDomain }} issuerRef: - name: {{ .Values.issuerName }} - kind: {{ .Values.issuerKind }} - secretName: {{ .Values.genericPitcher.name }}-ingress-tls + name: {{ .Values.genericPitcherIssuerName }} + kind: {{ .Values.genericPitcherIssuerKind }} + secretName: {{ .Values.genericPitcherName }}-ingress-tls ingress: - {{ .Values.genericPitcher.name }}-ingress: + {{ .Values.genericPitcherName }}-ingress: labels: - app: {{ .Values.genericPitcher.name }} - name: {{ .Values.genericPitcher.name }} - ingressClassName: {{ .Values.ingressClass }} + app: {{ .Values.genericPitcherName }} + name: {{ .Values.genericPitcherName }} + ingressClassName: {{ .Values.genericPitcherIngressClass }} annotations: nginx.ingress.kubernetes.io/ssl-redirect: "true" service: - name: {{ .Values.genericPitcher.name }}-service - port: {{ .Values.ingressPort }} - path: /{{ .Values.genericPitcher.apiPath }} + name: {{ .Values.genericPitcherName }}-service + port: {{ .Values.genericPitcherContainerPort }} + path: /{{ .Values.genericPitcherApiPath }} pathType: Prefix - hostname: {{ .Values.hostname }} - domain: {{ .Values.domain }} + hostname: {{ .Values.genericPitcherHostname }} + domain: {{ .Values.genericPitcherDomain }} tls: - secretName: {{ .Values.genericPitcher.name }}-ingress-tls - host: {{ .Values.hostname }}.{{ .Values.domain }} + secretName: {{ .Values.genericPitcherName }}-ingress-tls + host: {{ .Values.genericPitcherHostname }}.{{ .Values.genericPitcherDomain }} diff --git a/apps/values/redis-stack.values.yaml.gotmpl b/apps/values/redis-stack.values.yaml.gotmpl deleted file mode 100644 index 4f397c4b..00000000 --- a/apps/values/redis-stack.values.yaml.gotmpl +++ /dev/null @@ -1,26 +0,0 @@ ---- -redis-stack: - enabled: {{ .Values.redisStackEnabled }} - sentinel: - service: - type: {{ .Values.redisStackServiceType }} - - - global: - password: {{ .Values.redisStackPassword }} - storageClass: {{ .Values.redisStackStorageClass }} - - master: - service: - type: {{ .Values.redisStackServiceType }} - - persistence: - enabled: {{ .Values.redisStackPersistenceEnabled }} - storageClass: {{ .Values.redisStackStorageClass }} - size: {{ .Values.redisStackStorageSize }} - - replica: - persistence: - enabled: {{ .Values.redisStackPersistenceEnabled }} - storageClass: {{ .Values.redisStackStorageClass }} - size: {{ .Values.redisStackStorageSize }} diff --git a/database/README.md b/database/README.md index 4b0ab3ed..e073f449 100644 --- a/database/README.md +++ b/database/README.md @@ -9,12 +9,30 @@ Database Helmfile templates for deploying common stateful services.
REDIS-STACK ```bash +# IMPERATIVE helmfile apply -f \ git::https://github.com/stuttgart-things/helm.git@database/redis-stack.yaml.gotmpl \ --state-values-set storageClass=openebs-hostpath \ --state-values-set password= ``` +
REDIS-STACK + +```bash +# DECLARATIVE +cat < redis-stack.yaml +--- +helmfiles: + - path: git::https://github.com/stuttgart-things/helm.git@apps/redis-stack.yaml.gotmpl + values: + - namespace: redis-stack + - password: {{ env "REDIS_STACK_PASSWORD" | default "whateverpa$$w0rd" }} + - storageClass: standard +EOF +``` + +
+
OPENLDAP