Skip to content

Blacksmith v1.0.13

Choose a tag to compare

@github-actions github-actions released this 03 Sep 17:25
· 56 commits to dev since this release

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, and unseal_cooldown

Enhanced Reconciler Functionality

  • Improved instance management: Preserve existing instance_name from 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-lint checks
  • Security compliance: Codebase passes make check and 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_name issues
    • Resolved invisible index updates
    • Prevented repeated 404 polling for deleted instances
  • 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

  1. Update configuration files to use lowercase keys
  2. Review and adjust vault.auto_unseal settings if needed
  3. Configure health check intervals based on your environment needs
  4. 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 Silicon

macOS/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