cec: support for explicit control of Cilium Envoy filter injection#5
cec: support for explicit control of Cilium Envoy filter injection#5MitchLewis930 wants to merge 1 commit intopr_045_beforefrom
Conversation
Currently, the Cilium Envoy network- and L7 filters are always automatically injected when the CiliumEnvoyConfig is used for L7LB (parameter `isL7LB` - that is set to true when `Spec.Services` are defined on the CEC). This commit adds the possibility for a more explicit configuration of this behaviour by adding the annotation `cec.cilium.io/inject-cilium-filters`. If the annotation is present on the `CiliumEnvoyConfig` it is used to decide whether Cilium Envoy filters should be automatically injected or not. Signed-off-by: Marco Hofstetter <marco.hofstetter@isovalent.com>
PR Compliance Guide 🔍Below is a summary of compliance checks for this PR:
Compliance status legend🟢 - Fully Compliant🟡 - Partial Compliant 🔴 - Not Compliant ⚪ - Requires Further Human Verification 🏷️ - Compliance label |
|||||||||||||||||||||||||
PR Code Suggestions ✨Explore these optional code suggestions:
|
|||||||||||||||||
User description
PR_045
PR Type
Enhancement
Description
Add explicit annotation control for Cilium Envoy filter injection
Introduce
cec.cilium.io/inject-cilium-filtersannotation for CiliumEnvoyConfigDecouple filter injection from L7LB service presence via new parameter
Add comprehensive test coverage for injection behavior
Diagram Walkthrough
File Walkthrough
k8s.go
Add CEC annotation prefix and inject-cilium-filters keypkg/annotation/k8s.go
CECPrefixconstant for CEC-related annotationsCECInjectCiliumFiltersannotation keyCiliumPrefixRegexfrom var block to standalone variablecec_manager.go
Implement filter injection logic and update resource parsingpkg/ciliumenvoyconfig/cec_manager.go
injectCiliumEnvoyFilters()function to evaluate filter injectionbased on annotation or L7LB services
parseResources()calls to pass injection decision parameteraddCiliumEnvoyConfig()callcec_resource_parser.go
Decouple filter injection from L7LB via new parameterpkg/ciliumenvoyconfig/cec_resource_parser.go
injectCiliumEnvoyFiltersparameter toparseResources()functionsignature
isL7LBchecks withinjectCiliumEnvoyFiltersfor filterinjection decisions
filter injection
exp_reflector.go
Integrate filter injection into reflector logicpkg/ciliumenvoyconfig/exp_reflector.go
cecListerWatchers()function signature formattinginjectCiliumEnvoyFilters()call inregisterCECReflector()functionparseResources()methodcec_manager_test.go
Add injection logic tests and update test callspkg/ciliumenvoyconfig/cec_manager_test.go
Test_injectCiliumEnvoyFilters()with 6test cases
parseResources()with new parametercec_resource_parser_test.go
Update tests for new filter injection parameterpkg/ciliumenvoyconfig/cec_resource_parser_test.go
parseResources()calls to include newinjectCiliumEnvoyFiltersparameterTestCiliumEnvoyConfigInjectCiliumFilters()validatingfilter non-injection