Remove `informer_enabled` config: make the informer-backed cache the only read path

Author: PangjipingCreated Sep 15, 2026Updated Sep 15, 2026
Labelscomponent/k8scomponent/server

Summary

Proposing removal of the [Beta] informer_enabled config flag (server/opensandbox_server/config.py), so the informer-backed workload cache becomes the only code path in the Kubernetes runtime.

Background

informer_enabled (default true) currently switches workload reads between the informer watch cache and direct API calls. When disabled, reads hit the API server directly and template status watches are skipped (template_service.py logs "Template status watches disabled (informer_enabled=false)").

Why remove it

  • The default has been true for a long time; maintaining two read paths (cache + direct) doubles testing and maintenance burden in K8sClient.
  • The original stability concerns have been addressed by the relist/watch fixes (#1322, #1533); keeping the flag as a silent escape hatch hides real bugs instead of surfacing them.
  • Disabling the informer in production effectively reintroduces API-server pressure, which the flag's own description warns about.
  • The remaining informer_resync_seconds / informer_watch_timeout_seconds knobs are enough for tuning; an on/off switch is unnecessary configuration surface.

Proposed behavior

  • Informer is always enabled for workload reads and template status watches.
  • informer_enabled is removed from config, example TOMLs, Helm values/docs, and test fixtures.

Compatibility

This is a breaking config change for anyone who explicitly set informer_enabled = false. Suggest a deprecation window: warn on startup if the key is present (treated as true), then remove it in the next minor/major release.

Scope (files found by grep)

  • server/opensandbox_server/config.py (field removal or deprecation)
  • server/opensandbox_server/services/k8s/client.py (_lookup_informer / _get_informer guards)
  • server/opensandbox_server/services/templates/template_service.py (warning message)
  • tests: server/tests/test_fsb_service.py, server/tests/k8s/test_k8s_client.py, server/tests/test_templates.py
  • docs/config: server/configuration.md, server/opensandbox_server/examples/example.config.k8s*.toml, kubernetes/charts/opensandbox-server/values.yaml (+ chart README), examples/aks-kata/server-values.yaml, scripts/fast-sandbox-env/manifests/opensandbox/server.yaml

Open questions

  1. Deprecation window OK (one minor release with a warning)?
  2. Keep informer_resync_seconds / informer_watch_timeout_seconds as tuning knobs?

cc @opensandbox-group/maintainers

Source: opensandbox-group/OpenSandbox