docker hub 镜像拉取安装
https://hub.docker.com/r/bitnami/etcd
docker pull bitnami/etcd:latest
创建 docker 网络
docker network create app-tier --driver bridge
启动etcd服务器实例
docker run -d --name etcd-server --network app-tier --publish 2379:2379 --publish 2380:2380 --env ALLOW_NONE_AUTHENTICATION=yes --env ETCD_ADVERTISE_CLIENT_URLS=http://etcd-server:2379 bitnami/etcd:latest
进入etcd客户端实例
D:\www>docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
NAMES
49b555472f39 bitnami/etcd:latest "/opt/bitnami/script…" 2 weeks ago Up 7 hours 0.0.0.0:2379-2380->2379-2380/tcp etcd-server
D:\www>docker exec -it 49b555472f39 /bin/bash
I have no name!@49b555472f39:/opt/bitnami/etcd$
常用操作
默认条件下,没有开启访问控制,访问 etcd 是没有用户和密码限制的,任何人只要能连接到 etcd 的 2379 端口,就可以读写 etcd 数据,如果我们开启外网访问的话就需要考虑访问控制的问题,etcd 提供了两种访问控制的方式:
- 基于身份验证RBAC的访问控制(本文)
- 基于证书的访问控制
root用户
root
是 etcd 的超级管理员,拥有 etcd 的所有权限,在开启角色认证之前为们必须要先建立好 root 用户。需要注意的是 root 用户必须拥有 root 的角色,允许在 etcd 的所有操作.
root角色
root
角色可以赋予任何用户,拥有 root 角色的用户有全局读写权限和集群身份验证配置权限,此外,还具有修改集群成员身份,碎片整理,建立快照等权限。
添加root用户、终端交互式输入密码
I have no name!@49b555472f39:/opt/bitnami/etcd$ etcdctl --endpoints http://127.0.0.1:2379 user add root
Password of root:
Type password of root again for confirmation:
User root created
开启身份验证
I have no name!@49b555472f39:/opt/bitnami/etcd$ etcdctl --user='root' --password='123456' --endpoints http://127.0.0.1:2379 auth enable
此后操作etcd不跟上用户将会报错
Error: etcdserver: user name is empty
再创建一个用户
I have no name!@49b555472f39:/opt/bitnami/etcd$ etcdctl --endpoints=http://127.0.0.1:2379 --user=root:123456 user add putong
用户、角色操作命令引用 https://blog.csdn.net/xingzuo_1840/article/details/125572916
查看所有用户
I have no name!@49b555472f39:/opt/bitnami/etcd$ etcdctl user list --user='root' --password='123456'
putong
root
查看集群信息
etcdctl endpoint status --cluster -w table
I have no name!@ab26d9d216e8:/opt/bitnami/etcd$ etcdctl endpoint status --cluster -w table
+-------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
| ENDPOINT | ID | VERSION | DB SIZE | IS LEADER | IS LEARNER | RAFT TERM | RAFT INDEX | RAFT APPLIED INDEX | ERRORS |
+-------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
| http://etcd-server:2379 | 8e9e05c52164694d | 3.5.7 | 20 kB | true | false | 3 | 7 | 7 | |
+-------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
插入数据
etcdctl put /node 172.31.100.1
开启权限后读写方式
I have no name!@49b555472f39:/opt/bitnami/etcd$ etcdctl --user='root' --password='123456' put name_23 "22222"
OK
I have no name!@49b555472f39:/opt/bitnami/etcd$ etcdctl --user='root' --password='123456' get name_23
name_23
22222
查看集群所有的key
etcdctl get / --keys-only --prefix
I have no name!@ab26d9d216e8:/opt/bitnami/etcd$ etcdctl get / --keys-only --prefix
/node
获取key对应的值
etcdctl get /node
I have no name!@ab26d9d216e8:/opt/bitnami/etcd$ etcdctl get /node
/node
172.31.100.1
一款UI不错的GUI客户端 http://etcdmanager.io/