问题标签 [consul-template]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
309 浏览

nomad - 将可读的 JSON 作为字符串传递给 Nomad 模板

我们正在使用 nomad 模板为我们的 nomad 部署添加环境变量。

我注意到 nomad 要求我转义我的 JSON 字符串才能正确传递它。即:说我想传入{"a":3,"b":4}Key3 我不能按原样写它,相反,我必须写"{\"a\":3,\"b\":4}"少得多可读。

有没有办法让我可以将纯字符串传入并使其按原样解释?

0 投票
0 回答
400 浏览

templates - Consul-Termplate - 将变量插入“带秘密”证书调用的语法是什么

我正在尝试使用 vault-agent 的模板功能将服务器特定的证书和密钥从 vault 下载到我的每个领事服务器。

推荐的方法是将通用名称和 SAN 设置为 HOSTNAME.DATACENTER.DOMAIN。我正在使用模板变量来构建特定于模板中节点的 CN,但我无法获得正确的语法以在“with secret”调用中正确使用该变量

模板现在看起来像这样

当我在 with secret 调用中手动键入所需的 CN 时,它可以正常工作并写出证书,因此我的 Vault 访问正常工作。但是,当使用变量方法时,这会失败并显示“$CN 不是此角色允许的通用名称”。这似乎表明模板正在将“$CN”作为文字文本读取,而不是将其解析为设置值。

这对我来说似乎是一个语法错误,但在过去 2 天里尝试了多个选项,我希望有人能给我一个关于正确语法的指针(或者让我摆脱痛苦并告诉我我正在尝试不可能完成的任务)

在此先感谢您的帮助

0 投票
1 回答
789 浏览

kubernetes-helm - 如何在 Helm Chart 中生成 Consul 模板

我有一个 Spring Boot 应用程序的 Helm Chart,它获取 Hashicorp Vault 代理注入器注入的数据库凭据。

这是开发环境中生成的部署清单的一个片段。

为了能够在 中指定秘密的路径和生成的秘密文件的名称values.yaml,我构建了这个模板:

它按预期工作,但我认为它不是很优雅。

我也尝试过这种方法:

我觉得稍微好一点,但我仍然不满意。

所以我的问题是:有更好的方法吗?

0 投票
1 回答
431 浏览

kubernetes - Hashicorp 领事,代理/客户访问

我正在尝试通过 Kubernetes、helm chart、https: //www.consul.io/docs/k8s/helm 进行 Consul 设置

基于我的Kubernetes前知识:服务,通过Consul Agent使用Consul访问,在每台主机上运行并监听主机IP

现在,我通过 Helm chart 部署到 Kubernetes 集群。首先误解了这个设置中的术语,Consul Agent vs Client?我想是一样的

现在,设置:

Helm 图表配置(Terraform 片段),没有特定于客户端/代理及其服务:

Pod、客户端/代理是 DaemonSet,不在主机网络模式下

服务

问题 1服务在哪里,针对客户端(代理)pod,而不是服务器的 pod?我在掌舵图中错过了吗?

我的计划是,虽然我不打算使用主机(Kubernetes 节点)网络:

  1. 查找客户/代理服务或自己制作。因此,它将被 Consul 的用户使用。例如,我将为 Consul 模板的 Consul 模板 init pod 指定这个服务地址。在配置消费应用程序中
  1. 可选:将在代理服务中添加一个 topologyKeys,因此每个消费者不会跨越主机边界

问题2是正确的方法吗?或者对于 Consul Kubernetes 部署来说是不同的

0 投票
1 回答
460 浏览

nginx - 领事模板 - “如果服务存在”条件?

我刚刚继承了一个 Nginx 代理/应用服务器设置,它使用 Consul 和 Consul Template 进行服务发现和注册。Nginx 代理有一个配置文件,其中包含这样的条目来注册下游应用服务器:

consul-template在后台运行以捕获任何更新my-app-servers,适当地更新nginx.conf文件,然后重新加载 nginx 配置。这一切都很好,我们能够根据需要从组合中添加和删除应用程序服务器。也就是说,如果我们没有可用的应用服务器,我们最终会得到一个空upstream块,这会导致 nginx 重新加载失败。

领事模板中有没有办法拥有"if service my-app-servers exists, then...""if not, then..."逻辑?我希望能够让我的nginx.conf文件针对存在上游服务器的情况进行一种配置,以及在上游服务器不存在时显示错误页面的另一种应急设置。我仍然在加快 consul-template 的速度,还没有看到任何显示这种逻辑语法的示例。有什么帮助吗?

