Skip to content

sugar-org/swarm-external-secrets

Repository files navigation

Swarm External Secrets

A Docker Swarm secrets plugin that integrates with multiple secret management providers including HashiCorp Vault, AWS Secrets Manager, Azure Key Vault, and OpenBao.

Architecture

Architecture

Features

  • Multi-Provider Support: HashiCorp Vault, AWS Secrets Manager, Azure Key Vault, OpenBao
  • Multiple Auth Methods: Support for various authentication methods per provider
  • Automatic Secret Rotation: Monitor providers for changes and automatically update Docker secrets and services
  • Real-time Monitoring: Web dashboard with system metrics, health status, and performance tracking
  • Flexible Path Mapping: Customize secret paths and field extraction per provider
  • Production Ready: Includes proper error handling, logging, cleanup, and monitoring
  • Backward Compatible: Existing Vault configurations continue to work unchanged

New: Multi-Provider Support

The plugin now supports multiple secret providers. Configure with SECRETS_PROVIDER environment variable:

# HashiCorp Vault (default)
docker plugin set vault-secrets-plugin:latest SECRETS_PROVIDER="vault"

# AWS Secrets Manager  
docker plugin set vault-secrets-plugin:latest SECRETS_PROVIDER="aws"

# Azure Key Vault
docker plugin set vault-secrets-plugin:latest SECRETS_PROVIDER="azure"

# OpenBao
docker plugin set vault-secrets-plugin:latest SECRETS_PROVIDER="openbao"

New: Real-time Monitoring

Access the monitoring dashboard at http://localhost:8080 (configurable port):

  • System Metrics: Memory usage, goroutine count, GC statistics
  • Secret Rotation: Success/failure rates, error tracking
  • Health Status: Overall system health and provider connectivity
  • Performance Tracking: Response times, ticker health, uptime

Monitor Configuration

docker plugin set vault-secrets-plugin:latest \
    ENABLE_MONITORING="true" \
    MONITORING_PORT="8080"

Installation

  1. Build and enable the plugin:

    ./build.sh
  2. Configure the plugin:

    docker plugin set vault-secrets-plugin:latest \
        VAULT_ADDR="https://your-vault-server:8200" \
        VAULT_AUTH_METHOD="token" \
        VAULT_TOKEN="your-vault-token" \
        VAULT_ENABLE_ROTATION="true"
  3. Use in docker-compose.yml:

    HashiCorp Vault:

    secrets:
      mysql_password:
        driver: vault-secrets-plugin:latest
        labels:
          vault_path: "database/mysql"
          vault_field: "password"

    AWS Secrets Manager:

    secrets:
      api_key:
        driver: vault-secrets-plugin:latest
        labels:
          aws_secret_name: "prod/api/key"
          aws_field: "api_key"

    Azure Key Vault:

    secrets:
      database_connection:
        driver: vault-secrets-plugin:latest
        labels:
          azure_secret_name: "database-connection-string"

    OpenBao:

    secrets:
      app_secret:
        driver: vault-secrets-plugin:latest
        labels:
          openbao_path: "app/config"
          openbao_field: "secret_key"

Documentation

Supported Providers

Provider Status Authentication Rotation
HashiCorp Vault ✅ Stable Token, AppRole
AWS Secrets Manager ✅ Stable IAM, Access Keys
Azure Key Vault ✅ Stable Service Principal, Access Token
OpenBao ✅ Stable Token, AppRole
GCP Secret Manager 🚧 Placeholder - -

Quick Start Examples

HashiCorp Vault

docker plugin set vault-secrets-plugin:latest \
    SECRETS_PROVIDER="vault" \
    VAULT_ADDR="https://vault.example.com:8200" \
    VAULT_TOKEN="hvs.example-token"

AWS Secrets Manager

docker plugin set vault-secrets-plugin:latest \
    SECRETS_PROVIDER="aws" \
    AWS_REGION="us-west-2" \
    AWS_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE"

Azure Key Vault

docker plugin set vault-secrets-plugin:latest \
    SECRETS_PROVIDER="azure" \
    AZURE_VAULT_URL="https://myvault.vault.azure.net/" \
    AZURE_TENANT_ID="12345678-1234-1234-1234-123456789012"

License

About

A Docker plugin to manage external secrets providers such as vault to docker swarm

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors 3

  •  
  •  
  •  

Languages