Skip to content

NETOBSERV-2515: Add TLS support for collector when OpenShift - #552

Open
leandroberetta wants to merge 2 commits into
netobserv:mainfrom
leandroberetta:netobserv-2515
Open

NETOBSERV-2515: Add TLS support for collector when OpenShift#552
leandroberetta wants to merge 2 commits into
netobserv:mainfrom
leandroberetta:netobserv-2515

Conversation

@leandroberetta

@leandroberetta leandroberetta commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Description

  • Enable TLS for the gRPC collector server when running on OpenShift, using service-ca for automatic cert generation

  • Conditionally detect OpenShift and annotate the collector Service for cert generation, create a CA ConfigMap with inject-cabundle, and mount certs in the collector pod

  • Add CA volume and tls.caCertPath to the agent DaemonSet FLP config so agents verify the collector's certificate

  • On non-OpenShift clusters, everything works without TLS as before

    Test plan

    • Verified on OpenShift 4.22: collector starts with TLS, agents connect and flows are received
    • Verify on non-OpenShift (vanilla k8s): TLS is skipped, flows work without TLS
    • Verify packet capture works with TLS
    • Verify background mode works with TLS

Dependencies

n/a

Checklist

  • Does the changes in PR need specific configuration or environment set up for testing?
    • if so please describe it in PR description.
  • I have added thorough unit tests for the change.
  • QE requirements (check 1 from the list):
    • Standard QE validation, with pre-merge tests unless stated otherwise.
    • Regression tests only (e.g. refactoring with no user-facing change).
    • No QE (e.g. trivial change with high reviewer's confidence, or per agreement with the QE team).

@openshift-ci-robot

openshift-ci-robot commented Aug 11, 2026

Copy link
Copy Markdown
Collaborator

@leandroberetta: This pull request references NETOBSERV-2515 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the epic to target either version "5.0.0." or "openshift-5.0.0.", but it targets "netobserv-2.0" instead.

Details

In response to this:

Description

  • Enable TLS for the gRPC collector server when running on OpenShift, using service-ca for automatic cert generation
  • Conditionally detect OpenShift and annotate the collector Service for cert generation, create a CA ConfigMap with inject-cabundle, and mount certs in the collector pod
  • Add CA volume and tls.caCertPath to the agent DaemonSet FLP config so agents verify the collector's certificate
  • On non-OpenShift clusters, everything works without TLS as before

Test plan

  • Verified on OpenShift 4.22: collector starts with TLS, agents connect and flows are received
  • Verify on non-OpenShift (vanilla k8s): TLS is skipped, flows work without TLS
  • Verify packet capture works with TLS
  • Verify background mode works with TLS

Dependencies

n/a

Checklist

  • Does the changes in PR need specific configuration or environment set up for testing?
    • if so please describe it in PR description.
  • I have added thorough unit tests for the change.
  • QE requirements (check 1 from the list):
  • Standard QE validation, with pre-merge tests unless stated otherwise.
  • Regression tests only (e.g. refactoring with no user-facing change).
  • No QE (e.g. trivial change with high reviewer's confidence, or per agreement with the QE team).

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci

openshift-ci Bot commented Aug 11, 2026

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign memodi for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-ci

openshift-ci Bot commented Aug 12, 2026

Copy link
Copy Markdown

@leandroberetta: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/integration-tests f86c30c link true /test integration-tests

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

Comment thread go.mod
sigs.k8s.io/yaml v1.6.0 // indirect
)

replace github.com/netobserv/flowlogs-pipeline => github.com/leandroberetta/flowlogs-pipeline v0.0.0-20260810170916-6c5c94ab0294

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't forget to remove this :)

Comment thread cmd/collector_tls.go

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

that deserve at least a unit test

Comment thread commands/netobserv
Comment on lines +213 to +224
if [[ "$tlsEnabled" == "true" ]]; then
cmd="${K8S_CLI_BIN} run -n $namespace collector \\
--image=$img --image-pull-policy='Always' --restart='Never' \\
--override-type=strategic \\
--overrides=$overrides \\
--command -- $runCommand"
else
cmd="${K8S_CLI_BIN} run -n $namespace collector \\
--image=$img --image-pull-policy='Always' --restart='Never' \\
--overrides=$overrides \\
--command -- $runCommand"
fi

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
if [[ "$tlsEnabled" == "true" ]]; then
cmd="${K8S_CLI_BIN} run -n $namespace collector \\
--image=$img --image-pull-policy='Always' --restart='Never' \\
--override-type=strategic \\
--overrides=$overrides \\
--command -- $runCommand"
else
cmd="${K8S_CLI_BIN} run -n $namespace collector \\
--image=$img --image-pull-policy='Always' --restart='Never' \\
--overrides=$overrides \\
--command -- $runCommand"
fi
overrideType=""
if [[ "$tlsEnabled" == "true" ]]; then
overrideType="--override-type=strategic"
fi
cmd="${K8S_CLI_BIN} run -n $namespace collector \
--image=$img --image-pull-policy='Always' --restart='Never' \
$overrideType --overrides=$overrides \
--command -- $runCommand"

Comment thread scripts/functions.sh
Comment on lines 420 to 439
if [ "$command" = "flows" ]; then
echo "creating collector service"
applyYAML "$collectorServiceYAML"
if [[ "$tlsEnabled" == "true" ]]; then
echo "creating CA configmap for TLS"
createCAConfigMap
fi
echo "creating flow-capture agents"
elif [ "$command" = "packets" ]; then
echo "creating collector service"
applyYAML "$collectorServiceYAML"
if [[ "$tlsEnabled" == "true" ]]; then
echo "creating CA configmap for TLS"
createCAConfigMap
fi
echo "creating packet-capture agents"
elif [ "$command" = "metrics" ]; then
echo "creating service monitor"
applyYAML "$smYAML"
echo "creating metric-capture agents:"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should simplify this to something like:

# Create collector service for flows/packets captures
if [[ "$command" = "flows" || "$command" = "packets" ]]; then
  echo "creating collector service"
  applyYAML "$collectorServiceYAML"
  if [[ "$tlsEnabled" == "true" ]]; then
    echo "creating CA configmap for TLS"
    createCAConfigMap
  fi
fi
if [ "$command" = "flows" ]; then
  echo "creating flow-capture agents"
elif [ "$command" = "packets" ]; then
  echo "creating packet-capture agents"
elif [ "$command" = "metrics" ]; then
  echo "creating service monitor"
  applyYAML "$smYAML"
  echo "creating metric-capture agents:"

Comment thread scripts/functions.sh
Comment on lines +158 to +160
function isOpenShift() {
${K8S_CLI_BIN} get clusterversion version &>/dev/null
}

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You should rely on checkClusterVersion here instead.

Feel free to add a global variable like isOCP in it for your usage 😉

Comment thread go.mod
golang.org/x/tools v0.45.0 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa // indirect
google.golang.org/grpc v1.81.1 // indirect
google.golang.org/grpc v1.82.0

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: Is that needed here ?

@openshift-ci

openshift-ci Bot commented Aug 26, 2026

Copy link
Copy Markdown

PR needs rebase.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants