When `consul.StripPrefix(true)` is set, current impl. will pass the specified prefix (or default prefix) when calling consul api. However, `prefix` in consul api starts with no leading slash, so the default prefix (`/micro/config`) doesn't actually work. I avoid code changes (esp. the one in `util.go`) to eliminate impact on users who already notice it.
		
			
				
	
	
		
			50 lines
		
	
	
		
			1003 B
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1003 B
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Consul Source
 | |
| 
 | |
| The consul source reads config from consul key/values
 | |
| 
 | |
| ## Consul Format
 | |
| 
 | |
| The consul source expects keys under the default prefix `micro/config`
 | |
| 
 | |
| Values are expected to be json
 | |
| 
 | |
| ```
 | |
| // set database
 | |
| consul kv put micro/config/database '{"address": "10.0.0.1", "port": 3306}'
 | |
| // set cache
 | |
| consul kv put micro/config/cache '{"address": "10.0.0.2", "port": 6379}'
 | |
| ```
 | |
| 
 | |
| Keys are split on `/` so access becomes
 | |
| 
 | |
| ```
 | |
| conf.Get("micro", "config", "database")
 | |
| ```
 | |
| 
 | |
| ## New Source
 | |
| 
 | |
| Specify source with data
 | |
| 
 | |
| ```go
 | |
| consulSource := consul.NewSource(
 | |
| 	// optionally specify consul address; default to localhost:8500
 | |
| 	consul.WithAddress("10.0.0.10:8500"),
 | |
| 	// optionally specify prefix; defaults to micro/config
 | |
| 	consul.WithPrefix("my/prefix"),
 | |
|   // optionally strip the provided prefix from the keys, defaults to false
 | |
|   consul.StripPrefix(true),
 | |
| )
 | |
| ```
 | |
| 
 | |
| ## Load Source
 | |
| 
 | |
| Load the source into config
 | |
| 
 | |
| ```go
 | |
| // Create new config
 | |
| conf := config.NewConfig()
 | |
| 
 | |
| // Load file source
 | |
| conf.Load(consulSource)
 | |
| ```
 |