Weebo SI

What's left to do ?

What's left to do ?

What's left to do ?

Bone of the project

  • Remplacer le setup actuel d'Authentik avec l'opérateur Weebo-Authentik
    • Migrer Authentik vers CNPG le 2026-10-18 : Cluster auth/authentik-pg (PostgreSQL 18.4, 3 Go), importé depuis la PostgreSQL du chart, désormais retirée. Plus de Redis : Authentik n'en utilise plus
    • Opérateur passé en 0.18.1 le 2026-10-17 (instanceRef structuré, pathGrants)
    • Métriques de l'opérateur (port 9090) scrapées par otel-node, via les annotations de discovery sur le pod
    • Migrer les utilisateurs et groupes existants vers l'opérateur
    • Migrer les applications existantes vers l'opérateur
  • Suites de la migration CNPG d'Authentik
    • Mutation des Secrets de vault-secrets-webhook coupée le 2026-10-18 (secretsMutation: false) : aucun Secret ne s'en servait (seul auth/authentik porte des références vault:, jamais mutées, résolues par vault-env dans les pods), elle ne faisait que bloquer. Le constat d'origine : sans annotations vault.security.banzaicloud.io/* sur le Secret, il cherche Vault à https://vault:8200, qui ne résout plus, et refuse toute écriture d'un Secret à références vault: (failurePolicy: Fail). Ça bloque aussi leur suppression en foreground : le garbage collector ne peut pas retirer le finalizer foregroundDeletion (cas d'authentik-postgresql-auth, retiré à la main le 2026-10-18 en remplaçant la référence dans le même patch). Contourné pour Authentik par ApplyOutOfSyncOnly=true et l'hôte de la base en env
    • Sauvegardes CNPG vers RustFS (plugin barman-cloud + ScheduledBackup) pour authentik-pg, forgejo-pg et batlehub-pg : aucune n'en a. Authentik y garde aussi ses sessions et sa file de tâches
    • Rétention bornée le 2026-10-18 : tâches gardées 7 jours (AUTHENTIK_WORKER__TASK_EXPIRATION, chart), événements 90 jours (event_retention du tenant, réglé en base, pas dans Git : à reposer si la base repart de zéro, et les expires existants ont été ramenés à 90 jours). tasklog et task faisaient 2,4 Go des 3 Go
    • Cause du volume : l'opérateur weebo-authentik réécrivait chaque objet à chaque réconciliation, 99,96 % des événements d'Authentik. Corrigé en weebo-authentik 0.18.3 et validé le 2026-10-18 : 0 événement sur l'heure 18:30-19:30, contre ~480 model_updated par heure avant - RFC 0003
    • Test de dérive de la RFC 0003 : renommer une Application dans l'UI, elle doit revenir sous 5 minutes (drift corrected dans les logs de l'opérateur)
    • Health check Argo CD pour postgresql.cnpg.io/Cluster dans 1.pulu-conf, pour que les sync-waves attendent les bases
    • Redémarrages d'authentik-server : fuite dans /dev/shm, qui a déclenché une boucle de SIGBUS le 2026-10-18 de 07:59 à 12:00. À chaque recyclage gunicorn, des fichiers Prometheus multiprocess indexés par PID restent derrière ; 64 Mi se remplissent en ~39 jours. Ralenti (AUTHENTIK_WEB__MAX_REQUESTS=10000, /dev/shm en emptyDir Memory de 256 Mi), pas corrigé : la fuite est dans le gunicorn.conf.py d'Authentik. Détail dans 2.argo/helm/auth/main/templates/authentik/authentik.yaml
    • Vérifier que l'auto-sync de l'Application racine main avait prune avant le gel du 2026-10-18 : il a été remis à selfHeal: true seul
  • ProxyAuthK8S - Will wait for 0.2.0 - Ouroboros
    • Point d'accés externe au cluster Kubernetes pour l'authentification OIDC
    • Rejeter toutes requêtes qui ne viendrais pas de ProxyAuthK8S ?
    • Expo : kube.weebo.poc
    • Expo a travers le noeud principal ?
  • Setup RustFS
    • OIDC
    • Operator officielle
    • Expo : s3-main.weebo.poc
  • Angos
    • Pull-through caches (dont quay.io), workspaces Che tirés via angos
    • Job d'import de mes images (skopeo)
    • OIDC user : Allow users to login with OIDC
    • OIDC Kube : Allow Kubernetes to authenticate with OIDC (e.g. Create a Dockerconfigjson from service account that can be used to pull images from a private registry)
      • Cote angos : [auth.oidc.kube] sur l'issuer du cluster, ServiceAccount dedie + ClusterRoleBinding pour lire la JWKS, et une policy en lecture seule pour ce provider. Un pod qui presente son propre jeton projete (audience angos) est authentifie
      • Cote noeud : pull d'image sans imagePullSecret, verifie de bout en bout le 2026-09-08. Quatre pieces, dans cet ordre : DaemonSet installeur (namespace angos-node, PSA privileged), drapeaux kubelet Talos, entree DNS + CA du registre pour containerd, et le ClusterRole angos-image-pull-audience sans lequel l'apiserver refuse au noeud le jeton pour l'audience angos
    • OIDC CI : Directly push images to angos registry from GitHub Actions using OIDC
    • Page /me/ : rend a l'utilisateur connecte son propre jeton OIDC et la commande docker login prete a coller, servie par oauth2-proxy depuis un ConfigMap
    • UI web : SSO navigateur via oauth2-proxy, sur la meme application Authentik que le device grant. angos ne lit aucun cookie, l'IngressRoute ne route par le proxy que ce qui porte la session ou n'est pas une route d'API
    • Scan d'images : StatefulSet angos-scanner (trivy par defaut), active registre par registre via scan: true, desactive partout par defaut. Identite Basic dediee dans Vault, mot de passe et hash argon2id ecrits par terraform, rapport SARIF attache en referrer de l'image
      • Verifie en local (podman) de bout en bout le 2026-09-13 : push -> job -> rapport. Reste a activer sur le cluster
      • grype ne recoit pas les credentials de [scanner.registry] en 1.8.0 et pull en anonyme ; contourne par GRYPE_REGISTRY_AUTH_* dans le chart, a retirer quand upstream corrige
    • Expo : registry.pkg.weebo.poc
  • Batlehub - en 1.7.0
    • Opérateur weebo-batlehub en mode external, config gérée par l'opérateur, registres en BatleHubRegistry
    • npm, cargo et go en hybride, namespaces de batleforc
    • OIDC : Allow users to login with OIDC
    • OIDC Kube : Allow Kubernetes to authenticate with OIDC (e.g. Create a configuration in pod from service account that can be used to pull artifacts from a private registry)
    • OIDC CI : Directly push artifacts to batlehub registry from GitHub Actions using OIDC (Like VsCode Extension or other)
    • Expo :
      • pkg.weebo.poc
      • npm.pkg.weebo.poc
      • *.pkg.weebo.poc
  • Kuberarmor
  • Kloak
  • Weebo Si Hardening
    • Bascule Weebo5 → Weebo-SI : runbook (élévation admin 2FA tracée, KubeArmor)
    • NetPolicy (networkProfiles, Enforce)
    • NetPolicy guard (policyGuard, activé en DryRun, passer en Enforce)
    • DWOC restrictions (dwocPin, activé en DryRun, passer en Enforce)
    • Image Pull Policy
    • Image Registry (imagePolicy, Enforce, via angos + egress direct vers les registres coupé)
    • Package Registry (registryConfig)
    • Endpoint auth (endpointAuth, Enforce)
    • KubeArmor policies (kubearmorPolicy, needs KubeArmor)
    • Pod Security (podSecurity, dispo depuis l'opérateur 0.3.0, à passer en DryRun puis pods audit)
    • Resource quotas (resourceQuotas, dispo depuis l'opérateur 0.3.0, templates dans weebo-si-hardening-templates)
  • Eclipse Che
    • Expo : cde.dev.weebo.poc && *.cde.dev.weebo.poc
    • Deploy App
    • Deploy User through Weebo-Si-Hardening (identity)
    • IDEs pilotés par che.editors (éditeurs maison)
    • Autres IDEs : openchamber (derrière l'auth Che), abcdesktop avec un JetBrains ?
  • Properly apply a CiliumNetworkPolicy with default deny for all
  • Setup Stalwart as an internal mail system for the cluster and connect every app to it (prevent mail to go outside the cluster) - RFC 0001 (opérateur weebo-stalwart sur weebo-operator-kit)
    • Weebo.poc for internal messaging (entre les apps du cluster et les utilisateurs du cluster ou user <-> user)
    • weebo.[fr/net/untruc] for external messaging si nécessaire plus tard
    • Mettre en place un script de provisioning, si un objet authentik user a une annotations stalwart/email, alors créer le mail dans stalwart et le lier à l'utilisateur authentik https://stalw.art/docs/auth/backend/oidc/
    • Idem, si un user n'existe plus dans Authentik, verouiller le mail dans Stalwart
    • ces deux points relèvent de la brique de liaison (RFC 0002 : en-tête link.weebo.io/stalwart + contrôleur weebo-link, sans Kyverno), pas de weebo-stalwart, qui n'expose que des StalwartAccount (state: Locked)
  • Mise en place d'un forgejo pour assurer que le code source est toujours la (préviens les indispo github)
    • Expo : git.weebo.poc, CNPG + RustFS, OIDC Authentik
    • Opérateur forgejo pour gérer les projets et les utilisateurs (org batleforc-org, groupe Authentik batleforc → team Owners)
    • Che reconnaît Forgejo comme git service (lecture anonyme des devfiles, PAT pour le privé)
    • Che : « sign in with Forgejo » (che.forgejo.oauth, app OAuth2 + mv/eclipse-che/forgejo)
    • Fork auto des projets github lister ?
    • Couper github pour eclipse che pour inciter les devs a utiliser le forgejo interne
  • Plateforme engineering
    • Git provider Integration ?
    • podman build/run ?
    • CI/CD pipelines
    • Dev Environment

Documentation

  • Installation Guide

  • User Guide

  • Big Picture Infra

  • Big Picture Database

  • Big Picture Monitoring

  • Big Picture Registry

  • Big Picture Security

  • Big Picture Dev Environment

  • Macro Infra

    • Kubernetes/Talos
    • Cilium / Networking
      • Inbound
      • Outbound
      • Envoyer vers Traefik
    • Authentification
      • Authentik
        • Weebo-Authentik Operator
        • Outpost
        • PreAuth-Proxy
      • Dex
    • Vault
      • PKI
      • Secrets
      • External Secrets
    • ArgoCD
      • Bonne pratique GitOps
      • Segmentation des applications
    • Cert-Manager / Trust Manager
    • Ingress / Traefik (RFC 0006, docs/rfc/0006-ingress-public-interne, Draft)
      • Error Pages
        • Internal
        • External
      • Weebo.poc
      • VPN or internal only endpoint
      • Maintenance Page
      • Request ID
      • WAF ?
    • Hook / Kyverno
    • Storage
      • Longhorn
      • LocalStorage
    • ProxyAuthK8S
  • Database

    • PostgreSQL
      • CNPG
    • MongoDB
      • MongoDB Operator
    • ClickHouse
      • ClickHouse Operator
    • RustFS
  • Monitoring

    • ClickStack (dashboards existants : weebo-si-hardening, Probe health)
    • OpenTelemetry eBPF Instrumentation
    • Otel Collector
  • Registry

    • Batlehub
      • Mode d'authentification (OIDC / KUBE / ETC)
      • Gestion des registres (BatleHubRegistry, hybride npm/cargo/go)
      • Analyse de sécurité des packages
      • Exposition des registres (pkg.weebo.poc, npm.pkg.weebo.poc, *.pkg.weebo.poc)
      • D-2 ?
    • Angos
      • Mode d'authentification (OIDC / KUBE / ETC)
      • Gestion des registres
      • Analyse de sécurité des images
      • D-2 ?
  • Security

    • Kloak
    • KubeArmor
    • Weebo-SI Hardening
    • Netbird
  • Dev Environment

    • Eclipse Che
    • Future components ?
      • Plateform ingineering ?
      • Git provider Integration ?
      • podman build/run ?

On this page