Deploy ImmichFrame with Argo CD

This commit is contained in:
2026-10-18 13:49:39 +02:00
parent a89a1bca39
commit 151f4d0e34
4 changed files with 35 additions and 0 deletions
+9
View File
@@ -6,14 +6,23 @@ container images and then commits the selected image tag here; it never receives
## Repository layout
- `apps/immich-sync/` is the desired Kubernetes state for Immich Share Sync.
- `apps/immichframe/` wraps the reusable ImmichFrame chart with this cluster's
hostname, album selection, resources, and encrypted API credential.
- `bootstrap/` contains Argo CD projects and Applications, including the
upstream Sealed Secrets controller.
- `scripts/update-immich-sync-image.sh` is the single image-promotion interface used by CI.
- `scripts/update-immichframe-chart.sh` is the chart-promotion interface used
by ImmichFrame chart CI.
The only canonical Immich Share Sync image version is `images[0].newTag` in
`apps/immich-sync/kustomization.yaml`. The resource manifest deliberately omits a tag, and Kustomize supplies the
immutable full Git SHA while rendering.
The only canonical ImmichFrame chart version is the `immichframe` dependency
in `apps/immichframe/Chart.yaml`. Chart CI publishes a unique immutable version
and commits that dependency update here. The chart owns the reusable workload
shape; `apps/immichframe/values.yaml` owns only this cluster's choices.
## First-time setup
The cluster already runs Argo CD in the `argocd` namespace and exposes its UI at <https://cd.brunner.ninja>.
+19
View File
@@ -0,0 +1,19 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: immichframe
namespace: argocd
spec:
project: homelab
source:
repoURL: https://code.brunner.ninja/feedc0de/homelab-gitops.git
targetRevision: main
path: apps/immichframe
destination:
server: https://kubernetes.default.svc
namespace: default
syncPolicy:
automated:
enabled: true
prune: false
selfHeal: true
+6
View File
@@ -23,3 +23,9 @@ kubectl --namespace argocd wait application/sealed-secrets \
kubectl --namespace argocd wait application/sealed-secrets \
--for=jsonpath='{.status.health.status}'=Healthy \
--timeout=5m
kubectl --namespace argocd wait application/immichframe \
--for=jsonpath='{.status.sync.status}'=Synced \
--timeout=5m
kubectl --namespace argocd wait application/immichframe \
--for=jsonpath='{.status.health.status}'=Healthy \
--timeout=5m
+1
View File
@@ -5,3 +5,4 @@ resources:
- platform-project.yaml
- sealed-secrets.yaml
- immich-sync.yaml
- immichframe.yaml