领事模板在模板中使用地址而不是服务地址
consul-template using Address not ServiceAddress in template
我有一个问题,领事模板似乎在我的模板中替换了服务 "ServiceAddress" 而不是 "Address",我想知道是否有人可以告诉我为什么。
从我的 nginx 容器中的 bash 会话中,consul-template 也是 运行 我可以通过以下方式从 Consul 获取服务定义:
curl http://consul-server.service.consul:8500/v1/catalog/service/service1
[{"Node":"ip-172-31-24-202","Address":"172.31.24.202","ServiceID":"ip-172-31-24-202:service1:23141","ServiceName":"service1","ServiceTags":null,"ServiceAddress":"172.17.0.3","ServicePort":32809}]
我的 consul-template 模板文件如下所示:
{{range service "service1"}}server {{.Address}}:{{.Port}};
我希望这会输出 Address
,而不是服务的 ServiceAddress
。但是,会发生以下情况:
consul-template -consul consul-server.service.consul:8500 -template "/var/templates/service1.conf.tmpl" -dry -once
server 172.17.0.3:32809
我已经弄明白了,.Address
是 Consul 响应元数据的一部分,而不是服务元数据的一部分。这让我感到困惑,因为我的领事客户 运行 在同一台主机上。
我将 -ip
参数更改为注册器服务 运行 是主机的内部 IP 地址 运行 docker(而不是默认值Docker 容器的 IP)并且一切正常。
我有一个问题,领事模板似乎在我的模板中替换了服务 "ServiceAddress" 而不是 "Address",我想知道是否有人可以告诉我为什么。
从我的 nginx 容器中的 bash 会话中,consul-template 也是 运行 我可以通过以下方式从 Consul 获取服务定义:
curl http://consul-server.service.consul:8500/v1/catalog/service/service1
[{"Node":"ip-172-31-24-202","Address":"172.31.24.202","ServiceID":"ip-172-31-24-202:service1:23141","ServiceName":"service1","ServiceTags":null,"ServiceAddress":"172.17.0.3","ServicePort":32809}]
我的 consul-template 模板文件如下所示:
{{range service "service1"}}server {{.Address}}:{{.Port}};
我希望这会输出 Address
,而不是服务的 ServiceAddress
。但是,会发生以下情况:
consul-template -consul consul-server.service.consul:8500 -template "/var/templates/service1.conf.tmpl" -dry -once
server 172.17.0.3:32809
我已经弄明白了,.Address
是 Consul 响应元数据的一部分,而不是服务元数据的一部分。这让我感到困惑,因为我的领事客户 运行 在同一台主机上。
我将 -ip
参数更改为注册器服务 运行 是主机的内部 IP 地址 运行 docker(而不是默认值Docker 容器的 IP)并且一切正常。