provisioning-catalog/components/fleet_daemon/cluster/fleet_daemon-lib.sh

82 lines
2 KiB
Bash
Executable file

#!/bin/bash
# Shared helpers for install-fleet_daemon.sh. Sourced, never executed.
_resolve_kubeconfig() {
if [ -n "${KUBECONFIG:-}" ] && [ -f "$KUBECONFIG" ]; then
return
fi
for candidate in \
/var/lib/k0s/pki/admin.conf \
/etc/kubernetes/admin.conf \
/root/.kube/config; do
if [ -f "$candidate" ]; then
export KUBECONFIG="$candidate"
return
fi
done
if command -v k0s >/dev/null 2>&1; then
local tmp
tmp="$(mktemp)"
if k0s kubeconfig admin > "$tmp" 2>/dev/null; then
export KUBECONFIG="$tmp"
return
fi
rm -f "$tmp"
fi
echo "ERROR: kubeconfig not found — set KUBECONFIG explicitly" >&2
exit 1
}
_kubectl() {
if command -v kubectl >/dev/null 2>&1; then
command kubectl "$@"
elif command -v k0s >/dev/null 2>&1; then
k0s kubectl "$@"
else
echo "ERROR: neither kubectl nor k0s found on PATH" >&2
exit 127
fi
}
_require_env() {
local var="$1"
if [ -z "${!var:-}" ]; then
echo "ERROR: required variable $var is not set" >&2
exit 1
fi
}
_namespace_exists() {
_kubectl get namespace "$FLEET_DAEMON_NAMESPACE" >/dev/null 2>&1
}
_deployment_exists() {
_kubectl get deployment "$FLEET_DAEMON_NAME" --namespace "$FLEET_DAEMON_NAMESPACE" >/dev/null 2>&1
}
_wait_for_deployment() {
local timeout="${1:-180}"
if command -v _diag_wait_for_deployment >/dev/null 2>&1; then
_diag_wait_for_deployment "$FLEET_DAEMON_NAME" "$FLEET_DAEMON_NAMESPACE" "$timeout"
else
_kubectl rollout status deployment/"$FLEET_DAEMON_NAME" \
--namespace "$FLEET_DAEMON_NAMESPACE" \
--timeout="${timeout}s"
fi
}
_crd_present() {
_kubectl get crd "$1" >/dev/null 2>&1
}
_cidrs_yaml_array() {
# Convert a space-separated CIDR list into yaml indented `from:` entries.
# $1 = indent prefix (e.g. " "), $2 = space-separated CIDRs
local prefix="$1"
shift
local out=""
for c in "$@"; do
out="${out}${prefix}- ipBlock:\n${prefix} cidr: ${c}\n"
done
printf '%b' "$out"
}