楼主 Go 和 Etcd 都不是很熟,用程序可以读 etcd 的配置,但是 etcdctl 就有问题。
详情如下:
一个 Go/GPRC 服务注册到 etcd 里面 如果用 Go/JAVA 去读,类似下面,是没问题的
cli, err := clientv3.New(clientv3.Config{
Endpoints: endpoints,
DialTimeout: 5 * time.Second,
})
if err != nil {
// handle error!
}
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
//resp, err := cli.Put(ctx, "sample_key", "sample_value")
resp, err := cli.Get(ctx, "/api/v1.0/", clientv3.WithPrefix())
但是如果用 etcdctl 就读不出
etcdctl --version
etcdctl version: 3.3.13
API version: 2
因为之前配置了 SSL ,所以要加上相关的证书之类
ETCDCTL_API=3
etcdctl --ca-file=ca.pem --cert-file=server.pem --key-file=server-key.pem --endpoints=XXXXX ls /api/v1.0/
直接报错:
Error: 100: Key not found (/api) [293]
直接 etcdctl ls:
/discovery
/jwnicrsevxblovcfybibmzlmqsgyxgeh
/terrmiilhczjihcdhbvsvusssss
是我的理解有问题吗?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.