3

我需要consul使用 http api 获取所有 kv 值。目前我可以使用以下命令获得一个值。

curl -k -X GET https://consul.banuka1.us-east-2.test:8543/v1/kv/banuka-test/test-value?token=1995-08-18

它只返回其中指定的值 ( test-value)

但我想得到所有的值kv store

我怎样才能做到这一点?这里有解决方法吗?

注意:我已经使用consulcli 完成了此操作,但我想使用https api

4

2 回答 2

7

recurse=true您可以通过使用查询参数来简化此操作并减少 API 调用的数量。

curl http://127.0.0.1:8500/v1/kv/\?recurse=true | jq -r '.[].Value | @base64d' 
于 2020-04-28T22:36:37.043 回答
2

我通常这样做是为了打印所有的键和值。

v1/kv/?keys- 返回所有键

然后我迭代每个键并读取原始响应并解码 base64 值。

while read -r key
do    
    value=`curl --silent "http://127.0.0.1:8500/v1/kv/$key" | jq -r '.[].Value' | base64 --decode`
    echo "$key - $value"
done < <(curl --silent "http://127.0.0.1:8500/v1/kv/?keys"| jq -r '.[]')
于 2020-03-27T20:18:56.287 回答