Add .gitignore and CLAUDE.md for repository guidance and configuration
This commit is contained in:
parent
6fc1a3100b
commit
2fc476d058
2 changed files with 75 additions and 0 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
/.idea/
|
74
CLAUDE.md
Normal file
74
CLAUDE.md
Normal file
|
@ -0,0 +1,74 @@
|
|||
# CLAUDE.md
|
||||
|
||||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||
|
||||
## Repository Overview
|
||||
|
||||
This repository contains Kubernetes manifests for deploying a media server stack and supporting infrastructure. The deployment uses LinuxServer.io containers for media applications and integrates with external NFS storage.
|
||||
|
||||
## Architecture
|
||||
|
||||
### Application Stack
|
||||
- **Media Applications** (`arr/` directory):
|
||||
- Radarr (movies) - port 7878
|
||||
- Sonarr (TV shows) - port 8989
|
||||
- Prowlarr (indexer manager)
|
||||
- SABnzbd (downloads)
|
||||
- Overseerr (requests) - port 5055
|
||||
- Tautulli (Plex monitoring)
|
||||
|
||||
### Infrastructure Components
|
||||
- **MetalLB**: Load balancer with IP pool 192.168.15.200-192.168.15.210
|
||||
- **Longhorn**: Block storage for application configs
|
||||
- **NFS Storage**: External server at 192.168.12.16 for media files
|
||||
- **Kubernetes Dashboard**: Web UI with admin access
|
||||
|
||||
## Deployment Commands
|
||||
|
||||
```bash
|
||||
# Create namespace (required first)
|
||||
kubectl create namespace media
|
||||
|
||||
# Deploy infrastructure
|
||||
kubectl apply -f nfs-storage-classes.yaml
|
||||
kubectl apply -f metallb-config.yaml
|
||||
kubectl apply -f kubernetes-dashboard.yaml
|
||||
|
||||
# Deploy all media applications
|
||||
kubectl apply -f arr/
|
||||
|
||||
# Deploy individual apps
|
||||
kubectl apply -f arr/radarr.yaml
|
||||
kubectl apply -f arr/sonarr.yaml
|
||||
```
|
||||
|
||||
## Resource Patterns
|
||||
|
||||
Each media application follows this structure:
|
||||
1. **Deployment**: Container with resource limits, PUID/PGID=1000, TZ=America/New_York
|
||||
2. **PersistentVolumeClaim**: Config storage using Longhorn
|
||||
3. **Service**: ClusterIP for internal communication
|
||||
4. **Ingress**: NGINX routing with pattern `{app}.local`
|
||||
|
||||
## Storage Configuration
|
||||
|
||||
- **Config Storage**: Longhorn PVCs for each application
|
||||
- **Media Storage**: NFS mounts from 192.168.12.16:
|
||||
- `/Volume2/media` → `/media`
|
||||
- `/Volume2/tv` → `/tv`
|
||||
- `/Volume2/movies` → `/movies`
|
||||
- `/Volume2/downloads` → `/downloads`
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- NGINX Ingress Controller must be installed
|
||||
- Longhorn storage system must be deployed
|
||||
- NFS server must be accessible at 192.168.12.16
|
||||
- Local DNS must resolve `*.local` domains
|
||||
|
||||
## Important Notes
|
||||
|
||||
- All containers run with UID/GID 1000
|
||||
- Dashboard has full cluster-admin privileges
|
||||
- All images use `latest` tag
|
||||
- Media namespace must exist before deploying applications
|
Loading…
Add table
Add a link
Reference in a new issue