【问题标题】:consul-template using Address not ServiceAddress in template领事模板在模板中使用地址而不是服务地址
【发布时间】:2016-06-22 14:44:21
【问题描述】:

我在那个领事模板中遇到问题,似乎在我的模板中替换了服务“ServiceAddress”而不是“Address”,我想知道是否有人可以告诉我原因。

从我的 nginx 容器中 consul-template 也正在运行的 bash 会话中,我可以从 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

【问题讨论】:

  • 是的,这太令人困惑了,以至于我们在使用{{ range service "myservice" }} 进行迭代时没有公开服务目录。感谢您指出这一点并暗示 Registrator 的 -ip 标志。

标签: bash nginx docker consul consul-template


【解决方案1】:

我已经弄清楚了,.Address 是 Consul 响应元数据的一部分,而不是服务元数据的一部分。这让我很困惑,因为我的领事客户端在同一台主机上运行。

我将 -ip 参数更改为我正在运行的 Registrator 服务,使其成为运行 docker 的主机的内部 IP 地址(而不是默认的 Docker 容器的 IP),一切正常。

【讨论】:

    猜你喜欢
    • 2011-02-21
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-21
    相关资源
    最近更新 更多