我遇到以下问题,我不确定我是否做错了什么或者它没有按预期工作。
consul {
address = "127.0.0.1:8500"
token = "management token"
}
我正在使用 NOMAD 来调度 Docker 容器。这些 docker 容器需要填充来自 CONSUL KV 存储的配置文件,我使其与 consul 模板一起使用(当未启用 ACL 时)。
现在我的问题是,当我在 CONSUL 中启用 ACL 时 - 由于 ACL,docker 容器无法从 CONSUL KV 存储中获取值,并出现 403 错误(权限拒绝)。我想既然我已经在 NOMAD 中配置了 consul 节,就像:
consul {
address = "127.0.0.1:8500"
token = "management token"
}
使用 NOMAD 安排的所有作业都将能够使用该管理令牌,并且 Docker 容器将能够与 CONSUL KV 进行通信?!
如果我将管理令牌作为 Docker 环境变量放在 NOMAD 作业描述中 - 那么它会起作用:
env {
"CONSUL_HTTP_TOKEN" = "management token"
}
但是我不想将该管理令牌放在职位描述中,因为它们将在 git 中检查。
我做错了什么还是这根本不起作用?
提前谢谢您。
为什么在Nomad服务配置文件中设置consul token会自动为作业导出token?这将是一个安全漏洞,任何工作都可以擦除所有领事配置。
有适当的解决方案来管理任何类型的秘密。最先进的是与 HashicorpVault 集成https://developer.hashicorp.com/nomad/docs/integrations/vault#dynamic-configuration-with-secrets然后您可以使用模板插入存储在Vault中的秘密的环境变量.
一个简单的解决方案是将令牌存储在 Nomad 变量中,然后使用模板从中设置环境变量。通过使用 Nomad 变量的正确路径,您可以限制作业对其的访问。请参阅 https://developer.hashicorp.com/nomad/docs/concepts/variables .