#!/bin/sh set -eu project_dir=$(CDPATH= cd -- "$(dirname -- "$0")/../.." && pwd) version=$(awk ' $1 == "chart:" && $2 == "authentik" { chart = 1; next } chart && $1 == "targetRevision:" { print $2; exit } ' "$project_dir/bootstrap/authentik.yaml") if [ -z "$version" ]; then echo "Could not determine the Authentik chart version." >&2 exit 1 fi pins=$(kubectl --namespace authentik exec deployment/authentik-worker -- \ ak shell --command \ 'from authentik.outposts.models import Outpost; [print(f"{o.name}={o.config.container_image}") for o in Outpost.objects.filter(name__in=["ldap", "radius", "rac"]).order_by("name")]') printf '%s\n' "$pins" if printf '%s\n' "$pins" | grep -Ev '^(ldap|rac|radius)=None$' >/dev/null; then echo "A managed outpost still has an explicit database image override." >&2 exit 1 fi for name in ldap radius rac; do expected="ghcr.io/goauthentik/$name:$version" actual=$(kubectl --namespace authentik get "deployment/ak-outpost-$name" \ --output='jsonpath={.spec.template.spec.containers[0].image}') replicas=$(kubectl --namespace authentik get "deployment/ak-outpost-$name" \ --output='jsonpath={.status.updatedReplicas}/{.status.readyReplicas}/{.status.availableReplicas}') if [ "$actual" != "$expected" ] || [ "$replicas" != "1/1/1" ]; then echo "ak-outpost-$name: expected $expected at 1/1/1, found $actual at $replicas" >&2 exit 1 fi echo "ak-outpost-$name: $actual, $replicas" done