longhorn: apply settings via api job
This commit is contained in:
parent
71a1a55a01
commit
42e987f4ee
@ -2,7 +2,7 @@
|
|||||||
apiVersion: batch/v1
|
apiVersion: batch/v1
|
||||||
kind: Job
|
kind: Job
|
||||||
metadata:
|
metadata:
|
||||||
name: longhorn-settings-ensure-1
|
name: longhorn-settings-ensure-2
|
||||||
namespace: longhorn-system
|
namespace: longhorn-system
|
||||||
spec:
|
spec:
|
||||||
backoffLimit: 0
|
backoffLimit: 0
|
||||||
@ -28,7 +28,7 @@ spec:
|
|||||||
operator: Exists
|
operator: Exists
|
||||||
containers:
|
containers:
|
||||||
- name: apply
|
- name: apply
|
||||||
image: bitnami/kubectl@sha256:554ab88b1858e8424c55de37ad417b16f2a0e65d1607aa0f3fe3ce9b9f10b131
|
image: docker.io/alpine:3.20
|
||||||
command: ["/scripts/longhorn_settings_ensure.sh"]
|
command: ["/scripts/longhorn_settings_ensure.sh"]
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: longhorn-settings-ensure-script
|
- name: longhorn-settings-ensure-script
|
||||||
|
|||||||
@ -1,18 +1,35 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env sh
|
||||||
set -euo pipefail
|
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() {
|
api_base="http://longhorn-backend.longhorn-system.svc:9500/v1/settings"
|
||||||
local name="$1"
|
|
||||||
local value="$2"
|
|
||||||
|
|
||||||
kubectl -n "${namespace}" patch setting.longhorn.io "${name}" \
|
wait_for_api() {
|
||||||
--type=merge \
|
attempts=30
|
||||||
-p "{\"value\":\"${value}\"}" >/dev/null
|
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"
|
update_setting() {
|
||||||
patch_setting default-instance-manager-image "registry.bstein.dev/infra/longhorn-instance-manager:v1.8.2"
|
name="$1"
|
||||||
patch_setting default-backing-image-manager-image "registry.bstein.dev/infra/longhorn-backing-image-manager:v1.8.2"
|
value="$2"
|
||||||
patch_setting support-bundle-manager-image "registry.bstein.dev/infra/longhorn-support-bundle-kit:v0.0.56"
|
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"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user