Skip to content

Commit 6b543e5

Browse files
authored
[backport][rancher 2.9] ci/build: Fix Rancher Project Monitoring Compatibility Issues (#280) (#284)
* ci/build: Fix Rancher Project Monitoring Compatibility Issues (#280) * Fix for local e2e testing * Add kuberlr target version to build constants * Add kuberlr version to Version script * Add util scripts to help set proper Kuberlr image versions * Add missing deps (cherry picked from commit e1c084c) * Update build.yaml to Rancher 2.9 kuberlr version * temp disable Kuberlr patch on 2.9 branch - enable after backporting Monitoring
1 parent 8236f8c commit 6b543e5

File tree

10 files changed

+148
-5
lines changed

10 files changed

+148
-5
lines changed

.github/workflows/e2e/scripts/entry

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,11 @@
22
set -e
33
set -x
44

5-
cd $(dirname $0)/../../../..
5+
E2E_SCRIPTS_ROOT=$(realpath $(dirname $0))
6+
GIT_ROOT=$(realpath "$E2E_SCRIPTS_ROOT/../../../..")
7+
8+
cd $GIT_ROOT
9+
source "$GIT_ROOT/scripts/version"
610

711
DEFAULT_SLEEP_TIMEOUT_SECONDS=${DEFAULT_SLEEP_TIMEOUT_SECONDS:-10}
812
KUBECTL_WAIT_TIMEOUT=${KUBECTL_WAIT_TIMEOUT:-120s}

.github/workflows/e2e/scripts/install-monitoring.sh

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,19 @@ set -x
44

55
source $(dirname $0)/entry
66

7-
HELM_REPO="rancher-charts"
7+
# Use a non-default name for making local E2E testing not clobber things
8+
HELM_REPO="e2e-rancher-charts"
89
HELM_REPO_URL="https://charts.rancher.io"
910

1011
cd $(dirname $0)/../../../..
1112

1213
helm version
1314

15+
# Fix for local e2e testing, remove repo before adding it to fix testing across branches
16+
set +x
17+
helm repo remove ${HELM_REPO} > /dev/null 2>&1 || true
18+
set -x
19+
1420
helm repo add ${HELM_REPO} $HELM_REPO_URL
1521
helm repo update
1622

build.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ rancherProjectMonitoringVersion: 0.3.4
22
rancherMonitoringVersion : 104.1.4+up57.0.3
33
k3sTestingMaxVersion: v1.30.11-k3s1
44
k3sTestingMinVersion: v1.27.16-k3s1
5+
kuberlrVersion: v1
56

67
# Dev use only
78
# devChartsSource: https://github.com/{Dev}/ob-team-charts

package/Dockerfile-prometheus-federator

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,17 @@ FROM registry.suse.com/bci/golang:1.23 AS builder
55

66
# Allow chart version config
77
ARG TARGETPLATFORM
8+
ARG TARGETARCH
89
ARG RANCHER_PROJECT_MONITORING=''
910
ARG TAG=''
1011
ARG REPO=''
12+
ARG YQ_VERSION='v4.25.1'
1113
ENV RANCHER_PROJECT_MONITORING=$RANCHER_PROJECT_MONITORING TAG=$TAG REPO=$REPO
1214

1315
WORKDIR /usr/src/app
14-
RUN zypper -n install git vim less file curl wget patch helm
16+
RUN zypper -n install git vim less file curl wget patch helm jq
17+
RUN wget https://github.com/mikefarah/yq/releases/download/${YQ_VERSION}/yq_linux_${TARGETARCH} -O /usr/bin/yq \
18+
&& chmod +x /usr/bin/yq
1519
COPY go.mod go.sum ./
1620
RUN go mod download
1721
COPY . .

pkg/buildconfig/constants.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

scripts/build-chart

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ set -e
66

77
source $(dirname $0)/version
88
source $(dirname $0)/util-chart
9+
source $(dirname $0)/util-rpm-chart
10+
source $(dirname $0)/util-kuberlr
911
source $(dirname $0)/util-team-charts
1012

1113
# We don't do this for helm-locker
@@ -30,6 +32,14 @@ if [ "$BUILD_TARGET" == "prometheus-federator" ]; then
3032
fetch-team-chart "rancher-project-monitoring" "$RANCHER_PROJECT_MONITORING"
3133
CHART_DESTINATION="./build/charts/${CHART}-${CHART_VERSION}.tgz"
3234

35+
echo "RPM Chart fetched, now preparing for PromFed..."
36+
KUBERLR_STABLE=$(find_latest_kuberlr_release $KUBERLR_TARGET)
37+
echo "Kuberlr Stable Target: $KUBERLR_STABLE"
38+
echo "Will modify Project Monitoring to use desired kuberlr version."
39+
expression=".global.kubectl.tag = \"${KUBERLR_STABLE}\""
40+
# TODO: Enable this when 2.9 gets the backported Monitoring version that uses Kuberlr
41+
#modify_helm_chart_values $CHART_DESTINATION "$expression"
42+
3343
# Prepare chart for embedding location
3444
base64 -i $CHART_DESTINATION > "cmd/prometheus-federator/fs/${CHART}.tgz.base64"
3545
elif [ "$BUILD_TARGET" == "helm-project-operator" ]; then

scripts/util-kuberlr

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
#!/bin/bash
2+
3+
GIT_ROOT=$(realpath $(dirname $0)/..)
4+
5+
# Set DEBUG=true to enable Bash trace mode
6+
DEBUG="${DEBUG:-false}"
7+
if [[ "$DEBUG" == "true" ]]; then
8+
set -x
9+
fi
10+
11+
GITHUB_REPO="rancher/kuberlr-kubectl"
12+
GITHUB_API="https://api.github.com/repos/$GITHUB_REPO/releases"
13+
14+
# Fetch tag names, optionally including prereleases
15+
function fetch_kuberlr_releases() {
16+
local include_prerelease="$1"
17+
18+
if [[ "$include_prerelease" == "true" ]]; then
19+
curl -s "$GITHUB_API" | jq -r '.[].tag_name'
20+
else
21+
curl -s "$GITHUB_API" | jq -r '.[] | select(.prerelease == false) | .tag_name'
22+
fi
23+
}
24+
25+
# Finds the latest release matching prefix, with optional prereleases
26+
# Usage: find_latest_release <version-prefix> [include_prerelease]
27+
function find_latest_kuberlr_release() {
28+
local prefix="$1"
29+
local include_prerelease="${2:-false}"
30+
31+
if [[ -z "$prefix" ]]; then
32+
echo "Usage: find_latest_release <version-prefix> [include_prerelease]" >&2
33+
return 1
34+
fi
35+
36+
fetch_kuberlr_releases "$include_prerelease" | \
37+
grep -E "^$prefix(\.|$)" | \
38+
sed 's/^v//' | \
39+
sort -Vr | \
40+
head -n1 | \
41+
sed 's/^/v/'
42+
}
43+
44+
# CLI interface - mainly for testing
45+
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
46+
prefix="$1"
47+
include_prerelease="${2:-false}"
48+
49+
if [[ -z "$prefix" ]]; then
50+
echo "Usage: $0 <version-prefix> [include_prerelease]" >&2
51+
echo " Example: $0 v5 # Latest stable v5 release" >&2
52+
echo " Example: $0 v3.4 true # Latest v3.4 including prereleases" >&2
53+
exit 1
54+
fi
55+
56+
latest=$(find_latest_kuberlr_release "$prefix" "$include_prerelease")
57+
if [[ -n "$latest" ]]; then
58+
echo "$latest"
59+
else
60+
echo "No matching releases found for prefix '$prefix'" >&2
61+
exit 2
62+
fi
63+
fi

scripts/util-rpm-chart

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
#!/usr/bin/env bash
2+
3+
source $(dirname "$0")/util-chart
4+
5+
CHART_NAME="rancher-project-monitoring"
6+
CHART_VALUES_PATH="$CHART_NAME/values.yaml"
7+
8+
# unpacks the chart to provided temp dir
9+
function unpack_chart() {
10+
local chart_file="$1"
11+
local temp_dir="$2"
12+
13+
mkdir -p "$temp_dir"
14+
tar -xzf "$chart_file" -C "$temp_dir"
15+
}
16+
17+
# modify the chart's values file via yq expression
18+
function modify_values_yaml() {
19+
local chart_dir="$1"
20+
local yq_expression="$2"
21+
22+
local values_file="$chart_dir/$CHART_VALUES_PATH"
23+
24+
if [[ ! -f "$values_file" ]]; then
25+
echo "Error: $CHART_VALUES_PATH not found." >&2
26+
return 1
27+
fi
28+
29+
yq -i "$yq_expression" "$values_file"
30+
}
31+
32+
# warps the modification process into a single function
33+
function modify_helm_chart_values() {
34+
local chart_file="$1"
35+
local yq_expression="$2"
36+
37+
if [[ ! -f "$chart_file" || -z "$yq_expression" ]]; then
38+
echo "Usage: modify_helm_chart_values <chart.tgz> <yq_expression>" >&2
39+
return 1
40+
fi
41+
42+
local temp_dir
43+
temp_dir=$(mktemp -d)
44+
45+
unpack_chart "$chart_file" "$temp_dir"
46+
modify_values_yaml "$temp_dir" "$yq_expression"
47+
48+
# Extracted chart dir (e.g., /tmp/tmp.XYZ/rancher-project-monitoring)
49+
local chart_dir="$temp_dir/$CHART_NAME"
50+
51+
package-chart "$chart_dir" "$(dirname "$chart_file")"
52+
53+
rm -rf "$temp_dir"
54+
}

scripts/util-team-charts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
#!/usr/bin/env bash
2-
set -x
3-
42

53
CHARTS_REPO="https://raw.githubusercontent.com/rancher/ob-team-charts"
64
CHARTS_BRANCH="main"

scripts/version

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ ROOT_DIR=$(dirname "$(realpath "$(dirname "${BASH_SOURCE[0]}")")")
4646
BUILD_YAML_PATH="$ROOT_DIR/build.yaml"
4747
RANCHER_PROJECT_MONITORING=${RANCHER_PROJECT_MONITORING:-$(grep 'rancherProjectMonitoringVersion' "$BUILD_YAML_PATH"|cut -d: -f2|tr -d ' ')}
4848
RANCHER_MONITORING=${RANCHER_MONITORING:-$(grep 'rancherMonitoringVersion' "$BUILD_YAML_PATH"|cut -d: -f2|tr -d ' ')}
49+
KUBERLR_TARGET=${KUBERLR_TARGET:-$(grep 'kuberlrVersion' "$BUILD_YAML_PATH"|cut -d: -f2|tr -d ' ')}
4950

5051
function print_version_debug() {
5152
echo "DIRTY: $DIRTY"
@@ -58,5 +59,6 @@ function print_version_debug() {
5859
echo "BUILD_YAML_PATH: $BUILD_YAML_PATH"
5960
echo "RANCHER PROJECT MONITORING: $RANCHER_PROJECT_MONITORING"
6061
echo "RANCHER MONITORING: $RANCHER_MONITORING"
62+
echo "KUBERLR TARGET: $KUBERLR_TARGET"
6163
}
6264
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then print_version_debug "$1"; fi

0 commit comments

Comments
 (0)