diff --git a/cmd/jaeger/config-cassandra.yaml b/cmd/jaeger/config-cassandra.yaml index 00b038144941..893b3a1800f1 100644 --- a/cmd/jaeger/config-cassandra.yaml +++ b/cmd/jaeger/config-cassandra.yaml @@ -21,9 +21,13 @@ extensions: some_storage: cassandra: keyspace: "jaeger_v1_dc1" + username: "cassandra" + password: "cassandra" another_storage: cassandra: keyspace: "jaeger_v1_dc1" + username: "cassandra" + password: "cassandra" receivers: otlp: protocols: diff --git a/docker-compose/cassandra/v3/docker-compose.yaml b/docker-compose/cassandra/v3/docker-compose.yaml index fdca44acfe7b..4f8796ea4500 100644 --- a/docker-compose/cassandra/v3/docker-compose.yaml +++ b/docker-compose/cassandra/v3/docker-compose.yaml @@ -4,6 +4,10 @@ services: ports: - "9042:9042" - "9160:9160" + # We enable password authentication that defaults to cassandra/cassandra superuser / pwd. + # https://cassandra.apache.org/doc/stable/cassandra/operating/security.html#authentication + command: > + /bin/sh -c "echo 'authenticator: PasswordAuthenticator' >> /etc/cassandra/cassandra.yaml && docker-entrypoint.sh cassandra -f" networks: - cassandra-net healthcheck: @@ -11,7 +15,7 @@ services: interval: 30s timeout: 10s retries: 5 - + networks: cassandra-net: driver: bridge diff --git a/docker-compose/cassandra/v4/docker-compose.yaml b/docker-compose/cassandra/v4/docker-compose.yaml index 2b8ef6d38f67..196a1b622250 100644 --- a/docker-compose/cassandra/v4/docker-compose.yaml +++ b/docker-compose/cassandra/v4/docker-compose.yaml @@ -4,6 +4,10 @@ services: ports: - "9042:9042" - "9160:9160" + # We enable password authentication that defaults to cassandra/cassandra superuser / pwd. + # https://cassandra.apache.org/doc/stable/cassandra/operating/security.html#authentication + command: > + /bin/sh -c "echo 'authenticator: PasswordAuthenticator' >> /etc/cassandra/cassandra.yaml && docker-entrypoint.sh cassandra -f" networks: - cassandra-net healthcheck: diff --git a/plugin/storage/integration/cassandra_test.go b/plugin/storage/integration/cassandra_test.go index 6b45839a1a4e..c8f88d014527 100644 --- a/plugin/storage/integration/cassandra_test.go +++ b/plugin/storage/integration/cassandra_test.go @@ -6,6 +6,7 @@ package integration import ( "context" + "os" "testing" "github.com/stretchr/testify/require" @@ -50,14 +51,19 @@ func (*CassandraStorageIntegration) initializeCassandraFactory(t *testing.T, fla } func (s *CassandraStorageIntegration) initializeCassandra(t *testing.T) { + username := os.Getenv("CASSANDRA_USERNAME") + password := os.Getenv("CASSANDRA_USERNAME") f := s.initializeCassandraFactory(t, []string{ - "--cassandra.basic.allowed-authenticators=", - "--cassandra.password=password", - "--cassandra.username=username", + "--cassandra.basic.allowed-authenticators=org.apache.cassandra.auth.PasswordAuthenticator", + "--cassandra.password=" + password, + "--cassandra.username=" + username, "--cassandra.keyspace=jaeger_v1_dc1", "--cassandra-archive.keyspace=jaeger_v1_dc1_archive", "--cassandra-archive.enabled=true", "--cassandra-archive.servers=127.0.0.1", + "--cassandra-archive.basic.allowed-authenticators=org.apache.cassandra.auth.PasswordAuthenticator", + "--cassandra-archive.password=" + password, + "--cassandra-archive.username=" + username, }) s.factory = f var err error diff --git a/scripts/cassandra-integration-test.sh b/scripts/cassandra-integration-test.sh index 8e6bfd784e6f..849c4109981b 100755 --- a/scripts/cassandra-integration-test.sh +++ b/scripts/cassandra-integration-test.sh @@ -3,7 +3,11 @@ # Copyright (c) 2024 The Jaeger Authors. # SPDX-License-Identifier: Apache-2.0 -set -uxf -o pipefail +set -euxf -o pipefail + +export CASSANDRA_USERNAME="cassandra" +export CASSANDRA_PASSWORD="cassandra" +success="false" usage() { echo $"Usage: $0 " @@ -23,10 +27,19 @@ setup_cassandra() { echo "docker_compose_file=${compose_file}" >> "${GITHUB_OUTPUT:-/dev/null}" } +dump_logs() { + local compose_file=$1 + echo "::group::🚧 🚧 🚧 Cassandra logs" + docker compose -f "${compose_file}" logs + echo "::endgroup::" +} + teardown_cassandra() { local compose_file=$1 + if [[ "$success" == "false" ]]; then + dump_logs "${compose_file}" + fi docker compose -f "$compose_file" down - exit "${exit_status}" } apply_schema() { @@ -40,6 +53,8 @@ apply_schema() { --env CQLSH_PORT=9042 --env "TEMPLATE=/cassandra-schema/${schema_version}.cql.tmpl" --env "KEYSPACE=${keyspace}" + --env "CASSANDRA_USERNAME=${CASSANDRA_USERNAME}" + --env "CASSANDRA_PASSWORD=${CASSANDRA_PASSWORD}" --network host ) docker build -t ${image} ${schema_dir} @@ -57,22 +72,21 @@ run_integration_test() { setup_cassandra "${compose_file}" + # shellcheck disable=SC2064 + trap "teardown_cassandra ${compose_file}" EXIT + apply_schema "$schema_version" "$primaryKeyspace" apply_schema "$schema_version" "$archiveKeyspace" if [ "${jaegerVersion}" = "v1" ]; then STORAGE=cassandra make storage-integration-test - exit_status=$? elif [ "${jaegerVersion}" == "v2" ]; then STORAGE=cassandra make jaeger-v2-storage-integration-test - exit_status=$? else echo "Unknown jaeger version $jaegerVersion. Valid options are v1 or v2" exit 1 fi - - # shellcheck disable=SC2064 - trap "teardown_cassandra ${compose_file}" EXIT + success="true" }