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

メタから acl またはクラスターを取得する方法はありますか?

4

1 に答える 1

3

メタ マップのキーと値のペアを使用するには、 を使用する必要がありますindex。また、サービスのメタ マップは と呼ばれ.ServiceMetaます。

たとえばacl、Meta のキーの値を取得するには、次のようにします。

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