feat: load service adapters from ConfigMap, remove k8s API dependency
CI / Vet, test, build (push) Canceled after 2m10s
CI / Build and push image (push) Canceled after 0s

Adapters defined in config.yaml alongside routes and models.
Parsed by existing config loader, populated into registry at startup.
Removed: client-go deps, REST loader, informer, nginx proxy,
CiliumNetworkPolicy, apis/gateway/v1/ (duplicate types).
Kept: merged CI pipeline, imagePullPolicy Always, CA certs in Dockerfile.
This commit is contained in:
Admin Bot
2026-08-26 16:39:30 -07:00
parent 0cdfae2a93
commit 9c5fb0ce84
13 changed files with 276 additions and 423 deletions
+9 -2
View File
@@ -4,6 +4,8 @@ import (
"fmt"
"os"
"time"
"forgejo.riotpiao.com/rock/homelab-frontend/internal/serviceadapter"
)
// Config holds the gateway configuration.
@@ -18,6 +20,8 @@ type Config struct {
// Models maps model names to their upstream configuration.
// Multiple models can point to the same upstream address.
Models map[string]*ModelUpstream
// Adapters holds service adapter definitions for X-Service routing.
Adapters []*serviceadapter.ServiceAdapter
}
// ModelUpstream holds upstream configuration for a specific model.
@@ -94,16 +98,18 @@ func Load() (*Config, error) {
shutdownTimeout = d
}
// Load routes and models from config file
// Load routes, models, and adapters from config file
routes := make(map[string]*Route)
models := make(map[string]*ModelUpstream)
var adapters []*serviceadapter.ServiceAdapter
if configPath, ok := os.LookupEnv("CONFIG_PATH"); ok {
loadedRoutes, loadedModels, err := LoadRoutesAndModelsFromFile(configPath)
loadedRoutes, loadedModels, loadedAdapters, err := LoadRoutesAndModelsFromFile(configPath)
if err != nil {
return nil, err
}
routes = loadedRoutes
models = loadedModels
adapters = loadedAdapters
}
return &Config{
@@ -111,5 +117,6 @@ func Load() (*Config, error) {
ShutdownTimeout: shutdownTimeout,
Routes: routes,
Models: models,
Adapters: adapters,
}, nil
}