The Module concept in Emissary is a relic from its very early days that we've been slowly removing. The
last holdout is the ambassadorModule, and really, it's time to get rid of it:
Most of its configuration can be moved into the Listener:
allow_chunked_length, enable_http10, envoy_log stuff, and proper_case are all great examples here: they're really characteristics of a Listener, not the whole system.
Having a way to set a global default for these probably still makes sense.
Some of its configuration really should be supported in a properly-typed CRD:
admin_port and diagnostics come to mind here.
Global defaults as noted above.
The obvious solution here is a pass of moving most things into Listener, and creating a GlobalConfig CRD for the few things that should truly be global.
Tracing is perhaps a global characteristic - certainly the driver that is used and the sink to send spans too. I can imagine a per-listener fragment, with svc id and the like.
The
Module
concept in Emissary is a relic from its very early days that we've been slowly removing. The last holdout is theambassador
Module
, and really, it's time to get rid of it:Listener
:allow_chunked_length
,enable_http10
,envoy_log
stuff, andproper_case
are all great examples here: they're really characteristics of aListener
, not the whole system.admin_port
anddiagnostics
come to mind here.The obvious solution here is a pass of moving most things into
Listener
, and creating aGlobalConfig
CRD for the few things that should truly be global.