-
Notifications
You must be signed in to change notification settings - Fork 119
[seaweedfs] Fix connectivity issues for SeaweedFS #1386
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
WalkthroughAdded four Nginx Ingress timeout annotations to the SeaweedFS S3 ingress configuration in packages/system/seaweedfs/values.yaml. Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~8 minutes Suggested reviewers
Poem
✨ Finishing Touches🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR/Issue comments)Type Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Summary of Changes
Hello @kvaps, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!
This pull request addresses potential connectivity issues within the SeaweedFS deployment by adjusting the Nginx ingress timeout settings. The modifications aim to enhance the stability and reliability of connections, particularly for operations that require extended durations, thereby improving the overall user experience with SeaweedFS.
Highlights
- Nginx Ingress Configuration: Added
proxy-read-timeout
,proxy-send-timeout
,client-body-timeout
(all set to 3600 seconds), andclient-header-timeout
(set to 120 seconds) to the SeaweedFS Nginx ingress annotations. These changes are intended to prevent connection timeouts for long-running operations.
Using Gemini Code Assist
The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.
Invoking Gemini
You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command>
or @gemini-code-assist <command>
. Below is a summary of the supported commands.
Feature | Command | Description |
---|---|---|
Code Review | /gemini review |
Performs a code review for the current pull request in its current state. |
Pull Request Summary | /gemini summary |
Provides a summary of the current pull request in its current state. |
Comment | @gemini-code-assist | Responds in comments when explicitly tagged, both in issue comments and review comments. |
Help | /gemini help |
Displays a list of available commands. |
Customization
To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/
folder in the base of the repository. Detailed instructions can be found here.
Limitations & Feedback
Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.
You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.
Footnotes
-
Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution. ↩
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This pull request aims to fix connectivity issues with SeaweedFS by increasing several NGINX ingress timeouts. While increasing timeouts is a valid approach for services that handle large file transfers, the new default timeout of 3600 seconds (1 hour) for proxy and client body operations is very high. This could expose the ingress controller to resource exhaustion and potential denial-of-service attacks. I've recommended reducing this to a more conservative default and documenting that it can be increased by users if needed.
nginx.ingress.kubernetes.io/proxy-read-timeout: "3600" | ||
nginx.ingress.kubernetes.io/proxy-send-timeout: "3600" | ||
nginx.ingress.kubernetes.io/client-body-timeout: "3600" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Setting timeouts to 3600 seconds (1 hour) is quite high and could make the ingress controller vulnerable to slowloris-type denial-of-service attacks, where an attacker could hold connections open for a long time by sending data very slowly. This can exhaust the available worker connections on the ingress controller, affecting other services.
While long timeouts are necessary for large file transfers with SeaweedFS, a 1-hour default seems excessive. Consider reducing this to a more moderate value, for example, 600
(10 minutes), and adding a comment to inform users that they can increase it if they need to handle extremely large file transfers over slow connections.
If 1 hour is truly necessary for your use case, please add a comment explaining why such a long timeout is required as a default.
nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
nginx.ingress.kubernetes.io/client-body-timeout: "600"
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
packages/system/seaweedfs/values.yaml (1)
96-111
: TLS host mismatch will break cert issuance/termination
ingress.host
isseaweedfs2.demo.cozystack.io
buttls.hosts
listsseaweedfs.demo.cozystack.io
. This mismatch can cause the wrong certificate to be requested/attached and result in browser/client TLS errors.tls: - hosts: - - seaweedfs.demo.cozystack.io + - seaweedfs2.demo.cozystack.io secretName: seaweedfs-s3-ingress-tls
🧹 Nitpick comments (1)
packages/system/seaweedfs/values.yaml (1)
102-105
: Good timeout additions; also consider connect-timeout and confirm controllerThese timeouts make sense for long S3 uploads/downloads. Consider also setting
proxy-connect-timeout
to cover slow upstream TCP handshakes, and verify thatclassName: tenant-root
points to an NGINX IngressController so these annotations take effect.nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" nginx.ingress.kubernetes.io/proxy-read-timeout: "3600" nginx.ingress.kubernetes.io/proxy-send-timeout: "3600" nginx.ingress.kubernetes.io/client-body-timeout: "3600" nginx.ingress.kubernetes.io/client-header-timeout: "120" + nginx.ingress.kubernetes.io/proxy-connect-timeout: "120"
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (1)
packages/system/seaweedfs/values.yaml
(1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Build
Successfully created backport PR for |
Signed-off-by: Andrei Kvapil kvapss@gmail.com
What this PR does
Release note
Summary by CodeRabbit