gRPC网关

    网关接受 etcd 的 消息定义的 JSON mapping 。注意 和 value 字段被定义为 byte 数组,因此必须在 JSON 中以 base64 编码。下面例子使用 curl,但是任何 HTTP/JSON 客户端都可以如此工作。

    使用 v3alpha/kv/rangev3alpha/kv/put 服务来读取和写入键:

    1. curl http://localhost:2379/v3alpha/watch \
    2. -X POST -d '{"create_request": {"key":"Zm9v"} }' &
    3. # {"result":{"header":{"cluster_id":"12585971608760269493","member_id":"13847567121247652255","revision":"1","raft_term":"2"},"created":true}}
    4. -X POST -d '{"key": "Zm9v", "value": "YmFy"}' >/dev/null 2>&1
    5. # {"result":{"header":{"cluster_id":"12585971608760269493","member_id":"13847567121247652255","revision":"2","raft_term":"2"},"events":[{"kv":{"key":"Zm9v","create_revision":"2","mod_revision":"2","version":"1","value":"YmFy"}}]}}

    使用 发起事务:

    使用 v3alpha/auth 服务搭建认证:

    1. # 创建 root 用户
    2. curl -L http://localhost:2379/v3alpha/auth/user/add \
    3. -X POST -d '{"name": "root", "password": "pass"}'
    4. # {"header":{"cluster_id":"14841639068965178418","member_id":"10276657743932975437","revision":"1","raft_term":"2"}}
    5. # 创建 root 角色
    6. curl -L http://localhost:2379/v3alpha/auth/role/add \
    7. -X POST -d '{"name": "root"}'
    8. # {"header":{"cluster_id":"14841639068965178418","member_id":"10276657743932975437","revision":"1","raft_term":"2"}}
    9. curl -L http://localhost:2379/v3alpha/auth/user/grant \
    10. -X POST -d '{"user": "root", "role": "root"}'
    11. # {"header":{"cluster_id":"14841639068965178418","member_id":"10276657743932975437","revision":"1","raft_term":"2"}}
    12. # 开启认证
    13. curl -L http://localhost:2379/v3alpha/auth/enable -X POST -d '{}'
    14. # {"header":{"cluster_id":"14841639068965178418","member_id":"10276657743932975437","revision":"1","raft_term":"2"}}

    为认证 token 设置 Authorization header,以便在获取键时使用认证证书:

    1. curl -L http://localhost:2379/v3alpha/kv/put \
    2. -H 'Authorization : sssvIpwfnLAcWAQH.9' \

    生成的 API 定义可以在 rpc.swagger.json 找到.