apisix-dashboard(2.3)目前还不支持自定义etcd读写时的前缀, 并且也不支持关闭对etcd的ssl校验.
但可以在apisix-dashboard与etcd之间加一个 etcd grpc-proxy
来实现.
apisix-dashboard -> etcd grpc-proxy(负责重写前缀,忽略证书校验) -> etcd(原本的etcd服务端)
注意: apisix(2.2)本身不支持使用 etcd grpc-proxy
, 如需要对apisix使用的etcd进行代理中转 只能使用 etcd gateway
etcd grpc-proxy:
etcd代理, 支持自定义命名空间(前缀), 订阅合并, 自定义前缀, 上游证书, 下游证书 官方文档
etcd gateway:
单纯的TCP转发, 支持自定义多个etcd端点并对其进行负载均衡. 官方文档
实现自定义前缀
需要注意 /apisix
这个前缀是在apisix-dashboard中写死的. 只能自定义前面部分.
比如 etcd grpc-proxy
写了前缀为 /apps/xxx
那么到了apisix-dashboard那边真实读取的路径前缀则为 /apps/xxx/apisix
apisix配置文件中的etcd前缀也需要为 /apps/xxx/apisix
下面附上docker-compose:
etcd-proxy:
image: quay.io/coreos/etcd:v3.4.0
restart: always
# 将端口映射到宿主机
# ports:
# - '2679:2379'
environment:
- ETCDCTL_API=3
command:
- /usr/local/bin/etcd
- grpc-proxy
- start
- --namespace=/apps/xxx # 自定义前缀, 不包含 '/apisix'
- --endpoints=etcd.server:2379 #上游etcd地址, 多个用,分割
- --listen-addr=0.0.0.0:2379 # 监听地址, apisix-dashboard将连接这个地址.
忽略对上游etcd的ssl校验
由于apisix-dashboard不支持禁用对上游的ssl校验, 所以只能让中间的 etcd grpc-proxy
忽略对上游的校验, 且不对下游apisix-dashboard使用ssl.
直接在 etcd grpc-proxy
的启动命令中加上参数 --insecure-skip-tls-verify
即可忽略 etcd grpc-proxy
对上游的证书校验