helm updates for flowgger and netflow #2822
No reviewers
Labels
No labels
1week
2weeks
Failed compliance check
IP cameras
NATS
Possible security concern
Review effort 1/5
Review effort 2/5
Review effort 3/5
Review effort 4/5
Review effort 5/5
UI
aardvark
accessibility
amd64
api
arm64
auth
back-end
bgp
blog
bug
build
checkers
ci-cd
cleanup
cnpg
codex
core
dependencies
device-management
documentation
duplicate
dusk
ebpf
enhancement
eta 1d
eta 1hr
eta 3d
eta 3hr
feature
fieldsurvey
github_actions
go
good first issue
help wanted
invalid
javascript
k8s
log-collector
mapper
mtr
needs-triage
netflow
network-sweep
observability
oracle
otel
plug-in
proton
python
question
reddit
redhat
research
rperf
rperf-checker
rust
sdk
security
serviceradar-agent
serviceradar-agent-gateway
serviceradar-web
serviceradar-web-ng
siem
snmp
sysmon
topology
ubiquiti
wasm
wontfix
zen-engine
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
carverauto/serviceradar!2822
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "refs/pull/2822/head"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Imported from GitHub pull request.
Original GitHub pull request: #2652
Original author: @mfreeman451
Original URL: https://github.com/carverauto/serviceradar/pull/2652
Original created: 2026-02-01T04:51:26Z
Original updated: 2026-02-01T05:23:45Z
Original head: carverauto/serviceradar:chore/k8s-updates
Original base: staging
Original merged: 2026-02-01T04:52:17Z by @mfreeman451
User description
IMPORTANT: Please sign the Developer Certificate of Origin
Thank you for your contribution to ServiceRadar. Please note, when contributing, the developer must include
a DCO sign-off statement indicating the DCO acceptance in one commit message. Here
is an example DCO Signed-off-by line in a commit message:
Describe your changes
Issue ticket number and link
Code checklist before requesting a review
PR Type
Enhancement
Description
Add
externalTrafficPolicyconfiguration to Kubernetes servicesUpdate MetalLB pool references from
k3s-lan-pooltok3s-poolUpdate demo LoadBalancer IP addresses for flowgger and netflow services
Add configuration documentation for external traffic policy settings
Diagram Walkthrough
File Walkthrough
flowgger.yaml
Add externalTrafficPolicy to flowgger servicehelm/serviceradar/templates/flowgger.yaml
externalTrafficPolicyfield to external service specnetflow-collector.yaml
Add externalTrafficPolicy to netflow servicehelm/serviceradar/templates/netflow-collector.yaml
externalTrafficPolicyfield to service specserviceradar-netflow-collector.yaml
Add Local traffic policy to netflow servicek8s/demo/base/serviceradar-netflow-collector.yaml
externalTrafficPolicy: Localto netflow collector service specserviceradar-flowgger-external.yaml
Add Local traffic policy to flowgger servicek8s/demo/prod/serviceradar-flowgger-external.yaml
externalTrafficPolicy: Localto flowgger external service specvalues-demo.yaml
Update demo values with new pool and traffic policyhelm/serviceradar/values-demo.yaml
k3s-lan-pooltok3s-pool23.138.124.24externalTrafficPolicy: Localto flowgger configurationpolicy
values.yaml
Add externalTrafficPolicy defaults and documentationhelm/serviceradar/values.yaml
externalTrafficPolicy: Clusterdefault to flowgger externalservice
externalTrafficPolicy: Clusterdefault to netflow collectorservice
Imported GitHub PR comment.
Original author: @qodo-code-review[bot]
Original URL: https://github.com/carverauto/serviceradar/pull/2652#issuecomment-3830373256
Original created: 2026-02-01T04:52:05Z
PR Compliance Guide 🔍
Below is a summary of compliance checks for this PR:
Unintended public exposure
Description: The demo configuration sets
type: LoadBalancerwith specificloadBalancerIPvalues (e.g.,23.138.124.24/23.138.124.25) which may unintentionally expose syslog/NetFlow ingestionservices publicly if applied in an environment where these IPs are routable; confirm these
IPs are intended, restricted by firewall/ACLs, and not usable outside a controlled demo
network.
values-demo.yaml [90-107]
Referred Code
🎫 No ticket provided
Codebase context is not defined
Follow the guide to enable codebase context checks.
Generic: Comprehensive Audit Trails
Objective: To create a detailed and reliable record of critical system actions for security analysis
and compliance.
Status: Passed
Generic: Secure Error Handling
Objective: To prevent the leakage of sensitive system information through error messages while
providing sufficient detail for internal debugging.
Status: Passed
Generic: Secure Logging Practices
Objective: To ensure logs are useful for debugging and auditing without exposing sensitive
information like PII, PHI, or cardholder data.
Status: Passed
Generic: Meaningful Naming and Self-Documenting Code
Objective: Ensure all identifiers clearly express their purpose and intent, making code
self-documenting
Status:
Misleading config comment: The comment says the setting will "only advertise from nodes with local
endpoints" (i.e.,
externalTrafficPolicy: Local) but the default value is set toCluster, making the configuration self-documentation misleading.Referred Code
Generic: Robust Error Handling and Edge Case Management
Objective: Ensure comprehensive error handling that provides meaningful context and graceful
degradation
Status:
Missing edge-case guard:
externalTrafficPolicyis rendered whenever a value is provided, even if the Servicetypeis
ClusterIP, which can produce an invalid Kubernetes Service manifest instead of handlingthe edge case safely.
Referred Code
Generic: Security-First Input Validation and Data Handling
Objective: Ensure all data inputs are validated, sanitized, and handled securely to prevent
vulnerabilities
Status:
No value validation: The template inserts
.Values.flowgger.externalService.externalTrafficPolicydirectly intothe manifest without validating it against allowed values (
Local/Cluster) or gating it byService type, allowing invalid external inputs to generate unsafe/invalid resources.
Referred Code
Compliance status legend
🟢 - Fully Compliant🟡 - Partial Compliant
🔴 - Not Compliant
⚪ - Requires Further Human Verification
🏷️ - Compliance label
Imported GitHub PR comment.
Original author: @qodo-code-review[bot]
Original URL: https://github.com/carverauto/serviceradar/pull/2652#issuecomment-3830373522
Original created: 2026-02-01T04:52:23Z
CI Feedback 🧐
A test triggered by this PR failed. Here is an AI-generated analysis of the failure:
Action: build
Failed stage: Configure SRQL fixture database for tests [❌]
Failed test name: ""
Failure summary:
The action failed during environment/fixture setup because the required secret
SRQL_TEST_DATABASE_CA_CERTwas not configured.- The log explicitly reports:
SRQL_TEST_DATABASE_CA_CERT secret must be configured to verify SRQL fixture TLS.(around lines676-678).
- The
SRQL_TEST_DATABASE_CA_CERTenvironment variable is empty in the job environment(lines 361, 517, 580), causing the setup script to exit with code 1.
Relevant error logs:
Imported GitHub PR comment.
Original author: @qodo-code-review[bot]
Original URL: https://github.com/carverauto/serviceradar/pull/2652#issuecomment-3830373935
Original created: 2026-02-01T04:52:54Z
PR Code Suggestions ✨
Explore these optional code suggestions:
Consolidate Kubernetes manifests into a single tool
The PR edits both Helm charts and static Kubernetes manifests in
k8s/demo/. Toimprove maintainability and create a single source of truth, consider managing
all Kubernetes resources exclusively through the Helm chart.
Examples:
k8s/demo/base/serviceradar-netflow-collector.yaml [157]
helm/serviceradar/values-demo.yaml [96-107]
Solution Walkthrough:
Before:
After:
Suggestion importance[1-10]: 9
__
Why: This is a significant architectural suggestion that correctly identifies a major maintainability issue, as the PR modifies both Helm charts and static manifests for the same purpose, increasing complexity and risk of drift.
Only add traffic policy for non-ClusterIP
In the Helm template, add a condition to only set
externalTrafficPolicyif theservice type is not
ClusterIP, as this field is not supported forClusterIPservices.
helm/serviceradar/templates/flowgger.yaml [193-195]
Suggestion importance[1-10]: 7
__
Why: The suggestion correctly points out that
externalTrafficPolicyis invalid forClusterIPservices and provides a valid guard to prevent rendering invalid Kubernetes manifests.Skip policy on ClusterIP services
In the Helm template, add a condition to only set
externalTrafficPolicyif theservice type is not
ClusterIP, as this field is not supported forClusterIPservices.
helm/serviceradar/templates/netflow-collector.yaml [147-149]
Suggestion importance[1-10]: 7
__
Why: The suggestion correctly points out that
externalTrafficPolicyis invalid forClusterIPservices and provides a valid guard to prevent rendering invalid Kubernetes manifests.Correct default traffic policy value
Change the default
externalTrafficPolicyfromClustertoLocalinvalues.yamltoalign the value with its descriptive comment.
helm/serviceradar/values.yaml [249-260]
[To ensure code accuracy, apply this suggestion manually]Suggestion importance[1-10]: 6
__
Why: The suggestion correctly identifies a contradiction between the comment and the default value for
externalTrafficPolicy, which could lead to user confusion and misconfiguration.