52 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Etcd Source
 | |
| 
 | |
| The etcd source reads config from etcd key/values
 | |
| 
 | |
| This source supports etcd version 3 and beyond.
 | |
| 
 | |
| ## Etcd Format
 | |
| 
 | |
| The etcd source expects keys under the default prefix `/micro/config` (prefix can be changed)
 | |
| 
 | |
| Values are expected to be JSON
 | |
| 
 | |
| ```
 | |
| // set database
 | |
| etcdctl put /micro/config/database '{"address": "10.0.0.1", "port": 3306}'
 | |
| // set cache
 | |
| etcdctl 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
 | |
| etcdSource := etcd.NewSource(
 | |
| 	// optionally specify etcd address; default to localhost:8500
 | |
| 	etcd.WithAddress("10.0.0.10:8500"),
 | |
| 	// optionally specify prefix; defaults to /micro/config
 | |
| 	etcd.WithPrefix("/my/prefix"),
 | |
| 	// optionally strip the provided prefix from the keys, defaults to false
 | |
| 	etcd.StripPrefix(true),
 | |
| )
 | |
| ```
 | |
| 
 | |
| ## Load Source
 | |
| 
 | |
| Load the source into config
 | |
| 
 | |
| ```go
 | |
| // Create new config
 | |
| conf := config.NewConfig()
 | |
| 
 | |
| // Load file source
 | |
| conf.Load(etcdSource)
 | |
| ```
 |