-
-
Notifications
You must be signed in to change notification settings - Fork 62
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
Revert "Add params for secure ClickHouse connections." #2033
Conversation
This reverts commit 39cdb11.
Codecov Report
@@ Coverage Diff @@
## master #2033 +/- ##
==========================================
+ Coverage 90.93% 91.10% +0.16%
==========================================
Files 499 499
Lines 21576 21564 -12
==========================================
+ Hits 19621 19646 +25
+ Misses 1955 1918 -37
Continue to review full report at Codecov.
|
Hi! Can you tell me why this issue reverted, i guess cliclhouse secure connection is very important issue |
Hi, sorry this was reverted because of a push safety issue with the original PR that caused a production issue when deployed. |
@evanh hi, im really waiting this feautre asap because we are trying to launch sentry 20 in production in destributed mode and DBaas databases (clickhouse) which supports only ssl/tls mode.. |
When we deployed this it caused Snuba to go into a crashloop and I haven't had time to spin up an environment to try and debug why. @katsil Did you test your changes outside of the tests included in Snuba? |
@evanh i dont even tryed to run tests - just insert all changes inside snuba code, build docker image and push them to private registry, then got SSL CA CERT ERRORs.. Like:
Can you tell me on which port i should connect - clickhouse own native port (9000/9440 for tls) or http/https clickhouse port (8123 or 8443 for https) *in my setup only 8443/9440 ports are available |
@evanh hi, maybe any news? or we can reopen issue, i guess supporting clickhouse ssl is very important feature for snuba |
So looking at the error, it looks to be because the certificate is self signed and Clickhouse has to be configured correctly to support self signed certificates. https://clickhouse.tech/docs/en/operations/server-configuration-parameters/settings/#server_configuration_parameters-openssl Can you connect directly to Clickhouse with your cert? Without going through Snuba? As for the port, that is also configured explicitly in Clickhouse. https://clickhouse.tech/docs/en/operations/server-configuration-parameters/settings/#http-porthttps-port If you can connect correctly to Clickhouse, then I would try adding your changes back to Snuba, and testing that you can connect and run queries in Snuba with HTTPS. |
@evanh If i run multiple snuba instances with multiple crons |
@katsil There aren't any internal locks I'm aware of. I'm not familiar with running Snuba in this way but the only contention I could think of is that all of the instances will be listening for connections on the same port. |
@konstantin-popov Sorry are you saying you tested your SSL change in Snuba and were able to successfully run tests with SSL enabled? |
No, I didn't change testing environment to use SSL for ClickHouse connections (it would require some configuration effort to create certificates for CH and I thought it was not the thing worth testing). |
Has anyone had any luck connecting snuba to clickhouse over SSL? How did you do it (besides fixing the source code) ? Have you tried adding a certificate to the python certifi package ? |
### Description This pull request introduces SSL/TLS support for ClickHouse connections in the Snuba project. The changes include new CLI options for enabling secure connections, updates to the ClickhousePool and HTTPBatchWriter classes, and corresponding configuration options in settings and tests. ### Changes Overview 1. **CLI Options**: - Introduced new CLI options for enabling secure connections to ClickHouse: - `--clickhouse-secure`: If true, an encrypted connection will be used. - `--clickhouse-ca-certs`: An optional path to certificates directory. - `--clickhouse-verify`: Verify ClickHouse SSL cert. 2. **Class Updates**: - Modified `ClickhousePool`, `HTTPBatchWriter`, and other relevant classes to support SSL/TLS connections. - Updated constructors and methods to accept and handle SSL/TLS parameters. 3. **Configuration**: - Added SSL/TLS configuration options in settings and tests. - Updated environment variables to support SSL/TLS settings. 4. **Testing**: - Included SSL/TLS configuration in test cases. - Updated existing tests to ensure compatibility with SSL/TLS options. ### Detailed Changes - **snuba/cli/cleanup.py**: Added new CLI options for secure ClickHouse connections. - **snuba/cli/migrations.py**: Added new CLI options for secure ClickHouse connections. - **snuba/cli/optimize.py**: Added new CLI options for secure ClickHouse connections. - **snuba/clickhouse/http.py**: Modified `HTTPBatchWriter` to support SSL/TLS connections. - **snuba/clickhouse/native.py**: Updated `ClickhousePool` to handle SSL/TLS parameters. - **snuba/clusters/cluster.py**: Updated `ClickhouseCluster` to include SSL/TLS configuration. - **snuba/migrations/runner.py**: Added SSL/TLS parameters to migration runner. - **snuba/settings/__init__.py**: Added SSL/TLS configuration options. - **snuba/settings/settings_distributed.py**: Added SSL/TLS configuration options. - **tests/clusters/fake_cluster.py**: Updated `FakeClickhouseCluster` to include SSL/TLS parameters. - **tests/clusters/test_cluster.py**: Updated tests to include SSL/TLS configuration. - **tests/conftest.py**: Updated test setup to include SSL/TLS configuration. - **tests/migrations/test_connect.py**: Updated tests to include SSL/TLS configuration. - **tests/migrations/test_table_engines.py**: Updated tests to include SSL/TLS configuration. - **tests/replacer/test_cluster_replacements.py**: Updated tests to include SSL/TLS configuration. ## Related Issues - #6458 ## Related Pull Requests: - #2018 - #2033 ### Additional Notes - This change is backward compatible and does not require any additional setup for users who do not wish to enable SSL/TLS. - Please review the changes carefully to ensure that the SSL/TLS implementation is secure and efficient. FYI @konstantin-popov Thank you for reviewing this pull request! ### Legal Boilerplate Look, I get it. The entity doing business as "Sentry" was incorporated in the State of Delaware in 2015 as Functional Software, Inc. and is gonna need some rights from me in order to utilize my contributions in this here PR. So here's the deal: I retain all rights, title and interest in and to my contributions, and by keeping this boilerplate intact I confirm that Sentry can use, modify, copy, and redistribute my contributions, under Sentry's choice of terms. --------- Co-authored-by: Markus Unterwaditzer <markus-honeypot@unterwaditzer.net> Co-authored-by: Markus Unterwaditzer <markus-tarpit+git@unterwaditzer.net>
Reverts #2018