consul-template utilisant Address not ServiceAddress dans le template

J’ai un problème dans ce modèle de consul qui semble remplacer le service “ServiceAddress” et non “Address” dans mon modèle et je me demande si quelqu’un peut me dire pourquoi.

À partir d’une session bash dans mon conteneur nginx où consul-template est également en cours d’exécution, je peux récupérer la définition de service auprès de Consul avec:

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}] 

Mon fichier de modèle de consul-template ressemble à ceci:

 {{range service "service1"}}server {{.Address}}:{{.Port}}; 

Je m’attendrais à ce que cela génère l’ Address , et non le ServiceAddress pour le service. Cependant, le ci-dessous se produit:

 consul-template -consul consul-server.service.consul:8500 -template "/var/templates/service1.conf.tmpl" -dry -once server 172.17.0.3:32809 

Je l’ai compris, .Address fait partie des métadonnées de la réponse Consul et ne fait pas vraiment partie des métadonnées du service. Cela m’a déconcerté parce que mon client consul s’exécute sur le même hôte.

J’ai changé l’argument -ip du service Registrator que -ip pour qu’il devienne l’adresse IP interne de l’hôte exécutant le -ip (plutôt que l’adresse IP par défaut du conteneur Docker) et tout fonctionnait.