如何在Hashicorp Nomad部署中动态更新环境变量

问题描述 投票:0回答:1

我在 dotnet 6 中开发了一系列微服务,我将把它们迁移到 Hashicorp Nomad。
我必须从我的 A 微服务调用我的 B 服务。
每个微服务都在 Consul 中注册,以便使用服务发现功能。
A 有这个 appsettings.json 配置以便调用其他服务:
{
  "ExternalServices": [
    {
      "Name": "ExternalSimple-Test",
      "Url": "",
      "ClientId": "myAzureClientId",
      "Scopes": [
        "myAzureScope"
      ]
    },
    ...
]}

我在 dotnet 类中使用 IOptionSnapshot 检索这些配置,以便重新评估和更新。
必须从 Nomad HCL 部署文件配置 URL 才能使用实时 Consul 地址和端口。
有人有一些想法并为我提供一个示例如何从 HCL 文件动态查询 Consul 设置这些 URL 吗?
谢谢你,
戴夫.
consul nomad
1个回答
0
投票

您可以利用Consul的DNS接口。这种方法允许您的微服务在运行时通过 DNS 查询解析服务地址和端口。在 nomad 作业规范中放置 env:

  env {
    SERVICE_B_URL = "http://service-b.service.consul:PORT"
  }

参考资料:https://developer.hashicorp.com/consul/docs/services/discovery/dns-overview

© www.soinside.com 2019 - 2024. All rights reserved.