Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary Of Changes
Allow users to opt-in to exposing pprof debugging endpoints on the operator's metrics port.
Users may add the
ENABLE_DEBUG_PPROFenv variable to the operator Pod to enable the pprof endpoints.This is an opt-in pattern, as memory/CPU profiling can have a non-insignificant impact on runtime perf,
and could be a denial of service vector. These endpoints should not be enabled in production.
With this feature enabled, users can access the pprof output at
<OPERATOR_URL>:<METRICS_PORT>/debug/pprof. For example, afterport-forwarding to the operator Pod:
Note to reviewers: remember to look at the commits in this PR and consider if they can be squashed
Additional Context
For more info on pprof: https://github.com/google/pprof/blob/main/doc/README.md
For documentation on the Go library this imports: https://pkg.go.dev/net/http/pprof
Note that this PR adds a unit test which necessitates binding the manager binary to a local port. This will cause firewall warnings on MacOS.
Local Testing
Please ensure you run the unit, integration and system tests before approving the PR.
To run the unit and integration tests:
You will need to target a k8s cluster and have the operator deployed for running the system tests.
For example, for a Kubernetes context named
dev-bunny: