69 lines
1.7 KiB
Markdown
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.
|