Skip to content

Conversation

@bbotella
Copy link
Contributor

@bbotella bbotella commented Aug 4, 2025

A comprehensive Apache Cassandra development environment management tool using Docker Compose, built from the latest source code, a specific branch, commit or PR. The environment supports multi-node clusters, Cassandra Sidecar integration, and complete lifecycle management.

I used Claude Code to implement the tool.

bbotella and others added 18 commits August 4, 2025 15:03
A comprehensive Apache Cassandra development environment management tool using Docker Compose, built from the latest source code, a specific branch, commit or PR. The environment supports multi-node clusters, Cassandra Sidecar integration, and complete lifecycle management.
…ecture

This commit completes the transition to a unified container architecture where both Cassandra
and Sidecar run in the same container, with password authentication enabled by default.

Key changes:
- Configure PasswordAuthenticator instead of AllowAllAuthenticator
- Set default credentials to cassandra/cassandra for both CQL and JMX
- Update Sidecar driver configuration to use authentication
- Add authentication initialization for seed nodes only
- Update connection examples throughout documentation
- Remove separate sidecar-entrypoint.sh (now integrated into cassandra-entrypoint.sh)
- Update Go build script to use credentials in connection instructions
- Fix nodetool commands to use JMX authentication

The system now provides a secure development environment with consistent authentication
across all components while maintaining ease of use.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
- Add go.mod and go.sum for proper Go module management
- Update .gitignore to exclude SSL certificates (*.pem, *.p12, *.jks)
- Remove SSL certificate files from tracking
- Update Go configuration for hostname resolution and SSL setup
- Replace github.com/bbotellacorbi/cassandra-env-manager imports with cassandra-dev-env
- Fix Go module compatibility for local development and cloning
- Enable successful builds with make build command
- Remove Dockerfile from gitignore as it's part of project infrastructure
- Dockerfile should be versioned for reproducible builds
- Keep Dockerfile.sidecar ignored as it's autogenerated
- Replace nodetool-based cluster status checks with CQL queries
- Use system.peers table to verify actual cluster membership
- Eliminate authentication dependency that caused race conditions
- Add Docker network hostnames to SSL certificate SAN for multi-node support
- Fix extra_hosts mapping to only apply to single-node clusters
- Maintain localhost SSL validation while enabling proper inter-node communication

This resolves the "2/3 nodes ready" false negative and enables reliable
multi-node cluster formation with SSL certificate validation.
- Add JVM module access flags to Sidecar startup for Java 11+ compatibility
  Required --add-exports and --add-opens flags enable access to JDK internal
  packages needed by Cassandra internal classes (FileUtils, Directories, etc.)
  Resolves IllegalAccessException errors in CDC consumer initialization

- Create required CDC directories during container startup
  Ensures /var/lib/cassandra/cdc_raw and related directories exist before
  Cassandra starts, preventing cross-device link errors

- Add .dockerignore to exclude data directories from Docker builds
  Prevents persisted cluster metadata from being copied into images,
  avoiding cluster name mismatch errors on rebuild

- Improve local repository copy with rsync exclusions
  Excludes build artifacts (dtest-jars, .gradle, build/) when copying
  local Cassandra/Sidecar repositories, ensuring clean builds
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants