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)
 | 
						|
```
 |