mirror of
https://github.com/Alkatrazz24/Funk-lab.git
synced 2026-07-08 07:44:42 +02:00
feat(auth): annuaire Authentik + portail consoles Guacamole (#76)
- k8s/apps/authentik : IdP OIDC (auth.lab.local), namespace auth — server + worker 2026.5.3, Redis in-cluster, PG sur storage-01, PVC media - k8s/apps/guacamole : portail consoles SSH web s01/g01 (portail.lab.local) — guacd + webapp 1.6.0, SSO OIDC vers Authentik, Job initdb idempotent - ansible : rôle console_user (user sans sudo pour les consoles, s01 + g01), bases PG authentik/guacamole, secrets vault (mdp PG + clé SSH console) - doc : admin/k8s/auth-portal.md (déploiement, config initiale, pièges) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
09ca0be469
commit
87b786eb57
21 changed files with 775 additions and 64 deletions
15
CLAUDE.md
15
CLAUDE.md
|
|
@ -21,6 +21,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
|
|||
- ✅ SearXNG opérationnel — `searxng.lab.local`, namespace `ai`, **méta-moteur de recherche web self-host** (privé, in-cluster) consommé par l'outil `web_search` d'Asa (API JSON). Manifests `k8s/apps/searxng/`
|
||||
- ✅ Ghostfolio opérationnel — `ghostfolio.lab.local`, namespace `ai`, suivi de portefeuille (PostgreSQL s01 + Redis in-cluster)
|
||||
- ✅ hermes-auto-improve — analyse quotidienne de `admin/` par Hermes à 22h (n8n → trigger :9095), PR sur `hermes/daily-work`
|
||||
- 🆕 Annuaire + portail consoles (2026-07-06) — **Authentik** (`auth.lab.local`, IdP OIDC) + **Guacamole** (`portail.lab.local`, consoles SSH web vers s01/g01 via user `console` sans sudo), namespace `auth`. Config initiale (admin Authentik, provider OIDC, connexions) : voir `admin/k8s/auth-portal.md`
|
||||
- ⏳ WOL compute nodes non configuré (BIOS) — allumage manuel requis
|
||||
|
||||
Journal de progression : `PROGRESS.md` → `progress/YYYY-MM-DD.md`
|
||||
|
|
@ -90,11 +91,11 @@ Les tags correspondent aux noms de rôles. Tous les rôles sont idempotents.
|
|||
|
||||
### Rôles — storage-01
|
||||
|
||||
`hermes_user`, `common`, `gateway` (nftables + NAT), `dnsmasq`, `nfs_server`, `qdrant`, `postgresql`, `minio` (⚠️ rôle vide, service non déployé), `litellm`, `hermes_agent`, `rag`, `node_exporter`, `alertmanager_webhook`, `postfix_relay`, `hermes_auto_improve` (worker doc Hermes + trigger server :9095), `hermes_exec` (exécuteur d'actions vocales `hermes -z --yolo` derrière jeton, :9096)
|
||||
`hermes_user`, `common`, `gateway` (nftables + NAT), `dnsmasq`, `nfs_server`, `qdrant`, `postgresql`, `minio` (⚠️ rôle vide, service non déployé), `litellm`, `hermes_agent`, `rag`, `node_exporter`, `alertmanager_webhook`, `postfix_relay`, `hermes_auto_improve` (worker doc Hermes + trigger server :9095), `hermes_exec` (exécuteur d'actions vocales `hermes -z --yolo` derrière jeton, :9096), `console_user` (user `console` sans sudo pour le portail Guacamole)
|
||||
|
||||
### Rôles — gpu-01
|
||||
|
||||
`hermes_user`, `common`, `rocm`, `nfs_client`, `llama_server`, `node_exporter`, `satisfactory_server` (serveur dédié Satisfactory `:7777`, steamcmd + systemd)
|
||||
`hermes_user`, `common`, `rocm`, `nfs_client`, `llama_server`, `node_exporter`, `satisfactory_server` (serveur dédié Satisfactory `:7777`, steamcmd + systemd), `console_user` (idem storage-01)
|
||||
|
||||
> Chaque rôle a un `README.md` (variables, caveats, gaps IaC).
|
||||
> `lm_studio` est présent dans `ansible/roles/` mais n'est plus utilisé dans aucun playbook (déprécié, voir son README).
|
||||
|
|
@ -120,6 +121,8 @@ Variables chiffrées dans `ansible/group_vars/all/vault.yml` :
|
|||
- `vault_postfix_relay_password` — App Password Gmail (relay SMTP)
|
||||
- `vault_n8n_api_key` — clé API n8n (label "claude") pour gérer les workflows via `/api/v1`
|
||||
- `vault_hermes_exec_token` — jeton d'auth de `hermes-exec` (actions vocales via Hermes ; même valeur dans le secret k8s `stt-server-secrets/hermes-exec-token`)
|
||||
- `vault_pg_authentik_password`, `vault_pg_guacamole_password` — bases PG du portail (mêmes valeurs dans les secrets k8s `auth/authentik-secret` et `auth/guacamole-secret`)
|
||||
- `vault_console_ssh_private_key` — clé privée SSH des connexions Guacamole (user `console` sur s01/g01)
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -164,6 +167,8 @@ k8s/
|
|||
│ ├── ghostfolio.yaml
|
||||
│ ├── openalice.yaml
|
||||
│ ├── finlab.yaml
|
||||
│ ├── authentik.yaml
|
||||
│ ├── guacamole.yaml
|
||||
│ ├── monitoring.yaml
|
||||
│ └── nfs-provisioner.yaml
|
||||
├── apps/ # Manifests raw k8s par application
|
||||
|
|
@ -174,6 +179,8 @@ k8s/
|
|||
│ ├── ghostfolio/ # namespace: ai — suivi de portefeuille (ghostfolio.lab.local)
|
||||
│ ├── openalice/ # namespace: ai — agent IA financier (openalice.lab.local, back-end finance d'Asa) — ⏸️ SUSPENDU
|
||||
│ ├── finlab/ # namespace: ai — dashboard finance + console Claude Code (finance.lab.local, /console) + toolkit
|
||||
│ ├── authentik/ # namespace: auth — annuaire/IdP OIDC (auth.lab.local)
|
||||
│ ├── guacamole/ # namespace: auth — portail consoles SSH web s01/g01 (portail.lab.local)
|
||||
│ └── {external-services}/ # ExternalName/Endpoints pointant vers storage-01 ou gpu-01
|
||||
└── infra/ # Helm releases (HelmRelease + values.yaml)
|
||||
├── monitoring/ # kube-prometheus-stack 85.0.2
|
||||
|
|
@ -188,7 +195,7 @@ k8s/
|
|||
2. Créer `k8s/apps-of-apps/apps/<nom>.yaml` (ArgoCD Application CRD) — copier `n8n.yaml` comme modèle
|
||||
3. `git commit` + `git push` → ArgoCD prend en charge automatiquement
|
||||
|
||||
Namespaces actifs : `argocd`, `infra` (Traefik, MetalLB, NFS-provisioner, registry in-cluster), `monitoring` (Prometheus/Grafana), `ai` (n8n, open-webui, stt, searxng, ghostfolio, openalice, finlab), `sacrifice` (jeu FPS — déployé hors de ce repo et hors ArgoCD, cf. `admin/ops/etat-cluster.md`).
|
||||
Namespaces actifs : `argocd`, `infra` (Traefik, MetalLB, NFS-provisioner, registry in-cluster), `monitoring` (Prometheus/Grafana), `ai` (n8n, open-webui, stt, searxng, ghostfolio, openalice, finlab), `auth` (Authentik, Guacamole), `sacrifice` (jeu FPS — déployé hors de ce repo et hors ArgoCD, cf. `admin/ops/etat-cluster.md`).
|
||||
|
||||
> Les services du namespace `ai` sont exposés via des **IngressRoute Traefik** (CRD), pas des `Ingress` standards.
|
||||
|
||||
|
|
@ -344,6 +351,6 @@ talosctl etcd snapshot /path/to/backup.db --nodes compute-01
|
|||
|
||||
- **Git** : branches `main` (prod) / `feature/*` — conventional commits (`feat:`, `fix:`, `chore:`, `docs:`)
|
||||
- **Secrets** : Ansible Vault (Ansible), SOPS+age (Talos), Sealed Secrets (k8s)
|
||||
- **Namespaces k8s** : `argocd`, `infra`, `monitoring`, `ai`, `external` (+ `sacrifice`, hors-repo)
|
||||
- **Namespaces k8s** : `argocd`, `infra`, `monitoring`, `ai`, `auth`, `external` (+ `sacrifice`, hors-repo)
|
||||
- **Hermes data** : profils/données dans `/srv/data/hermes` (NVMe, bind-mount `/home/data`), code dans `/opt/hermes/` (SSD OS)
|
||||
- **RAM compute-02/03** : toujours définir `resources.requests` + `resources.limits` (8 GB RAM, OOM-killer actif)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue