homelab/manifests/authentik/authentik-proxy-outpost.yaml
Nik Afiq d44295f569 fix: add resource requests/limits and probes to workloads that had none
Stage 7 of REFACTOR_PLAN.md (findings #16). Covers dashy, glances,
ca-installer, authentik-proxy-outpost, jellyfin, qbittorrent/jdownloader main
containers (their gluetun sidecars already had probes), and all 4 Immich
Deployments -- previously none of these had any protection against one
workload starving another on this fixed-capacity cluster, nor automatic
restart on hang.

Values are sized from live `kubectl top pod` baselines gathered this session
(not guessed): e.g. Jellyfin/Immich-server were observed at ~3.1-3.3Gi
resident, so their limits give headroom above that (4Gi) rather than an
arbitrary round number. Used tcpSocket probes instead of httpGet wherever I
wasn't certain of an app's exact health-check path (Immich, Postgres/Redis),
to avoid a wrong path causing false probe failures on a live service.

This is Kubernetes-native and takes effect on next pod restart, but should
still be rolled out watching `kubectl top`/restart counts rather than pushed
and forgotten -- limits set too low can OOMKill under real load.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-23 18:21:03 +09:00

74 lines
1.8 KiB
YAML

# Apply: kubectl apply -f manifests/authentik/authentik-proxy-outpost.yaml
# Delete: kubectl delete -f manifests/authentik/authentik-proxy-outpost.yaml
# Description: Authentik proxy outpost deployment and service for forward-auth integration.
apiVersion: v1
kind: ServiceAccount
metadata:
name: authentik-proxy-outpost
namespace: authentik
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: authentik-proxy-outpost
namespace: authentik
spec:
replicas: 1
selector:
matchLabels:
app: authentik-proxy-outpost
template:
metadata:
labels:
app: authentik-proxy-outpost
spec:
serviceAccountName: authentik-proxy-outpost
containers:
- name: proxy
image: ghcr.io/goauthentik/proxy:2026.2.1
env:
- name: AUTHENTIK_HOST
value: "https://auth.home.arpa"
- name: AUTHENTIK_INSECURE
value: "true"
- name: AUTHENTIK_TOKEN
valueFrom:
secretKeyRef:
name: authentik-proxy-token
key: token
ports:
- containerPort: 9000
name: http
- containerPort: 9443
name: https
readinessProbe:
tcpSocket:
port: 9000
initialDelaySeconds: 10
periodSeconds: 15
livenessProbe:
tcpSocket:
port: 9000
initialDelaySeconds: 20
periodSeconds: 30
resources:
requests:
cpu: 20m
memory: 64Mi
limits:
cpu: 200m
memory: 256Mi
---
apiVersion: v1
kind: Service
metadata:
name: authentik-proxy-outpost
namespace: authentik
spec:
selector:
app: authentik-proxy-outpost
ports:
- name: http
port: 9000
targetPort: 9000