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

results matching ""

    No results matching ""