From b18501c24d0ee097b15f81014ce1a2b62d0386bd Mon Sep 17 00:00:00 2001 From: Kushal Shukla Date: Fri, 8 Nov 2024 22:11:23 +0530 Subject: [PATCH] Added yaml file changes and prometheus builder changes that was removed from block-sync. Signed-off-by: Kushal Shukla --- prombench/docs/kind.md | 15 +++++- .../3b_prometheus-test_deployment.yaml | 52 ++++++++++++++++++- tools/prometheus-builder/Dockerfile | 2 + tools/prometheus-builder/build.sh | 11 ++++ tools/prometheus-builder/key.sh | 36 +++++++++++++ 5 files changed, 114 insertions(+), 2 deletions(-) create mode 100644 tools/prometheus-builder/key.sh diff --git a/prombench/docs/kind.md b/prombench/docs/kind.md index 9b054c1b4..c2ee5d126 100644 --- a/prombench/docs/kind.md +++ b/prombench/docs/kind.md @@ -114,7 +114,20 @@ If used with the GitHub integration: export PR_NUMBER= ``` -2. Deploy the Kubernetes objects: +2. Before applying benchmarking objects , You have two choices to make: +- **Option 1: Download data from object storage** + + To download data from object storage, create a Kubernetes secret with exact named `bucket-config` and file name ```object-config.yml``` with the necessary credentials as per your object storage. This secret enables access to the stored data. +> Note: Make sure this secret applied before ```3b_prometheus-test_deployment.yaml``` +- **Option 2: Skip downloading data** + + If you don’t need to download data, edit the `3b_prometheus-test_deployment.yaml` file: + + - Remove the `bucket-config` volume section from. + - Remove the `volumeMount` section name `bucket-config` from `data-downloader`. +> Note: You have to remove these two sections from both prometheus-test-pr-{{ .PR_NUMBER }} and prometheus-test-{{ normalise .RELEASE }} deployments. + +3. Deploy the Kubernetes objects: > **_Note:_** If you encounter a `too many files open` error caused by promtail, increase the default value of `/proc/sys/fs/inotify/max_user_instances` from 128 to 512: > ```bash > sudo sysctl fs.inotify.max_user_instances=512 diff --git a/prombench/manifests/prombench/benchmark/3b_prometheus-test_deployment.yaml b/prombench/manifests/prombench/benchmark/3b_prometheus-test_deployment.yaml index a64a001e3..b6a729663 100644 --- a/prombench/manifests/prombench/benchmark/3b_prometheus-test_deployment.yaml +++ b/prombench/manifests/prombench/benchmark/3b_prometheus-test_deployment.yaml @@ -34,7 +34,7 @@ spec: runAsUser: 0 initContainers: - name: prometheus-builder - image: docker.io/prominfra/prometheus-builder:master + image: kushalshukla/builder imagePullPolicy: Always env: - name: PR_NUMBER @@ -48,6 +48,18 @@ spec: volumeMounts: - name: prometheus-executable mountPath: /prometheus-builder + - name: key + mountPath: /config + - name: data-downloader + image: kushalshukla/writer + imagePullPolicy: Always + volumeMounts: + - name: instance-ssd + mountPath: /data + - name: bucket-config + mountPath: /config + - name: key + mountPath: /key containers: - name: prometheus image: quay.io/prometheus/busybox:latest @@ -88,6 +100,11 @@ spec: path: /mnt/disks/ssd0 #gke ssds - name: prometheus-executable emptyDir: {} + - name: bucket-config # Define the Secret volume + secret: + secretName: bucket-secret + - name: key + emptyDir: {} terminationGracePeriodSeconds: 300 nodeSelector: node-name: prometheus-{{ .PR_NUMBER }} @@ -144,6 +161,31 @@ spec: - prometheus securityContext: runAsUser: 0 + initContainers: + - name: download-key + image: kushalshukla/builder + imagePullPolicy: Always + command: [ "/download-key/key.sh" ] + env: + - name: PR_NUMBER + value: "{{ .PR_NUMBER }}" + - name: GITHUB_ORG + value: "{{ .GITHUB_ORG }}" + - name: GITHUB_REPO + value: "{{ .GITHUB_REPO }}" + volumeMounts: + - name: key + mountPath: /config + - name: data-downloader + image: kushalshukla/writer + imagePullPolicy: Always + volumeMounts: + - name: instance-ssd + mountPath: /data + - name: bucket-config + mountPath: /config + - name: key + mountPath: /key containers: - name: prometheus image: quay.io/prometheus/prometheus:{{ .RELEASE }} @@ -172,6 +214,14 @@ spec: # /mnt is where GKE keeps it's SSD # don't change this if you want Prometheus to take advantage of these local SSDs path: /mnt/disks/ssd0 + - name: config + hostPath: + path: /object-config + - name: bucket-config # Define the Secret volume + secret: + secretName: bucket-secret + - name: key + emptyDir: {} terminationGracePeriodSeconds: 300 nodeSelector: node-name: prometheus-{{ .PR_NUMBER }} diff --git a/tools/prometheus-builder/Dockerfile b/tools/prometheus-builder/Dockerfile index 96bb9576e..a040a5884 100644 --- a/tools/prometheus-builder/Dockerfile +++ b/tools/prometheus-builder/Dockerfile @@ -4,6 +4,8 @@ RUN mkdir -p /go/src/github.com COPY ./build.sh /go/src/github.com/build.sh +COPY ./key.sh /download-key/key.sh + RUN chmod +x /go/src/github.com/build.sh ENTRYPOINT ["/go/src/github.com/build.sh"] diff --git a/tools/prometheus-builder/build.sh b/tools/prometheus-builder/build.sh index a07328e62..e40f5294a 100755 --- a/tools/prometheus-builder/build.sh +++ b/tools/prometheus-builder/build.sh @@ -24,6 +24,17 @@ fi git checkout pr-branch +# Here, MKDIR is specified in the volumeMount section of the prometheus-builder init container, +# where it will copy the key.yml file from the Prometheus directory to the volume section of the +# emptyDir. This file will later be used by the data-downloader init container. +MKDIR="/config" +if [ -f "$DIR/key.yml" ]; then + echo "File exists." + cp "$DIR/key.yml" "$MKDIR/key.yml" +else + echo "File does not exist." +fi + echo ">> Creating prometheus binaries" if ! make build PROMU_BINARIES="prometheus"; then echo "ERROR:: Building of binaries failed" diff --git a/tools/prometheus-builder/key.sh b/tools/prometheus-builder/key.sh new file mode 100644 index 000000000..270f82803 --- /dev/null +++ b/tools/prometheus-builder/key.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +DIR="/go/src/github.com/prometheus/prometheus" + +if [[ -z $PR_NUMBER || -z $VOLUME_DIR || -z $GITHUB_ORG || -z $GITHUB_REPO ]]; then + echo "ERROR:: environment variables not set correctly" + exit 1; +fi + +# Clone the repository with a shallow clone +echo ">> Cloning repository $GITHUB_ORG/$GITHUB_REPO (shallow clone)" +if ! git clone --depth 1 https://github.com/$GITHUB_ORG/$GITHUB_REPO.git $DIR; then + echo "ERROR:: Cloning of repo $GITHUB_ORG/$GITHUB_REPO failed" + exit 1; +fi + +cd $DIR || exit 1 + +echo ">> Fetching Pull Request $GITHUB_ORG/$GITHUB_REPO/pull/$PR_NUMBER" +if ! git fetch origin pull/$PR_NUMBER/head:pr-branch; then + echo "ERROR:: Fetching of PR $PR_NUMBER failed" + exit 1; +fi + +git checkout pr-branch + +# Here, MKDIR is specified in the volumeMount section of the prometheus-builder init container, +# where it will copy the key.yml file from the Prometheus directory to the volume section of the +# emptyDir. This file will later be used by the data-downloader init container. +MKDIR="/config" +if [ -f "$DIR/key.yml" ]; then + echo "File exists." + cp "$DIR/key.yml" "$MKDIR/key.yml" +else + echo "File does not exist." +fi