Add missing update-outpost-images.sh
Validate and deploy Authentik / validate (push) Successful in 19s
Validate and deploy Authentik / deploy (push) Successful in 21s

This commit is contained in:
2026-10-14 20:20:37 +02:00
parent c85f09b3bb
commit 83f7f510bb
+42
View File
@@ -0,0 +1,42 @@
#!/bin/sh
set -eu
if [ "$(kubectl config current-context)" != 'kubernetes-admin@kubernetes' ]; then
echo 'Expected the homelab Kubernetes context; refusing to update outposts.' >&2
exit 1
fi
# Authentik stores managed outpost image pins in its database. Keep them on
# the same release as the server; changing the Helm chart alone does not do so.
for entry in \
'ldap ghcr.io/goauthentik/ldap:2026.8.3' \
'radius ghcr.io/goauthentik/radius:2026.8.3' \
'rac ghcr.io/goauthentik/rac:2026.8.3'
do
name=${entry%% *}
image=${entry#* }
kubectl --namespace authentik exec deployment/authentik-worker -- \
ak shell --command "from authentik.outposts.models import Outpost; o = Outpost.objects.get(name='$name', type='$name'); c = o.config; old = c.container_image; c.container_image = '$image'; o.config = c; o.save() if old != c.container_image else None; print('Outpost image:', o.name, c.container_image)"
attempt=0
while [ "$(kubectl --namespace authentik get "deployment/ak-outpost-$name" --output='jsonpath={.spec.template.spec.containers[0].image}')" != "$image" ]; do
attempt=$((attempt + 1))
if [ "$attempt" -ge 60 ]; then
echo "Timed out waiting for Authentik to update the $name deployment image." >&2
exit 1
fi
sleep 5
done
# The outpost controller may recreate the Deployment during reconciliation,
# which makes `kubectl rollout status` fail with "object has been deleted".
attempt=0
while [ "$(kubectl --namespace authentik get "deployment/ak-outpost-$name" --output='jsonpath={.status.availableReplicas}' 2>/dev/null)" != '1' ]; do
attempt=$((attempt + 1))
if [ "$attempt" -ge 180 ]; then
echo "Timed out waiting for the $name outpost to become available." >&2
exit 1
fi
sleep 5
done
echo "Outpost $name is available on $image"
done