Capability Registry — nouveau descripteur : type, scope, endpoint, resource #1

Open
opened 2026-06-06 14:35:44 +02:00 by shuss · 0 comments
Owner

Contexte

Le système actuel set_services() modélise uniquement des endpoints réseau (service: {fqdn, port}) avec un champ opaque definition pour les ressources K8s. Il ne permet pas d'exprimer la catégorie d'une capability, sa visibilité, ni le protocole de transport.

Nouveau descripteur

#{
    key: "string",        // identité unique — lookup exact (rétrocompat)
    type: "string",       // catégorie sémantique — lookup par type (nouveau)
    scope: "cluster",     // visibilité : "namespace" | "tenant" | "cluster" (nouveau, défaut: "cluster")
    endpoint: #{          // endpoint réseau (remplace 'service')
        fqdn: "...",
        port: 1234,
        protocol: "http", // transport : http | sse | grpc | tcp | starttls | ldap... (nouveau)
    },
    resource: #{          // ressource K8s (remplace et étend 'definition')
        kind: "Secret",   // Secret | ConfigMap | PVC | ...
        name: "...",
        namespace: "...",
        key: "ca.crt",    // champ précis dans la ressource (nouveau)
    }
}

Vocabulaire type recommandé (non-exhaustif)

type Description
ca Bundle CA (certificat de confiance)
smtp Relay SMTP
ldap Annuaire LDAP/LDAPS
mcp Serveur MCP (Model Context Protocol)
sso Endpoint SSO interne (ex: Authentik server)
sso-public URL publique SSO (pour redirections OIDC)
vault Gestionnaire de secrets Vault
otlp-http / otlp-grpc OpenTelemetry
prometheus Endpoint de scrape Prometheus
storage Ressource de stockage (PVC, S3...)

Règles de backward compat

  • type absent : capability accessible uniquement par key (comportement actuel conservé)
  • scope absent : défaut "cluster" (comportement actuel conservé)
  • Les anciens champs service et definition sont remappés en interne vers endpoint et resource (voir issue dépréciation)

Critère d'acceptance

  • Le descripteur est validé à l'appel de set_capabilities()
  • Les champs endpoint et resource sont tous deux optionnels (une capability peut n'avoir que l'un ou l'autre, ou les deux)
  • Les anciens champs service / definition sont acceptés et mappés silencieusement
## Contexte Le système actuel `set_services()` modélise uniquement des endpoints réseau (`service: {fqdn, port}`) avec un champ opaque `definition` pour les ressources K8s. Il ne permet pas d'exprimer la catégorie d'une capability, sa visibilité, ni le protocole de transport. ## Nouveau descripteur ```rhai #{ key: "string", // identité unique — lookup exact (rétrocompat) type: "string", // catégorie sémantique — lookup par type (nouveau) scope: "cluster", // visibilité : "namespace" | "tenant" | "cluster" (nouveau, défaut: "cluster") endpoint: #{ // endpoint réseau (remplace 'service') fqdn: "...", port: 1234, protocol: "http", // transport : http | sse | grpc | tcp | starttls | ldap... (nouveau) }, resource: #{ // ressource K8s (remplace et étend 'definition') kind: "Secret", // Secret | ConfigMap | PVC | ... name: "...", namespace: "...", key: "ca.crt", // champ précis dans la ressource (nouveau) } } ``` ## Vocabulaire `type` recommandé (non-exhaustif) | type | Description | |------|-------------| | `ca` | Bundle CA (certificat de confiance) | | `smtp` | Relay SMTP | | `ldap` | Annuaire LDAP/LDAPS | | `mcp` | Serveur MCP (Model Context Protocol) | | `sso` | Endpoint SSO interne (ex: Authentik server) | | `sso-public` | URL publique SSO (pour redirections OIDC) | | `vault` | Gestionnaire de secrets Vault | | `otlp-http` / `otlp-grpc` | OpenTelemetry | | `prometheus` | Endpoint de scrape Prometheus | | `storage` | Ressource de stockage (PVC, S3...) | ## Règles de backward compat - `type` absent : capability accessible uniquement par `key` (comportement actuel conservé) - `scope` absent : défaut `"cluster"` (comportement actuel conservé) - Les anciens champs `service` et `definition` sont remappés en interne vers `endpoint` et `resource` (voir issue dépréciation) ## Critère d'acceptance - Le descripteur est validé à l'appel de `set_capabilities()` - Les champs `endpoint` et `resource` sont tous deux optionnels (une capability peut n'avoir que l'un ou l'autre, ou les deux) - Les anciens champs `service` / `definition` sont acceptés et mappés silencieusement
shuss added this to the Capability Registry v1 milestone 2026-06-06 14:35:44 +02:00
shuss added the Kind/Feature
Priority
High
2
labels 2026-06-06 14:35:44 +02:00
shuss added
Priority
Low
4
and removed
Priority
High
2
labels 2026-06-12 10:31:17 +02:00
shuss added the
Status
Blocked
1
label 2026-06-12 17:43:43 +02:00
Sign in to join this conversation.