The documentation you are viewing is for Dapr v1.11 which is an older version of Dapr. For up-to-date documentation, see the latest version.
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.meta
在service.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 指南
相关链接
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.