提供grpc-kit微服务脚手架的通用配置规范
| 参数 | 类型 | 说明 | 示例 |
|---|---|---|---|
| host | string | 主机IPv4或IPv6地址 | 127.0.0.1 |
| port | int | 主机端口号 | 6379 |
| address | string | 不包含协议,由主机IP与端口组成 | 127.0.0.1:6379 或 [fe80::1%lo0]:53 |
| endpoints | []string | 由协议、IP、端口组成,多个通过逗号","分割 | https://node1:2379,https://node2:2379,https://node3:2379 |
| 参数 | 类型 | 说明 | 示例 |
|---|---|---|---|
| driver | string | 配置支持的驱动 | etcdv3、redis等 |
| enable | bool | 是否开启这个功能 | true、false |
# https://github.com/grpc-kit/cfg/blob/master/app-sample.yaml
# 基础服务配置
services:
# 服务注册的前缀,全局统一
root_path: service
# 服务注册的空间,全局统一
namespace: example
# 服务的代码,设置后不可变更
service_code: cmdb.v1.commons
# 接口网关的地址
api_endpoint: api.grpc-kit.com
# 服务所监听的grpc地址(如未设置,自动监听在127.0.0.1的随机端口)
grpc_address: 127.0.0.1:10081
# 服务所监听的http地址(如未设置,则不开启gateway服务)
http_address: 127.0.0.1:10080
# 服务注册,外部网络可连接的grpc地址(一般等同于grpc-address)
public_address: ""
# 服务注册配置
discover:
driver: etcdv3
heartbeat: 15
endpoints:
- http://127.0.0.1:2379
#discover:
# tls:
# ca_file: /opt/certs/etcd-ca.pem
# cert_file: /opt/certs/etcd.pem
# key_file: /opt/certs/etcd-key.pem
# 认证鉴权配置
security:
enable: true
# 认证:谁在登录
authentication:
# 跳过认证的rpc方法
insecure_rpcs:
- SearchHosts
oidc_provider:
issuer: https://accounts.example.com
config:
# 必须验证token.aud是否与client_id相等
client_id: example
# 允许的签名算法类别
supported_signing_algs:
- RS256
# 忽略token.aud与client_id的验证
skip_client_id_check: true
# 忽略token是否过期的验证
skip_expiry_check: false
# 忽略token issuer的验证
skip_issuer_check: true
http_users:
- username: user1
password: pass1
# TODO; 鉴权:能做什么
authorization:
# 关系数据配置
database:
driver: postgres
dbname: demo
user: demo
password: grpc-kit
host: 127.0.0.1
port: 5432
sslmode: disable
connect_timeout: 10
# 缓存服务配置
cachebuf:
enable: true
driver: redis
address: 127.0.0.1:6379
password: ""
# 日志调试配置
debugger:
enable_pprof: true
log_level: debug
log_format: text
# 链路追踪配置
opentracing:
enable: true
host: 127.0.0.1
port: 6831
# 应用私有配置
independent:
name: grpc-kit在services中所配置的public-address地址是grpc服务,与其他服务之间必须能正常通讯。如果在k8s环境下可考虑设置环境变量GRPC_KIT_PUHLIC_IP把POD IP传递,如:
...
spec:
template:
spec:
containers:
- args:
- /opt/service
- --config
- /opt/config/app.toml
env:
- name: GRPC_KIT_PUHLIC_IP
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: status.podIP
...