0 投票
1 回答
89 浏览

microservices - Consul 数据中心:前一个领导节点失败后没有自动选择领导节点

我是 Consul 的新手,我创建了一个带有 2 个服务器节点的数据中心。我按照本文档中提供的步骤进行操作, https://learn.hashicorp.com/tutorials/consul/deployment-guide? in=consul/datacenter-deploy

节点已成功创建,并且在我启动服务时它们都处于同步状态。直到这一步,一切都运行良好。

但是,如果领导节点发生故障(脱机),我将面临一个问题。在这种情况下,follower 节点不会自动承担leader 节点的角色,并且 Consul 整体变得无法访问服务。即使跟随节点仍在运行,它也会停止响应请求。

谁能帮我理解我的设置到底出了什么问题,我怎样才能让我的设置仍然在跟随节点自动成为领导节点并响应来自 API Gateway 的查询的情况下工作?

下面的文档给出了一些指导,并讨论了实现“法定人数”以自动选择领导者。我不确定它是否适用于我的这种情况?

https://learn.hashicorp.com/tutorials/consul/recovery-outage-primary?in=consul/datacenter-operations#outage-event-in-the-primary-datacenter

编辑:

领事.hcl

服务器.hcl:

第一个服务器:

第二服务器:

0 投票
1 回答
242 浏览

variables - 如何在 Consul-template 配置文件中使用变量?

如何在领事模板配置文件中使用变量?

我有要运行的领事模板,下面是我的领事模板配置:

我一整天都在尝试以动态方式放置保险库地址,或者将其作为变量传递,或者从 env 变量或通过 consul-template API 获取,但均未成功。

最后,我最终在我的服务文件中编写了这个巫术:

有什么方便的方法吗?我可以token以某种方式使用环境变量,还是被迫对其进行硬编码?

0 投票
1 回答
239 浏览

consul - 将 consul 中的 2 KV 文件夹与 http 端点相结合

我在 consul 上为我的测试 jenkins 管道创建了 4 kv 文件夹(我的意思是目录。每对包含 10 个键值对)。这样我就可以为我的应用程序创建 .env 文件。这些是 public_stable、private_stable、public_temp、private_temp。我想将 public_stable 和 public_temp 合并到一个新的 KV 文件夹中,并使用新名称,如 public_my_testing_env_name。私有值也是如此。我想合并,因为我的同事会更新运行环境的值。这样他们就可以使用 testing_env_name 在数千个 .env 文件中轻松找到他们的 .env 文件。

1-) 我可以在不读取所有值的情况下使用 consul http 端点来做到这一点吗?我不想以编程方式进行。

2-) 我用领事模板读取值。我可以用领事模板创建那个文件夹吗?

3-) 我知道这是不合法的:| . 你觉得这种方式好不好?

0 投票
1 回答
315 浏览

docker - 从领事模板重新加载 Haproxy

我的 AWS ECS Fargate 集群上运行了多个微服务。在一个任务(pod)中,会有多个容器(1 个用于核心业务服务的容器和另外 3 个 sidecar 容器)。以下是这些容器的列表:

  • 核心业务服务容器(在特定端口上运行核心业务服务)
  • consul-agent 容器(运行 consul-agent 并将其与 consul-master 连接)
  • consul-template 容器(从 consul 获取服务信息并更新 haproxy.cfg)
  • haproxy 容器(从 consul-template 获取 haproxy.cfg 并运行)

所有这些容器都已启动并运行良好。问题是重新加载haproxy。由于 consul-template 负责更新 haproxy.cfg 文件,我是否需要在 consul-template 本身上添加一些配置来更新 haproxy?

这是我目前用于 consul-template 的命令:

我可以尝试什么来实现这一目标?

0 投票
1 回答
275 浏览

environment-variables - 使用 consul-template 从 Consul KV 分配环境变量

我对领事很陌生。我只想使用 consul-template 从 consul kv 加载我的环境变量。我有一个带有键“iamdbusername”的领事 kv 条目。我想在 consul-template 的帮助下在环境变量 IAM_DB_USER 中分配它的值。我的应用程序使用环境变量 IAM_DB_USER 来获取数据库用户名。

这方面的任何线索都会对我很有帮助。

谢谢!!!