-
-
Notifications
You must be signed in to change notification settings - Fork 342
feat: Add Qdrant module #1149
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
feat: Add Qdrant module #1149
Conversation
This commit adds a qdrant container to the list of supported Testcontainers. The qdrant container allows configuration of: - an API key to authenticate to Qdrant - an x509 certificate used to secure communication to Qdrant with Transport Layer Security - a custom configuration file. See https://qdrant.tech/documentation/guides/configuration/ Closes testcontainers#992
Qdrant uses rustls for TLS, which does not accept IPv4 or IPv6 addresses as the hostname in SNI, adhering to RFC 6066: https://www.rfc-editor.org/rfc/rfc6066#page-7 Sending an IPv4 or IPv6 address as the hostname in SNI causes the handshake to be rejected and qdrant to log WARN rustls::msgs::handshake: Illegal SNI hostname received "127.0.0.1" By default, .NET on linux sends the DNS name in the URI in Server Name Indication (SNI), irrespective of whether it's an IP address or not. In order to resolve this, a custom Host request header is added, per dotnet/runtime#20876 (comment)
✅ Deploy Preview for testcontainers-dotnet ready!
To edit notification comments on pull requests, go to your Netlify site configuration. |
This commit moves the wait for strategy to use the readyz endpoint. If a certificate has been specified, perform the check with TLS and allow any certificate to pass validation.
The qdrant gRPC client uses .NET Framework build of Grpc.Net.Client, which uses WinHttpHandler. The wiring up is easier on net462 if net462 is targeted specifically. Same reason why the Milvus container also targets net462 (testcontainers#1131 (comment)).
HofmeisterAn
left a comment
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.
Thank you for the PR 🙏. I have reviewed it and made some minor changes to align with the repository standards. I have a some suggestions regarding the certificates. I am happy to merge the PR after we have sorted them out.
|
It will be nice to add some docs for the module and how to use it. |
This commit updates the version of the image and the official Qdrant client, and adds docs on how to use the container.
|
@HofmeisterAn @eddumelendez I've updated this PR with latest on develop and added documentation. Looking forward to seeing this merged. |
|
I'll try to review it by the end of this week. |
eddumelendez
left a comment
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.
LGTM
HofmeisterAn
left a comment
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.
Thanks ⭐.
|
Thanks for merging @HofmeisterAn. Do you have a rough idea when this might be released? |
Closes #992
What does this PR do?
This commit adds a qdrant container to the list of supported Testcontainers, for use with the Qdrant vector database.
The qdrant container allows configuration of:
Why is it important?
Provides a qdrant test container for folks that need it
Related issues
#992
Supersedes #994
How to test this PR
Run tests in Testcontainers.Qdrant.Tests