Repository navigation
Blacksmith v1.0.13
Blacksmith v1.0.13 Release Notes
Overview
This release brings improvements to Vault handling, code quality, and reconciler functionality, along with enhanced testing and development tooling.
π New Features
Vault Auto-Unseal Support
- Automatic Vault unsealing: Added
withAutoUnseal()wrapper for Vault operations that automatically retries after unsealing - Health monitoring: Optional Vault health watcher with configurable intervals
- Smart retry logic: Implements cooldown periods and singleflight controls to prevent excessive retry attempts
- Configuration options: New config keys for
vault.auto_unseal,health_check_interval, andunseal_cooldown
Enhanced Reconciler Functionality
- Improved instance management: Preserve existing
instance_namefrom Vault, populate from CF (cf_name) when missing - CF discovery integration: Wire CF discovery to use CFConnectionManager and enrich instances with CF data
- Binding reconstruction: Implement broker-based binding reconstruction using
Broker.GetBindingCredentials - Deletion handling: VM monitor now marks instances as deleted on first BOSH 404 and stops polling
- Index synchronization: Align updater index path to canonical "db" and synchronize via VaultInterface
π§ Improvements
Code Quality & Standards
- Lowercase config keys: Standardized all Blacksmith configuration keys to lowercase format
- Linting compliance: All code now passes
golangci-lintchecks - Security compliance: Codebase passes
make checkand security validation - Race condition testing: Added race condition testing with
make test-race
Development & Testing
- Enhanced Makefile: Added new targets including
golangci-lint,test-race, and security checks - test coverage: New unit tests for:
- Sealed vault detection and retry-after-unseal scenarios
- Synchronizer Vault I/O operations and end-to-end SyncIndex
- VM monitor 404 deletion flow
- Broker-based binding reconstruction
- CI/CD improvements: Updated workflows to include race condition testing
π Bug Fixes
- Reconciler regression fixes:
- Fixed missing
instance_nameissues - Resolved invisible index updates
- Prevented repeated 404 polling for deleted instances
- Fixed missing
- Binding credential recovery: Restored binding credential recovery via broker logic
- Index path alignment: Fixed reconciler index path inconsistencies
π Documentation
- Vault restart handling: Added documentation for "Handling Vault Restarts (AutoβUnseal)"
- Configuration guide: Documented new auto-unseal configuration options
- Troubleshooting: Enhanced troubleshooting guidance with log pointers
π Breaking Changes
- Configuration format: Blacksmith configuration keys have been changed to lowercase format. Update your configuration files accordingly.
π οΈ Technical Details
Vault Integration
- Vault operations now automatically handle sealed state scenarios
- Health watcher runs independently when enabled via configuration
- Retry logic includes exponential backoff and prevents thundering herd issues
Reconciler Enhancements
- Binding credentials are now stored in standard Vault layout
- Index updates are properly synchronized across all operations
- CF data enrichment provides better service instance context
π Upgrade Notes
- Update configuration files to use lowercase keys
- Review and adjust
vault.auto_unsealsettings if needed - Configure health check intervals based on your environment needs
- Test Vault restart scenarios with the new auto-unseal functionality
Full Changelog: v1.0.12...v1.0.13
π¦ Release Artifacts
| File | Description | SHA256 |
|---|---|---|
blacksmith-1.0.13.tar.gz |
Server Distribution (includes UI and all platform binaries, gzip) | 60f778ac... |
blacksmith-1.0.13.tar.bz2 |
Server Distribution (includes UI and all platform binaries, bzip2) | 46bf0d35... |
blacksmith-darwin-amd64 |
macOS Intel | 08769edb... |
blacksmith-darwin-arm64 |
macOS Apple Silicon (M1/M2/M3) | 4ee65fc9... |
blacksmith-linux-amd64 |
Linux AMD64 | ee8ce33b... |
π Installation
Server Distribution
# Download gzip version (smaller, faster decompression)
wget https://github.com/blacksmith-community/blacksmith/releases/download/v1.0.13/blacksmith-1.0.13.tar.gz
tar -xzf blacksmith-1.0.13.tar.gz
# OR download bzip2 version (better compression)
wget https://github.com/blacksmith-community/blacksmith/releases/download/v1.0.13/blacksmith-1.0.13.tar.bz2
tar -xjf blacksmith-1.0.13.tar.bz2
# Extract contains platform-specific binaries:
cd blacksmith-1.0.13/
ls blacksmith-* # Shows: blacksmith-linux-amd64, blacksmith-darwin-amd64, blacksmith-darwin-arm64
# Use the appropriate binary for your platform:
./blacksmith-linux-amd64 --version # For Linux
./blacksmith-darwin-amd64 --version # For macOS Intel
./blacksmith-darwin-arm64 --version # For macOS Apple SiliconmacOS/Linux Binary
# Download the appropriate binary for your system
# macOS Apple Silicon
curl -LO https://github.com/blacksmith-community/blacksmith/releases/download/v1.0.13/blacksmith-darwin-arm64
# macOS Intel
curl -LO https://github.com/blacksmith-community/blacksmith/releases/download/v1.0.13/blacksmith-darwin-amd64
# Linux AMD64
curl -LO https://github.com/blacksmith-community/blacksmith/releases/download/v1.0.13/blacksmith-linux-amd64
# Make executable and verify
chmod +x blacksmith-*
./blacksmith-* --versionπ Verification
Download the checksums file and verify your download:
curl -LO https://github.com/blacksmith-community/blacksmith/releases/download/v1.0.13/checksums.sha256
sha256sum -c checksums.sha256