Skip to content
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

Support PaaS Cassandra - Add Port #2467

Closed
MarianZoll opened this issue Sep 11, 2020 · 2 comments · Fixed by #2472
Closed

Support PaaS Cassandra - Add Port #2467

MarianZoll opened this issue Sep 11, 2020 · 2 comments · Fixed by #2472

Comments

@MarianZoll
Copy link
Contributor

MarianZoll commented Sep 11, 2020

Requirement - what kind of business use case are you trying to solve?

Connect to a cloud-provider managed Cassandra to reduce the operational overhead on the databases. Unfortunately, for most cloud providers, a non 9042 port is used and SSL is required.

We are running CosmosDB with the Cassandra API, so this is another thing we might want to address. According to a couple of issues this might be reasonable to support:
#1105
#1667
apache/cassandra-gocql-driver#1205

Problem - what in Jaeger blocks you from solving the requirement?

  • Cassandra create schema does not support other ports than the default 9042 for the CQL connection.

Currently, the environment variable can be set using manual env injection as described here: #2366. Unfortunately, this is not considered by the create schema as it is a separate container.

Proposal - what do you suggest to solve the problem or improve the existing situation?

For operator based installations I already addressed the topic in jaegertracing/jaeger-operator#1179 and we narrowed down some aspects to consider.

To create the Cassandra schema, we have to change the following to support environment variables like CQLSH_PORT.

CQLSH=${CQLSH:-"/opt/cassandra/bin/cqlsh"}
CQLSH_HOST=${CQLSH_HOST:-"cassandra"}
CQLSH_SSL=${CQLSH_SSL:-""}
CASSANDRA_WAIT_TIMEOUT=${CASSANDRA_WAIT_TIMEOUT:-"60"}
DATACENTER=${DATACENTER:-"dc1"}
KEYSPACE=${KEYSPACE:-"jaeger_v1_${DATACENTER}"}
MODE=${MODE:-"test"}
TEMPLATE=${TEMPLATE:-""}
USER=${CASSANDRA_USERNAME:-""}
PASSWORD=${CASSANDRA_PASSWORD:-""}

I'd also like to work on the Azure Cosmos DB schema creation. The issues mentioned (especially: #1105) pretty much already point out what needs to be done and for me it looks like this might be possible without creating a new backend provider as discussed in other threads. The biggest blocker is most probably the frozen annotations.

To configure SSL certificates, I would suggest to have an option to use your own set of certs or support some "well-known" CAs like Lets Encrypt. I know about https://www.jaegertracing.io/docs/1.18/deployment/#tls-support but providing additional files is not that nice for K8s based deployments when it comes to developer experience and co.

Any open questions to address

Maybe we can start to discuss the approach.

@ghost ghost added the needs-triage label Sep 11, 2020
@jpkrohling
Copy link
Contributor

Could you break this down in individual tasks? One for adding the port to the create-schema script/image, one for the changes to get the create schema to work on Azure, and one for the TLS certs. The first is a must-have, in my opinion, the second might not be problematic too, but not sure I agree with the third.

@MarianZoll
Copy link
Contributor Author

Sure I did start implementing it today as I was blocked last week :). I will create separate issues and link this one accordingly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants