@@ -26,32 +26,107 @@ We have decided to implement the **Helm Values Manager** as a **Helm plugin writ
2626
2727## YAML Structure
2828
29+ The configuration follows this structure:
30+
2931``` yaml
32+ version : " 1.0" # Schema version
3033release : my-release
3134
3235deployments :
3336 dev :
3437 secrets_backend : aws_secrets_manager
38+ secrets_config :
39+ region : us-west-2
40+ secret_prefix : " /dev/myapp/"
41+ auth :
42+ type : env # Use AWS environment variables (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
43+ # Alternative: type: file, path: "~/.aws/credentials"
44+ # Alternative: type: direct
45+ # access_key_id: "AKIA..."
46+ # secret_access_key: "xyz..."
47+
48+ staging :
49+ secrets_backend : google_secret_manager
50+ secrets_config :
51+ project_id : " my-gcp-project"
52+ secret_prefix : " myapp-staging-"
53+ auth :
54+ type : file
55+ path : " /path/to/gcp-service-account.json"
56+ # Alternative: type: env, credential_env: "GOOGLE_APPLICATION_CREDENTIALS"
57+ # Alternative: type: direct
58+ # credentials_json: "{...}"
59+
3560 prod :
3661 secrets_backend : azure_key_vault
62+ secrets_config :
63+ vault_url : " https://my-prod-vault.vault.azure.net"
64+ auth :
65+ type : managed_identity # Use Azure Managed Identity
66+ # Alternative: type: service_principal
67+ # tenant_id: "${AZURE_TENANT_ID}"
68+ # client_id: "${AZURE_CLIENT_ID}"
69+ # client_secret: "${AZURE_CLIENT_SECRET}"
70+
71+ local :
72+ secrets_backend : git_secret
73+ secrets_config :
74+ gpg_key : " ${GPG_KEY}" # GPG key for decryption
75+ secret_files_path : " ./.gitsecret" # Path to git-secret files
76+ auth :
77+ type : file
78+ path : " ~/.gnupg/secring.gpg"
79+ # Alternative: type: env
80+ # passphrase_env: "GIT_SECRET_PASSPHRASE"
81+ # Alternative: type: direct
82+ # passphrase: "your-passphrase"
3783
3884config :
3985 - key : DATABASE_URL
4086 path : global.database.url
87+ description : " Database connection string for the application"
4188 required : true
4289 sensitive : true
4390 values :
4491 dev : " mydb://dev-connection"
92+ staging : " mydb://staging-connection"
4593 prod : " mydb://prod-connection"
94+ local : " mydb://localhost"
95+
4696 - key : LOG_LEVEL
4797 path : global.logging.level
98+ description : " Application logging verbosity level"
4899 required : false
49100 sensitive : false
50101 values :
51102 dev : " debug"
103+ staging : " info"
52104 prod : " warn"
105+ local : " debug"
53106` ` `
54107
108+ ### Secret Backend Configuration
109+
110+ The configuration supports multiple secret backend types with flexible authentication methods:
111+
112+ 1. **Authentication Methods**:
113+ - ` env`: Use environment variables
114+ - `file` : Use credential files
115+ - `direct` : Direct credential specification (not recommended for production)
116+ - `managed_identity` : For cloud-native authentication (Azure)
117+
118+ 2. **Supported Secret Backends** :
119+ - AWS Secrets Manager
120+ - Google Secret Manager
121+ - Azure Key Vault
122+ - git-secret (for local development)
123+
124+ 3. **Authentication Patterns** :
125+ - Environment variables for cloud credentials
126+ - Credential files for service accounts
127+ - Direct credentials (development only)
128+ - Managed identities for cloud services
129+
55130# # Consequences
56131- The project will be built as a Helm plugin with Python as the core language.
57132- Secret backends must be configured separately for security compliance.
0 commit comments