当前位置:网站首页>confd

confd

2020-11-06 22:33:00 waynehu

confd

{{/* 
 Use lsdir Method , Read ( It can be said that )/services/web A subdirectory under a directory , That is to return to cust1 and cust2 these two items. .
 And start a big cycle , The first 1 Secondary cycle ,$dir be equal to cust1 , The first 2 Secondary cycle ,$dir be equal to cust2
*/}}
{{range $dir := lsdir "/services/web"}}
upstream {{base $dir}} {
	{{/* 
	 Use printf Method , Compose a string ,%s Some of them use $dir To replace .
	 The new string after composition is assigned to $custdir, The first time should be "/services/web/cust1/*"
	 Use gets lookup key by "/services/web/cust1/*" Value , Because it's used *, Multiple values will be found , So we use gets instead of get
	 Each value goes into a small loop , And use json To analyze ( Note here etcdctl put In the value, Must conform to json Format , Otherwise, parsing will fail here )
	 Copy the parsed content to $data, Then it can be used 
	*/}}
	{{$custdir := printf "/services/web/%s/*" $dir}}{{range gets $custdir}}
	server {{$data := json .Value}}{{$data.IP}}:{{$data.PORT}};
	{{end}}
}

server {
	server_name {{base $dir}}.example.com;
	location / {
		proxy_pass {{base $dir}};
	}
}
{{end}}


./etcdctl put /services/web/cust1/1 '{"IP": "10.0.0.1","PORT":"81"}'
./etcdctl put /services/web/cust1/2 '{"IP": "10.0.0.2","PORT":"82"}'
./etcdctl put /services/web/cust1/3 '{"IP": "10.0.0.3","PORT":"83"}'
./etcdctl put /services/web/cust2/1 '{"IP": "10.0.0.4","PORT":"84"}'
./etcdctl put /services/web/cust2/2 '{"IP": "10.0.0.5","PORT":"85"}'
./etcdctl put /services/web/cust2/3 '{"IP": "10.0.0.6","PORT":"86"}'

https://github.com/kelseyhightower/confd/blob/master/docs/templates.md

版权声明
本文为[waynehu]所创,转载请带上原文链接,感谢