mirror of
https://github.com/morten-olsen/homelab-apps.git
synced 2026-02-08 01:36:28 +01:00
80 lines
2.2 KiB
Markdown
80 lines
2.2 KiB
Markdown
# Application Helm Charts Guide
|
|
|
|
This document provides guidelines for creating and maintaining Helm charts in this homelab project.
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
apps/
|
|
├── charts/ # Individual application Helm charts
|
|
│ ├── app-name/
|
|
│ │ ├── Chart.yaml
|
|
│ │ ├── values.yaml
|
|
│ │ └── templates/
|
|
│ │ ├── deployment.yaml
|
|
│ │ ├── service.yaml
|
|
│ │ ├── pvc.yaml
|
|
│ │ ├── client.yaml # OIDC client configuration
|
|
│ │ ├── database.yaml # Database provisioning
|
|
│ │ ├── secret.yaml # Secret generation
|
|
│ │ └── external-http-service.yaml
|
|
│ └── ...
|
|
└── root/ # ArgoCD ApplicationSet for auto-discovery
|
|
├── Chart.yaml
|
|
├── values.yaml
|
|
└── templates/
|
|
├── applicationset.yaml
|
|
└── project.yaml
|
|
|
|
foundation/
|
|
├── charts/ # Foundation service Helm charts
|
|
│ └── ...
|
|
└── root/ # ArgoCD ApplicationSet for foundation services
|
|
|
|
shared/
|
|
├── charts/ # Shared service Helm charts
|
|
│ └── ...
|
|
└── root/ # ArgoCD ApplicationSet for shared services
|
|
```
|
|
|
|
## ArgoCD ApplicationSets
|
|
|
|
This project uses three separate ArgoCD ApplicationSets to manage different categories of services:
|
|
|
|
1. **apps/** - Individual applications (web apps, tools, services)
|
|
2. **foundation/** - Core infrastructure for the cluster (monitoring, certificates, operators)
|
|
3. **shared/** - Infrastructure shared between applications (databases, message queues, caches)
|
|
|
|
Each category has its own `root/` chart containing an ApplicationSet that auto-discovers and deploys charts from its respective `charts/` directory.
|
|
|
|
## Creating a New Application Chart
|
|
|
|
### 1. Basic Chart Structure
|
|
|
|
Create a new directory under `apps/charts/` with the following structure:
|
|
|
|
```bash
|
|
mkdir -p apps/charts/my-app/templates
|
|
```
|
|
|
|
#### Chart.yaml
|
|
|
|
```yaml
|
|
apiVersion: v2
|
|
version: 1.0.0
|
|
name: my-app
|
|
```
|
|
|
|
#### values.yaml
|
|
|
|
```yaml
|
|
image:
|
|
repository: docker.io/org/my-app
|
|
tag: v1.0.0
|
|
pullPolicy: IfNotPresent
|
|
subdomain: my-app
|
|
```
|
|
|
|
See ./apps/common/README.md for guide on writing charts
|
|
|