Consul 服务注册
Consul 服务注册将 Vault 注册为 Consul 中的一个服务,并配置默认服务检查。
- HashiCorp 官方支持 —— Consul 服务注册由 HashiCorp 提供官方支持
service_registration "consul" {
address = "127.0.0.1:8500"
}
正确配置后,应该可以在以下位置使用和访问解封的 Vault 服务:
active.vault.service.consul
可以通过以下地址访问到解封后处于待机状态的 Vault 实例:
standby.vault.service.consul
可以通过以下地址访问所有解封后的 Vault 实例:
vault.service.consul
封印的 Vault 实例会将他们自己标记为不健康,以避免 Consul 服务发现层将它们返回。
consul
参数
address
(string: "127.0.0.1:8500")
– 设置用来通信的 Consul agent 地址。它可以是一个 IP 地址、DNS 记录,或是 unix socket。推荐使用本地 Consul agent 而不是直接与 Consul 服务通信。check_timeout
(string: "5s")
– 设置发回健康检查数据的间隔。该参数的后缀类似于"30s"
或是"1h"
。disable_registration
(string: "false")
– 设置是否禁止 Vault 该将其注册到 Consul 中。scheme
(string: "http")
– 设置与 Consul 通信使用的协议。可以设置为http
或是https
。与非本机 Consul 通信时强烈建议使用https
。当使用 unix socket 时,该参数将被忽略。service
(string: "vault")
– 设置注册到 Consul 中的服务名称。service_tags
(string: "")
– 设置以逗号分隔的附加在注册到 Consul 服务上的一组标签。service_address
(string: nil)
– 设置一个特定的在 Consul 中注册的服务地址。如果没有设置该参数,Vault 将使用它所知道的 HA 重定向地址——这通常是推荐使用的地址。将此参数设置为""
将告诉 Consul 利用动态注册服务的节点的配置。如果打算利用 Consul 的translate_wan_addrs
参数时该参数可能会有所帮助。token
(string: "")
– 设置注册 Consul 服务时使用的 Consul ACL 令牌。该令牌并不是 Vault 令牌。
通过加密连接与 Consul 通信时可以使用下面的设置。可以在 Consul 加密页面上阅读有关加密 Consul 连接的更多信息。
tls_ca_file
(string: "")
– 设置用以与 Consul 通信使用的 CA 证书。默认使用系统捆绑包。该参数应根据 Consul 的ca_file
配置来设定。tls_cert_file
(string: "")
(optional) – 设置用以与 Consul 通信使用的证书。该参数应根据 Consul 的cert_file
配置来设定。tls_key_file
(string: "")
– 设置用以与 Consul 通信所使用的私钥文件的路径。该参数应根据 Consul 的key_file
配置来设定。tls_min_version
(string: "tls12")
– 设置所使用的 TLS 最低版本。可以设置的值有:"tls10"
、"tls11"
、"tls12"
以及"tls13"
。tls_skip_verify
(string: "false")
– 关闭对 TLS 证书的验证。强烈不推荐使用该选项。
ACLs
如果启用了 Consul 的 ACL,我们必须为 Vault 服务注册配置合适的权限。如果服务名称为 vault
,下列权限将会适用于大多数场景:
{
"service": {
"vault": {
"policy": "write"
}
}
}
consul
例子
本地 Agent
该例子演示了通过运行在 127.0.0.1:8500
上的本地 Consul Agent 与 Consul 通信的简单配置:
service_registration "consul" {}
自定义细节
该例子演示了使用自定义地址以及 ACL 令牌与 Consul 通信:
service_registration "consul" {
address = "10.5.7.92:8194"
token = "abcd1234"
}
通过 Unix Socket 与 Consul 通信
该例子演示了如何通过本地 unix socket 与 Consul 通信:
service_registration "consul" {
address = "unix:///tmp/.consul.http.sock"
}
自定义 TLS
该例子演示了如何使用自定义 CA、证书以及私钥文件基于 TLS 安全地与 Consul 通信:
service_registration "consul" {
scheme = "https"
tls_ca_file = "/etc/pem/vault.ca"
tls_cert_file = "/etc/pem/vault.cert"
tls_key_file = "/etc/pem/vault.key"
}