add headlamp
This commit is contained in:
parent
958eb9b0e3
commit
33036b8420
@ -66,6 +66,7 @@
|
|||||||
|-------------------|---------|
|
|-------------------|---------|
|
||||||
| `homepage.rat` | Homepage |
|
| `homepage.rat` | Homepage |
|
||||||
| `glance.rat` | Glance |
|
| `glance.rat` | Glance |
|
||||||
|
| `headlamp.dog` | Headlamp |
|
||||||
|
|
||||||
**Cluster-only (no ingress):** Prowlarr, Bazarr, qBittorrent, Zerobyte.
|
**Cluster-only (no ingress):** Prowlarr, Bazarr, qBittorrent, Zerobyte.
|
||||||
|
|
||||||
@ -88,7 +89,7 @@ SOPS + age encryption. All secrets live in `secrets/secrets.enc.yaml`, encrypted
|
|||||||
| `longhorn-system` | Longhorn storage |
|
| `longhorn-system` | Longhorn storage |
|
||||||
| `media` | Plex, Sonarr, Radarr, Bazarr, Prowlarr, qBittorrent, unpackerr |
|
| `media` | Plex, Sonarr, Radarr, Bazarr, Prowlarr, qBittorrent, unpackerr |
|
||||||
| `paperless` | Paperless-ngx, Redis, PostgreSQL |
|
| `paperless` | Paperless-ngx, Redis, PostgreSQL |
|
||||||
| `apps` | Mealie, Homepage, Glance, Seerr, Zerobyte |
|
| `apps` | Mealie, Homepage, Glance, Headlamp, Seerr, Zerobyte |
|
||||||
|
|
||||||
## Services
|
## Services
|
||||||
|
|
||||||
@ -101,6 +102,7 @@ SOPS + age encryption. All secrets live in `secrets/secrets.enc.yaml`, encrypted
|
|||||||
| paperless | paperless | Paperless-ngx, Redis, PostgreSQL | Postgres 15, Redis 7 |
|
| paperless | paperless | Paperless-ngx, Redis, PostgreSQL | Postgres 15, Redis 7 |
|
||||||
| mealie | apps | Mealie (v3.14.0) | Gemini API integration for recipes |
|
| mealie | apps | Mealie (v3.14.0) | Gemini API integration for recipes |
|
||||||
| dashboards | apps | Homepage, Glance | Internal-only via `traefik-internal` |
|
| dashboards | apps | Homepage, Glance | Internal-only via `traefik-internal` |
|
||||||
|
| headlamp | apps | Headlamp | K8s dashboard, internal-only via `traefik-internal` |
|
||||||
| utils | apps | Seerr, Zerobyte | Seerr public, Zerobyte cluster-only |
|
| utils | apps | Seerr, Zerobyte | Seerr public, Zerobyte cluster-only |
|
||||||
|
|
||||||
|
|
||||||
@ -170,6 +172,7 @@ helm upgrade --install paperless charts/paperless -n paperless
|
|||||||
kubectl create namespace apps
|
kubectl create namespace apps
|
||||||
helm upgrade --install mealie charts/mealie -n apps
|
helm upgrade --install mealie charts/mealie -n apps
|
||||||
helm upgrade --install dashboards charts/dashboards -n apps
|
helm upgrade --install dashboards charts/dashboards -n apps
|
||||||
|
helm upgrade --install headlamp charts/headlamp -n apps
|
||||||
helm upgrade --install utils charts/utils -n apps
|
helm upgrade --install utils charts/utils -n apps
|
||||||
|
|
||||||
# Traefik config goes in kube-system (managed by k3s)
|
# Traefik config goes in kube-system (managed by k3s)
|
||||||
@ -214,6 +217,7 @@ homelab/
|
|||||||
│ ├── paperless/ # Paperless-ngx + Postgres + Redis
|
│ ├── paperless/ # Paperless-ngx + Postgres + Redis
|
||||||
│ ├── mealie/ # Mealie recipe manager
|
│ ├── mealie/ # Mealie recipe manager
|
||||||
│ ├── dashboards/ # Homepage + Glance (internal only)
|
│ ├── dashboards/ # Homepage + Glance (internal only)
|
||||||
|
│ ├── headlamp/ # Headlamp K8s dashboard (internal only)
|
||||||
│ └── utils/ # Seerr + Zerobyte
|
│ └── utils/ # Seerr + Zerobyte
|
||||||
└── secrets/
|
└── secrets/
|
||||||
└── secrets.enc.yaml
|
└── secrets.enc.yaml
|
||||||
|
|||||||
5
charts/headlamp/Chart.yaml
Normal file
5
charts/headlamp/Chart.yaml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
name: headlamp
|
||||||
|
description: Headlamp Kubernetes dashboard
|
||||||
|
version: 0.1.0
|
||||||
|
type: application
|
||||||
32
charts/headlamp/templates/headlamp-ingressroute.yaml
Normal file
32
charts/headlamp/templates/headlamp-ingressroute.yaml
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: headlamp
|
||||||
|
annotations:
|
||||||
|
kubernetes.io/ingress.class: traefik-internal
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- web
|
||||||
|
routes:
|
||||||
|
- match: Host(`headlamp.{{ .Values.internalDomain }}`)
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: headlamp
|
||||||
|
port: 4466
|
||||||
|
---
|
||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: headlamp-tls
|
||||||
|
annotations:
|
||||||
|
kubernetes.io/ingress.class: traefik-internal
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`headlamp.{{ .Values.internalDomain }}`)
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: headlamp
|
||||||
|
port: 4466
|
||||||
|
tls: {}
|
||||||
59
charts/headlamp/templates/headlamp.yaml
Normal file
59
charts/headlamp/templates/headlamp.yaml
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: headlamp
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRoleBinding
|
||||||
|
metadata:
|
||||||
|
name: headlamp
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: ClusterRole
|
||||||
|
name: cluster-admin
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: headlamp
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: headlamp
|
||||||
|
labels:
|
||||||
|
app: headlamp
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
strategy:
|
||||||
|
type: Recreate
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: headlamp
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: headlamp
|
||||||
|
spec:
|
||||||
|
serviceAccountName: headlamp
|
||||||
|
nodeSelector:
|
||||||
|
homelab/node-role: worker
|
||||||
|
containers:
|
||||||
|
- name: headlamp
|
||||||
|
image: {{ .Values.image }}
|
||||||
|
args:
|
||||||
|
- -in-cluster
|
||||||
|
- -plugins-dir=/headlamp/plugins
|
||||||
|
- -insecure-no-authentication
|
||||||
|
ports:
|
||||||
|
- containerPort: 4466
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: headlamp
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
app: headlamp
|
||||||
|
ports:
|
||||||
|
- port: 4466
|
||||||
|
targetPort: 4466
|
||||||
2
charts/headlamp/values.yaml
Normal file
2
charts/headlamp/values.yaml
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
image: ghcr.io/headlamp-k8s/headlamp:latest
|
||||||
|
internalDomain: dog
|
||||||
@ -108,7 +108,7 @@ cmd_deploy() {
|
|||||||
local charts_dir
|
local charts_dir
|
||||||
charts_dir="$(cd "$(dirname "$0")/.." && pwd)/charts"
|
charts_dir="$(cd "$(dirname "$0")/.." && pwd)/charts"
|
||||||
|
|
||||||
local -a chart_order=(traefik-config media paperless mealie dashboards utils)
|
local -a chart_order=(traefik-config media paperless mealie dashboards utils headlamp)
|
||||||
local -A chart_ns=(
|
local -A chart_ns=(
|
||||||
[traefik-config]=kube-system
|
[traefik-config]=kube-system
|
||||||
[media]=media
|
[media]=media
|
||||||
@ -116,6 +116,7 @@ cmd_deploy() {
|
|||||||
[mealie]=apps
|
[mealie]=apps
|
||||||
[dashboards]=apps
|
[dashboards]=apps
|
||||||
[utils]=apps
|
[utils]=apps
|
||||||
|
[headlamp]=apps
|
||||||
)
|
)
|
||||||
|
|
||||||
for chart in "${chart_order[@]}"; do
|
for chart in "${chart_order[@]}"; do
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user