# Apps Application deployments managed by Flux. Each app lives in its own directory with a Kustomize-based layout. ## Gitea (Example App) The included Gitea deployment consists of: | File | Contents | |------|----------| | `gitea/install/kustomization.yaml` | Lists the resources Flux should apply | | `gitea/install/postgresql.yaml` | PostgreSQL Secret, Service, and StatefulSet | | `gitea/install/gitea.yaml` | Gitea PVC, HTTP/SSH Services, and Deployment | The IngressRoute for Gitea lives in `infrastructure/routes/gitea.yaml` (routes are managed at the infrastructure layer). ## Adding Your Own App Here's the checklist for adding a new app. For a full walkthrough with example files, see [`../docs/adding-an-app.md`](../docs/adding-an-app.md). ### 1. Create a namespace Add your namespace to `bootstrap/ns/apps.yaml`: ```yaml --- apiVersion: v1 kind: Namespace metadata: name: my-app ``` ### 2. Create app manifests Create `apps/my-app/install/` with: - `kustomization.yaml` listing your resource files - Your Kubernetes manifests (Deployments, Services, PVCs, Secrets, etc.) ### 3. Create a Flux Kustomization Add `bootstrap/kustomization/apps/my-app/my-app-install.yaml`: ```yaml apiVersion: kustomize.toolkit.fluxcd.io/v1 kind: Kustomization metadata: name: install-my-app--app namespace: flux-system spec: interval: 5m timeout: 4m dependsOn: - name: install-traefik--infra path: ./apps/my-app/install prune: true wait: true sourceRef: kind: GitRepository name: flux-system ``` ### 4. Create an IngressRoute Add `infrastructure/routes/my-app.yaml` with your Traefik IngressRoute (use `gitea.yaml` as a template). ### 5. Commit and push Flux will detect the changes and deploy your app automatically.