longhorn: apply settings via api job

This commit is contained in:
Brad Stein 2026-01-16 20:11:22 -03:00
parent 71a1a55a01
commit 42e987f4ee
2 changed files with 32 additions and 15 deletions

View File

@ -2,7 +2,7 @@
apiVersion: batch/v1
kind: Job
metadata:
name: longhorn-settings-ensure-1
name: longhorn-settings-ensure-2
namespace: longhorn-system
spec:
backoffLimit: 0
@ -28,7 +28,7 @@ spec:
operator: Exists
containers:
- name: apply
image: bitnami/kubectl@sha256:554ab88b1858e8424c55de37ad417b16f2a0e65d1607aa0f3fe3ce9b9f10b131
image: docker.io/alpine:3.20
command: ["/scripts/longhorn_settings_ensure.sh"]
volumeMounts:
- name: longhorn-settings-ensure-script

View File

@ -1,18 +1,35 @@
#!/usr/bin/env bash
set -euo pipefail
#!/usr/bin/env sh
set -eu
namespace="longhorn-system"
# Longhorn blocks direct CR patches for some settings; use the internal API instead.
apk add --no-cache curl >/dev/null
patch_setting() {
local name="$1"
local value="$2"
api_base="http://longhorn-backend.longhorn-system.svc:9500/v1/settings"
kubectl -n "${namespace}" patch setting.longhorn.io "${name}" \
--type=merge \
-p "{\"value\":\"${value}\"}" >/dev/null
wait_for_api() {
attempts=30
while [ "${attempts}" -gt 0 ]; do
if curl -fsS "${api_base}" >/dev/null 2>&1; then
return 0
fi
attempts=$((attempts - 1))
sleep 2
done
echo "Longhorn API not ready after retries." >&2
return 1
}
patch_setting default-engine-image "registry.bstein.dev/infra/longhorn-engine:v1.8.2"
patch_setting default-instance-manager-image "registry.bstein.dev/infra/longhorn-instance-manager:v1.8.2"
patch_setting default-backing-image-manager-image "registry.bstein.dev/infra/longhorn-backing-image-manager:v1.8.2"
patch_setting support-bundle-manager-image "registry.bstein.dev/infra/longhorn-support-bundle-kit:v0.0.56"
update_setting() {
name="$1"
value="$2"
curl -fsS -X PUT \
-H "Content-Type: application/json" \
-d "{\"value\":\"${value}\"}" \
"${api_base}/${name}" >/dev/null
}
wait_for_api
update_setting default-engine-image "registry.bstein.dev/infra/longhorn-engine:v1.8.2"
update_setting default-instance-manager-image "registry.bstein.dev/infra/longhorn-instance-manager:v1.8.2"
update_setting default-backing-image-manager-image "registry.bstein.dev/infra/longhorn-backing-image-manager:v1.8.2"
update_setting support-bundle-manager-image "registry.bstein.dev/infra/longhorn-support-bundle-kit:v0.0.56"