diff --git a/k8s/applications/homarr/fix-probes-job.yaml b/k8s/applications/homarr/fix-probes-job.yaml new file mode 100644 index 0000000..5b60e3d --- /dev/null +++ b/k8s/applications/homarr/fix-probes-job.yaml @@ -0,0 +1,90 @@ +# PostSync hook to patch Homarr deployment probes +# Chart v8.23.0 doesn't support probe customization via values +apiVersion: batch/v1 +kind: Job +metadata: + name: homarr-fix-probes + namespace: dashboard + annotations: + argocd.argoproj.io/hook: PostSync + argocd.argoproj.io/hook-delete-policy: BeforeHookCreation +spec: + backoffLimit: 3 + template: + spec: + restartPolicy: Never + serviceAccountName: homarr-probe-patcher + containers: + - name: patch + image: bitnami/kubectl:1.31 + command: + - /bin/bash + - -c + - | + set -e + echo "Patching Homarr deployment probes..." + + kubectl -n dashboard patch deployment homarr --type=json -p='[ + { + "op": "replace", + "path": "/spec/template/spec/containers/0/livenessProbe/initialDelaySeconds", + "value": 60 + }, + { + "op": "replace", + "path": "/spec/template/spec/containers/0/livenessProbe/periodSeconds", + "value": 30 + }, + { + "op": "replace", + "path": "/spec/template/spec/containers/0/livenessProbe/timeoutSeconds", + "value": 5 + }, + { + "op": "replace", + "path": "/spec/template/spec/containers/0/readinessProbe/initialDelaySeconds", + "value": 45 + }, + { + "op": "replace", + "path": "/spec/template/spec/containers/0/readinessProbe/periodSeconds", + "value": 15 + }, + { + "op": "replace", + "path": "/spec/template/spec/containers/0/readinessProbe/timeoutSeconds", + "value": 5 + } + ]' + + echo "Probes patched successfully" +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: homarr-probe-patcher + namespace: dashboard +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: homarr-probe-patcher + namespace: dashboard +rules: +- apiGroups: ["apps"] + resources: ["deployments"] + verbs: ["get", "patch"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: homarr-probe-patcher + namespace: dashboard +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: homarr-probe-patcher +subjects: +- kind: ServiceAccount + name: homarr-probe-patcher + namespace: dashboard diff --git a/k8s/applications/homarr/homarr-values.yaml b/k8s/applications/homarr/homarr-values.yaml index 25575ad..18fb44a 100644 --- a/k8s/applications/homarr/homarr-values.yaml +++ b/k8s/applications/homarr/homarr-values.yaml @@ -1,5 +1,5 @@ -# Homarr landing page - minimal config to get it running -# SSO will be added after basic deployment works +# Homarr landing page - minimal config +# Probes patched via PostSync hook (chart doesn't support customization) image: repository: ghcr.io/homarr-labs/homarr diff --git a/k8s/applications/homarr/kustomization.yaml b/k8s/applications/homarr/kustomization.yaml index 677fc65..233778c 100644 --- a/k8s/applications/homarr/kustomization.yaml +++ b/k8s/applications/homarr/kustomization.yaml @@ -3,5 +3,4 @@ kind: Kustomization namespace: dashboard resources: - homarr-secrets.enc.yaml -# Homarr deployed via Helm chart (values in 60-applications.yaml multi-source Application). -# This kustomization just holds the SOPS-encrypted SECRET_ENCRYPTION_KEY. + - fix-probes-job.yaml diff --git a/k8s/argocd/apps/60-applications.yaml b/k8s/argocd/apps/60-applications.yaml index 11f84f4..d0d25ed 100644 --- a/k8s/argocd/apps/60-applications.yaml +++ b/k8s/argocd/apps/60-applications.yaml @@ -161,3 +161,25 @@ spec: selfHeal: true syncOptions: - CreateNamespace=true + +--- +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: homarr-patches + namespace: argocd + annotations: + argocd.argoproj.io/sync-wave: "9" # After homarr (wave 8) +spec: + project: homelab + source: + repoURL: https://forgejo.riotpiao.com/riotpiao.com/homelab.git + targetRevision: main + path: k8s/applications/homarr + destination: + server: https://kubernetes.default.svc + namespace: dashboard + syncPolicy: + automated: + prune: true + selfHeal: true