上一講我們安裝 etcd 服務端,這一講我們來一起學學如何使用 etcd 客戶端常見的命令,文章內容來源于參考資料,如若侵權,請聯系洗掉,謝謝,
etcd可通過客戶端命令列工具 etcdctl 對etcd進行請求操作
# 幫助命令,會列出所有的命令和選項,在記不太清命令的時候,可以使用
etcdctl ‐h
# 對某個命令進行更加詳細的介紹
etcdctl put -h
1、etcdctl 常見命令
1.1 鍵操作
鍵操作包括最常用的增刪改查操作,包括PUT、GET、DELETE等命令,注意:etcd 中 PUT 當 key 不存在是新增,當 key 存在時是修改,
# PUT 新增或者修改某個鍵的值
etcdctl put /stu/name /xiaole
#GET獲取指定鍵的值
etcdctl get /stu/name
#以16進制格式回傳
etcdctl get /stu/name ‐‐hex
#獲取key范圍內的值 半開區間:左閉右開
etcdctl get /stu/name /xiaole3
#獲取指定前綴的值 可以使用選項 ‐‐limit 限制回傳的key數量,
etcdctl get ‐‐prefix /stu/name
etcdctl get ‐‐prefix /stu/name ‐‐limit3
#按key的字典順序讀取
#讀取字典順序大于或等于 name2 的key:
etcdctl get ‐‐from‐key name2
# etcd可通過讀取一個key來獲取當前etcd服務端的版本號,不管key是否存在
etcdctl get /stu ‐w=json
#訪問以前版本的key
etcdctl get ‐‐rev=8 /test/name #訪問第8個版本的key
回傳結果欄位決議:
-
cluster_id: 請求的etcd集群ID,
-
member_id: 請求的etcd節點ID,
-
revision: etcd 服務端當前
全域資料版本號,對任一 key 的 put 或 delete 操作都會使revision自增1,revision=1 是 etcd 的保留版本號,因此用戶的key版本號將從2開始, -
raft_term: etcd當前raft
主節點任期號, -
create_revision: 當前 key 創建時全
局資料版本號revision的值, -
mod_revision: 當前key最后一次修改時
全域資料版本號revision的值, -
version: 當前key的資料版本號,
key創建時 version為1,對當前key進行put操作會使version自增1,將key洗掉后,重新創建,version又會從1開始計數,
# 洗掉一個鍵或者特定范圍的鍵
etcdctl del /aaa/bbb
etcdctl del /test/name /test/name3
#可以通過選項 ‐‐prev‐kv 讓命令回傳對應的值
etcdctl del ‐‐prev‐kv name1
1.2 watch 操作
watch 監測一個鍵值的變化,一旦鍵值發生更新,就會輸出最新的值并退出
etcdctl watch /test/name
另一個終端輸入 etcdctl put /test/name fox
1.3 lease(租約)操作
類似 redis 的 TTL,etcd 中的鍵值對可以系結到租約上,實作存活周期控制,應用客戶端可以 為 etcd 集群里面的鍵授予租約,一旦租約的TTL到期,租約就會過期并且所有附帶的鍵都將被洗掉
# 授予租約 TTL 為30s
etcdctl lease grant 30
#將 key 與 租約進行系結
etcdctl put ‐‐lease=705b8474d1acd63b name fox
當然,應用通過租約ID可以撤銷租約,撤銷租約將洗掉所有附帶的key
#撤銷租約
etcdctl lease revoke 705b8474d1acd641
應用程式可以通過重繪其TTL保持租約存活,因此不會過期
# 重繪租約
etcdctl lease keep-alive 705b8474d1acd63b
應用客戶端可以查詢租約資訊,檢查續訂或租約的狀態,是否存在或者是否已過期
# 查詢租約
etcdctl lease timetolive 705b8474d1acd647
etcdctl lease timetolive ‐‐keys 705b8474d1acd647
2、etcd權限管理
2.1 權限常用命令
2.1.1 用戶管理
# 創建用戶
etcdctl user add fox
# 洗掉用戶
etcdctl user del fox
#修改密碼
etcdctl user passwd fox
#查看所有用戶
etcdctl user list
#查看指定用戶及系結角色
etcdctl user get fox
2.1.2 角色管理
# 創建角色
etcdctl role add test
# 給角色賦權,可讀/可寫/可讀寫
etcdctl grant‐permission role_name [read|write|readwrite] /name
# 回收角色賦權
etcdctl role revoke‐permission role_name /name
#洗掉角色
etcdctl role del test
#查詢角色串列
etcdctl role list
#查詢指定角色的權限
etcdctl role get test
#用戶系結角色
etcdctl user grant‐role 用戶名 角色名
#回收用戶系結權限
etcdctl user revoke‐role 用戶名 角色名
# 開啟權限
etcdctl user add root
#root用戶存在時才能開啟權限控制
etcdctl auth enable
# 查看用戶串列
etcdctl user list ‐‐user=root
# 權限使用
etcdctl ‐‐user='用戶名' ‐‐password='密碼' get /name
2.2 集群權限管理
2.2.1 root用戶
root 用戶是 etcd 默認就有的用戶,擁有所有的權限
# root用戶自帶所有權限,因此只需創建該用戶,開啟認證即有所有權限
etcdctl ‐‐endpoints http://127.0.0.1:12379,http://127.0.0.1:22379,http://127.0.0.1:32379 user add root
# 開啟身份驗證
etcdctl ‐‐user='root' ‐‐password='123456' ‐‐endpoints http://127.0.0.1:12379,http://127.0.0.1:22379,http://127.0.0.1:32379 auth enable
# 操作
etcdctl ‐‐user='root' ‐‐password='123456' put name fox
etcdctl ‐‐user='root' ‐‐password='123456' get name
2.2.2 普通用戶
# 創建普通用戶
etcdctl ‐‐user='root' ‐‐password='123456' ‐‐endpoints http://127.0.0.1:12379,http://127.0.0.1:22379,http://127.0.0.1:32379 user add fox
# 創建角色
etcdctl‐‐user='root'‐‐password='123456'‐‐endpointshttp://127.0.0.1:12 379,http://127.0.0.1:22379,http://127.0.0.1:32379 role add test
# 用戶系結角色
etcdctl ‐‐user='root' ‐‐password='123456' ‐‐endpoints http://127.0.0.1:12
379,http://127.0.0.1:22379,http://127.0.0.1:32379 user grant‐role fox test
# 給角色賦權
etcdctl ‐‐user='root' ‐‐password='123456' ‐‐endpoints http://127.0.0.1:12379,http://127.0.0.1:22379,http://127.0.0.1:32379 role grant‐permission test readwrite /name
參考資料:
bilibili視頻教程
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/553025.html
標籤:其它
下一篇:返回列表
