Skip to content

Releases: abtreece/confd

v0.33.1

31 Jan 01:46

Choose a tag to compare

Changelog

  • f953854 fix: inject version from git tag at build time

v0.40.0-rc.2

26 Jan 04:26

Choose a tag to compare

v0.40.0-rc.2 Pre-release
Pre-release

Release candidate for v0.40.0 with Linux packaging and critical bug fixes.

New Features:

  • feat(packaging): Add RPM and DEB package support via nFPM (#520)
    • Systemd service with security hardening
    • Environment file configuration (/etc/default/confd or /etc/sysconfig/confd)
    • Packages for amd64, arm64, and armv7 architectures
  • feat(cli): Add comprehensive environment variable support (#516)

Bug Fixes:

  • fix: Address high severity bugs - goroutine leaks, FD leaks, data races (#493, #494, #496, #497)
  • fix: File backend wildcard keys filtered out (#498)
  • fix: Preflight now uses per-resource backend for key checks (#495)
  • fix(redis): Support multiple prefixes in WatchPrefix (#510)
  • fix(imds): Close response body in HealthCheck and New (#511)
  • fix(imds): Avoid trailing slash in user-data cache key (#500)
  • fix(backends): Respect context cancellation in WatchPrefix stubs (#512)
  • fix(template): Use atomic.Bool for reloadRequested to prevent data race (#504)
  • fix(template): Reduce backend fetch log verbosity (#506)
  • fix(config): Return error for invalid duration values in confd.toml (#505)
  • fix(zookeeper): Propagate errors from recursive nodeWalk calls (#499)

Testing:

  • test(template): Add integration tests for watch reconnection after backend failures (#519)
  • Complete E2E test migration to Go testcontainers framework (#464-476)

Documentation:

  • docs: Add Linux package installation instructions
  • docs: Update service deployment guide with package-based setup

Install via packages:

# Debian/Ubuntu
curl -LO https://github.com/abtreece/confd/releases/download/v0.40.0-rc.2/confd_0.40.0-rc.2_linux_amd64.deb
sudo dpkg -i confd_0.40.0-rc.2_linux_amd64.deb

# RHEL/Fedora
curl -LO https://github.com/abtreece/confd/releases/download/v0.40.0-rc.2/confd-0.40.0.rc.2-1.x86_64.rpm
sudo rpm -i confd-0.40.0.rc.2-1.x86_64.rpm

v0.40.0-rc.1

22 Jan 19:40

Choose a tag to compare

v0.40.0-rc.1 Pre-release
Pre-release

v0.40.0 RC 1

This release represents a significant evolution of confd with major architectural improvements, new features, and performance optimizations. The version jump from v0.33.0 to v0.40.0 reflects the scope of these changes.

BREAKING CHANGES:

  • CLI migrated to Kong with backend subcommands: The CLI now uses confd <backend> [flags] syntax instead of confd --backend=<backend>. For example, confd --backend=etcd --node=http://localhost:2379 becomes confd etcd --node=http://localhost:2379. (#357)

  • Logging migrated from logrus to slog: confd now uses Go's standard library log/slog for structured logging. Log output format has changed. Use --log-format=json for machine-parseable logs. (#420)

  • Redis client migrated from redigo to go-redis/v9: Internal implementation change that may affect connection behavior. (#376)

New Features:

  • feat: Add AWS EC2 IMDS backend for Instance Metadata Service v2 (#431)
  • feat: Add Prometheus metrics and observability instrumentation (--metrics-addr) (#416)
  • feat: Add health check endpoints (/health, /ready, /ready/detailed) (#429)
  • feat: Standardize HealthCheck implementations across all backends (#427)
  • feat: Add error aggregation and failure modes (--failure-mode=best-effort|fail-fast) (#426)
  • feat: Extract hardcoded timeouts and retry delays to configuration flags (#425)
  • feat: Add templates_loaded and watched_keys gauge metrics (#424)
  • feat: Add structured logging with timing metrics to critical paths (#420)
  • feat: Add template compilation caching for improved performance (#368)
  • feat: Add per-resource backend configuration support (#359)
  • feat: Add configuration validation, template enhancements, and watch mode improvements (#360)
  • feat(redis): Implement exponential backoff for connection retries (#405)

Performance Improvements:

  • perf: Use conditional defer in process() to avoid overhead when metrics disabled (#462)
  • perf: Pool map allocations in memkv List/ListDir operations (#461)
  • perf: Optimize IsConfigChanged to reduce syscalls (#460)
  • perf: Avoid FuncMap copy on every include call (#459)
  • perf: Add TTL-based caching for template file stat checks (#458)
  • perf: Cache prefixed keys on TemplateResource initialization (#457)
  • perf: Pre-compile command templates in CommandExecutor (#456)
  • perf: Pre-allocate template slice in getTemplateResources (#454)

Bug Fixes:

  • fix: Exclude timeout fields from client cache hash (#455)
  • fix(vault): Improve flatten() function type safety (#433)
  • fix(redis): Add automatic reconnection for PubSub watch mode (#408)
  • fix: Improve code quality and fix potential issues (#380)

Refactoring:

  • refactor: Refactor TemplateResource to follow Single Responsibility Principle (#409)
  • refactor: Propagate context.Context through backend calls (#379)
  • refactor: Internalize memkv package from abandoned upstream (#369)
  • refactor: Standardize error wrapping across codebase (#423)
  • refactor(vault): Replace panic-based error handling with explicit error returns (#378)
  • refactor(vault): Consolidate duplicate recursive listing functions (#404)

Testing:

  • Comprehensive integration test suite reorganized into categorical structure (#432)
  • Test coverage improved significantly across all backends
  • Added integration tests for health, metrics, failure modes, includes, and signals (#430)

Infrastructure:

  • Update Go version to 1.25 (#415)
  • Numerous dependency updates for security and compatibility
  • feat: Add official Docker images published to Docker Hub and GHCR
    • feat: Multi-architecture support (linux/amd64, linux/arm64)
    • feat: Add workflow_dispatch for manual release triggers

v0.33.0

07 Jan 19:24
60d9321

Choose a tag to compare

What's New

New Features

  • AWS Secrets Manager Backend (#356) - New backend for retrieving secrets from AWS Secrets Manager

    • Supports JSON secrets with automatic flattening to key/value pairs
    • Binary secret support (base64 encoded)
    • Version stage selection (--secretsmanager-version-stage)
    • --secretsmanager-no-flatten flag to disable JSON flattening
    • Local endpoint support for testing with LocalStack
  • AWS ACM Backend (#328) - New backend for retrieving certificates from AWS Certificate Manager

    • Certificate and chain retrieval
    • Private key export support (#329) with --acm-export-private-key flag
  • AWS SDK v2 Migration (#355) - Migrated all AWS backends (SSM, DynamoDB, ACM, Secrets Manager) from AWS SDK v1 to v2

    • Improved performance and reliability
    • Better credential handling
    • Consistent endpoint override support for local testing

Improvements

  • Benchmark Suite (#353) - Added comprehensive benchmarks for template and backend performance
  • Code Quality (#352) - Code cleanup and godoc improvements
  • Go 1.24.7 - Standardized Go version across all configuration files

Documentation

  • Updated quick-start guide with Secrets Manager examples
  • Added command-line flag documentation for new backends
  • Updated README with new backend support

Breaking Changes

None

Upgrade Notes

To use the new Secrets Manager backend:

confd -onetime -backend secretsmanager

For JSON secrets, keys are automatically flattened. A secret named database with value {"host":"127.0.0.1","port":"3306"} can be accessed as /database/host and /database/port in templates.

v0.32.0

07 Jan 01:38

Choose a tag to compare

BREAKING CHANGE: The global prefix setting in confd.toml is now concatenated with resource-level prefix values in template resource files (conf.d/*.toml) instead of overriding them. For example, if confd.toml has prefix = "production" and a resource has prefix = "myapp", the effective prefix is now /production/myapp instead of /production. To restore the previous behavior, remove the prefix setting from your template resource files. (#324)

What's Changed

  • feat: Add JSON log format support via --log-format flag (#327)
  • feat: Add template variable support ({{.src}}, {{.dest}}) in reload_cmd (#326)
  • docs: Update CHANGELOG with releases v0.19.2 through v0.31.1 (#325)
  • chore: Fix goreleaser v2 deprecation warnings

Full Changelog: v0.31.1...v0.32.0

v0.31.1

06 Jan 23:35

Choose a tag to compare

Changelog

  • 041fa8b chore: Update goreleaser config to version 2
  • be34247 fix: Update go.mod to mark etcd/api/v3 as direct dependency

v0.31.0

06 Jan 23:22
f75cfa0

Choose a tag to compare

Changes

Minor Changes

Refactor Vault backend to properly handle KV v1 and KV v2

23 Sep 19:46

Choose a tag to compare

Overview

This commit is NOT backwards compatible with Vault KV v2 configurations that include /data/ in the key path.

I have broadly refactored the Vault backend to improve K/V lookup for both KV v1 and KV v2. The change enables the proper use of the prefix configuration for the KV path and accommodates the differences between the KV v1 and KV v2 endpoints, specifically the use of data in the secret path. This returns the Vault backend back to pathing parity with the other backends.

Previous
in this configuration kv-v2 is the Secrets Engine path and data was necessary for the v2 endpoint.

[template]
mode = "0644"
src = "nested.conf.tmpl"
dest = "/tmp/confd-nested-test.conf"
keys = [
  "kv-v2/data/nested",
]

Current
In this configuration the kv-v2 Secrets Engine path is prefixed and data is handled by the backend when necessary.

[template]
mode = "0644"
src = "nested.conf.tmpl"
dest = "/tmp/confd-nested-test.conf"
prefix = "/kv-v2"
keys = [
  "/nested",
]

Changes

Major Changes

Minor Changes

Update Go to 1.20 and bump deps

16 Dec 19:11

Choose a tag to compare

Changes

Minor Changes

Update deps and fix security issues

08 Feb 22:02

Choose a tag to compare

Changes

  • fix: Allow env var precedence for SSM region (#133) @abtreece
  • fix: Updates golang.org/x/text to 0.3.8 (#137)

Minor Changes