The documentation you are viewing is for Dapr v1.7 which is an older version of Dapr. For up-to-date documentation, see the latest version.

HashiCorp Consul

详细介绍了关于 HashiCorp Consul 服务发现组件的信息

配置格式

Hashicorp Consul 是在 Dapr Configuration 中设置的。

在配置中,添加一个 nameResolution spec ,并将 component 字段设置为 "consul

如果您正在使用 Dapr sidecar 注册您的服务到 Consul ,那么您将需要以下配置:

apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
  name: appconfig
spec:
  nameResolution:
    component: "consul"
    configuration:
      selfRegister: true

如果 Consul 服务注册由 Dapr 外部管理,则需要确保将 Dapr-to-Dapr 内部 gRPC 端口添加到 DAPR_PORT 下的服务元数据中(此项是可配置的),并且 Consul 服务 ID 与 Dapr 应用 ID 匹配。 然后,您可以从上面的配置中省略 selfRegister

行为

在启动时,Consul组件将验证与配置的(或默认的)代理的连接,或者如果配置了服务,则注册该服务。 名称解析接口不能满足 “shutdown “的模式,所以如果使用 Dapr 向 Consul 注册服务,请考虑它不会取消注册服务。

该组件通过过滤健康的服务来解决目标应用程序,并在元数据中寻找DAPR_PORT,以检索Dapr sidecar端口(该项是可配置的)。 Consul service.metaservice.port之上使用,以便不干扰现有的Consul数据。

Spec 配置字段

截至发稿时,配置规格已固定为Consul api的v1.3.0版本

字段 必填 数据类型 详情 示例
Client N *api.Config 配置客户端与 Consul 代理的连接。 如果留空,它将使用 sdk 默认值,在这种情况下这只是 127.0.0.1:8500 10.0.4.4:8500
QueryOptions N *api.QueryOptions 配置用于解决健康服务的查询,如果为空白,它将默认为 UseCache:true UseCache: false, Datacenter: "myDC"
Checks N []*api.AgentServiceCheck 当进行注册服务时,配置健康检查。 如果为空白,它将默认到 Dapr sidecar 健康端点 查看 示例配置
Tags N []string 在注册服务服务时包含的额外标签 - "dapr"
Meta N map[string]string 在注册服务服务时包含的额外 metadata DAPR_METRICS_PORT: "${DAPR_METRICS_PORT}"
DaprPortMetaKey N string 用于在服务解析过程中从Consul服务元数据中获取Dapr sidecar 端口的 key,它也将用于在注册时在元数据中设置Dapr sidecar 端口。 如果留空,它将默认为 DAPR_PORT "DAPR_TO_DAPR_PORT"
SelfRegister N bool 控制 Dapr 是否会向 Consul 注册服务。 名称解析接口不能满足 “shutdown “的模式,所以如果使用 Dapr 向 Consul 注册服务,请考虑它不会取消注册服务。 如果留空,它将默认为 false true
AdvancedRegistration N *api.AgentServiceRegistration 通过配置完全控制服务注册结果。 如果配置此项,组件将忽略Checks、 Tags、 Meta 和 SelfRegister的任何配置。 查看 示例配置

示例配置

基础

所需的最小配置如下:

apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
  name: appconfig
spec:
  nameResolution:
    component: "consul"

注册时进行小部分定制

启用 SelfRegister 然后可以自定义 checks, tags 和 meta

apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
  name: appconfig
spec:
  nameResolution:
    component: "consul"
    configuration:
      client:
        address: "127.0.0.1:8500"
      selfRegister: true
      checks:
        - name: "Dapr Health Status"
          checkID: "daprHealth:${APP_ID}"
          interval: "15s",
          http: "http://${HOST_ADDRESS}:${DAPR_HTTP_PORT}/v1.0/healthz"
        - name: "Service Health Status"
          checkID: "serviceHealth:${APP_ID}"
          interval: "15s",
          http: "http://${HOST_ADDRESS}:${APP_PORT}/health"
      tags:
        - "dapr"
        - "v1"
        - "${OTHER_ENV_VARIABLE}"
      meta:
        DAPR_METRICS_PORT: "${DAPR_METRICS_PORT}"
        DAPR_PROFILE_PORT: "${DAPR_PROFILE_PORT}"
      daprPortMetaKey: "DAPR_PORT"        
      queryOptions:
        useCache: true
        filter: "Checks.ServiceTags contains dapr"

高级注册

配置高级注册后,您可以完全控制注册时可能的所有属性。

apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
  name: appconfig
spec:
  nameResolution:
    component: "consul"
    configuration:
      client:
          address: "127.0.0.1:8500"
      selfRegister: false
      queryOptions:
        useCache: true
      daprPortMetaKey: "DAPR_PORT"
      advancedRegistration:
        name: "${APP_ID}"
        port: ${APP_PORT}
        address: "${HOST_ADDRESS}"
        check:
          name: "Dapr Health Status"
          checkID: "daprHealth:${APP_ID}"
          interval: "15s",
          http: "http://${HOST_ADDRESS}:${DAPR_HTTP_PORT}/v1.0/healthz"
        meta:
          DAPR_METRICS_PORT: "${DAPR_METRICS_PORT}"
          DAPR_PROFILE_PORT: "${DAPR_PROFILE_PORT}"
        tags:
          - "dapr"

搭建 Hashicorp Consul


HashiCorp提供了关于如何为不同主机模型搭建 Consul 的深度指南。 请查看此处的 自托管指南


HashiCorp提供了关于如何为不同主机模型搭建 Consul 的深度指南。 请在此查看 Kubernetes 指南

相关链接