Helm operator security hardening#1956
Merged
wenchajun merged 1 commit intoMay 19, 2026
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR hardens the Helm deployment defaults for the Fluent Operator, but it also includes unrelated Fluent Bit S3 output API/CRD updates.
Changes:
- Adds default pod/container security contexts and probes to the Helm operator chart.
- Renders operator liveness/readiness probes in the Helm deployment template.
- Adds S3 networking fields across API types, docs, generated deepcopy, and CRD manifests.
Reviewed changes
Copilot reviewed 13 out of 14 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
charts/fluent-operator/values.yaml |
Adds hardened operator security defaults and probe values. |
charts/fluent-operator/templates/fluent-operator-deployment.yaml |
Renders operator liveness/readiness probes. |
apis/fluentbit/v1alpha2/plugins/output/s3_types.go |
Adds S3 networking fields and config rendering. |
apis/fluentbit/v1alpha2/plugins/output/s3_types_test.go |
Extends S3 params test for new networking fields. |
apis/fluentbit/v1alpha2/plugins/output/zz_generated.deepcopy.go |
Regenerates deepcopy logic for new S3 fields. |
docs/plugins/fluentbit/output/s3.md |
Documents new S3 fields. |
config/crd/bases/fluentbit.fluent.io_outputs.yaml |
Regenerates Output CRD schema. |
config/crd/bases/fluentbit.fluent.io_clusteroutputs.yaml |
Regenerates ClusterOutput CRD schema. |
charts/fluent-operator/crds/fluentbit.fluent.io_outputs.yaml |
Updates Helm-bundled Output CRD. |
charts/fluent-operator/crds/fluentbit.fluent.io_clusteroutputs.yaml |
Updates Helm-bundled ClusterOutput CRD. |
charts/fluent-operator-fluent-bit-crds/templates/fluentbit.fluent.io_outputs.yaml |
Updates standalone Fluent Bit Output CRD chart template. |
charts/fluent-operator-fluent-bit-crds/templates/fluentbit.fluent.io_clusteroutputs.yaml |
Updates standalone Fluent Bit ClusterOutput CRD chart template. |
manifests/setup/setup.yaml |
Updates generated setup manifest CRD schemas. |
manifests/setup/fluent-operator-crd.yaml |
Updates generated CRD manifest schemas. |
Files not reviewed (1)
- apis/fluentbit/v1alpha2/plugins/output/zz_generated.deepcopy.go: Language not supported
Comments suppressed due to low confidence (5)
apis/fluentbit/v1alpha2/plugins/output/s3_types.go:150
- This renders the
Keepalivefield asnet.tcp_keepalive, but the field comment/JSON name describe the existing connection keepalive option that the shared networking implementation renders asnet.keepalive(apis/fluentbit/v1alpha2/plugins/net_types.go:55-56). Users settingkeepalivefor S3 will configure a different Fluent Bit option than the CRD documents.
plugins.InsertKVField(kvs, "net.tcp_keepalive", o.Keepalive)
apis/fluentbit/v1alpha2/plugins/output/s3_types.go:154
KeepaliveIdleTimeoutis added to the renderer but the updated S3 params test does not set this field or assert the emittednet.keepalive_idle_timeoutkey. Because the test covers the other newly added networking fields, this path should be included to catch key/tag regressions.
plugins.InsertKVField(kvs, "net.keepalive_idle_timeout", o.KeepaliveIdleTimeout)
apis/fluentbit/v1alpha2/plugins/output/s3_types.go:69
- Correct the grammar in this new field description: "this include" should be "this includes".
// Set maximum time expressed in seconds to wait for a TCP connection to be established, this include the TLS handshake time.
apis/fluentbit/v1alpha2/plugins/output/s3_types.go:78
- Use the standard capitalization "IPv6" in this new field description.
// Prioritize IPV6 DNS results when trying to establish a connection.
apis/fluentbit/v1alpha2/plugins/output/s3_types.go:73
- These S3-specific networking fields bypass the shared
plugins.NetworkingAPI used by other output plugins (for example,apis/fluentbit/v1alpha2/plugins/output/http_types.go:67and:119-124). This creates a different schema for the same Fluent Bit networking options and duplicates rendering logic; consider extending/reusing the shared networking struct so S3 stays consistent with the rest of the outputs.
// Set maximum time expressed in seconds to wait for a TCP connection to be established, this include the TLS handshake time.
ConnectTimeout *int32 `json:"ConnectTimeout,omitempty"`
// On connection timeout, specify if it should log an error. When disabled, the timeout is logged as a debug message.
ConnectTimeoutLogError *bool `json:"connectTimeoutLogError,omitempty"`
// Select the primary DNS connection type (TCP or UDP).
Signed-off-by: Anson <anson.liu@live.com>
076603e to
9f2f68c
Compare
wenchajun
approved these changes
May 19, 2026
This was referenced May 21, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
What this PR does / why we need it:
Changes applied to both values.yaml defaults and deployment template.
Which issue(s) this PR fixes:
Fixes #1945
Does this PR introduced a user-facing change?
Additional documentation, usage docs, etc.: