Files
homelab-starter/apps/README.md
2026-02-14 10:46:57 -05:00

69 lines
1.7 KiB
Markdown

# 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.