5

我有一个在 Consul 注册的测试服务,其服务定义如下:

{
  "name": "web",
  "tags": ["web1"],
  "address": "example.com",
  "meta": {
    "meta": "cluster",
    "acl": "host_test",
    "cluster": "test_cluster"
  },
  "port": 8000
}

我想使用 consul-template 将该信息加载到 HAProxy 配置中。我可以按照文档中的说明获取地址和端口:

{{ range service "web" }}{{if in .Tags "web1"}}
    server {{.Node}} {{ .Address }}:{{.Port}} cookie A check
    {{ end }}{{end}}

但我似乎无法获得元信息。我想我可以在服务范围内使用类似的东西来访问它:

 {{range .Meta}}
  {{.}}{{end}}

知道如何从 meta 中获取 acl 或 cluster 吗?

4

1 回答 1

3

为了使用元映射中的键:值对,您需要使用index. 此外,服务上的元映射称为.ServiceMeta.

因此,例如要获取aclMeta 中键的值,您将使用:

{{index .ServiceMeta "acl"}}
于 2019-03-27T20:22:09.477 回答