evildecay / etcdkeeper Goto Github PK
View Code? Open in Web Editor NEWweb ui client for etcd
License: MIT License
web ui client for etcd
License: MIT License
start command
./etcdkeeper -cacert /etc/kubernetes/pki/etcd/ca.crt -key /etc/kubernetes/pki/etcd/healthcheck-client.key -cert /etc/kubernetes/pki/etcd/healthcheck-client.crt -p 8080 -usetls
[root@master1 etcdmanagelog]# curl http://localhost:8080/etcdkeeper
404 page not found
then change to default configuration to start, still not working
[root@master1 ~]# ./etcdkeeper
2019/09/18 17:39:09 listening on 0.0.0.0:8080
[root@master1 etcdmanagelog]# curl http://localhost:8080/etcdkeeper
404 page not found
用的V3,加用户名密码认证
对于特性中:
Each time you restart etcdkeeper, you need to enter the root username and password for each etcd server address.
因为要分开权限,能否一次登录root,后面就可以直接用不同的用户登录的?不然放权的话一个一个去给开发人员输入一次root,然后在切换下,估计要累死了:(,其他的功能都很简洁好用,不知道这个首次登录的问题,是否有其他方式解决呢?
再次感谢让我们到那么好的UI管理
I use Docker Swarm for start keeper:
version: '3.3'
networks:
net-etcd:
external: true
services:
keeper:
image: evildecay/etcdkeeper:latest
networks:
- net-etcd
deploy:
labels:
traefik.enable: 'true'
traefik.http.services.etcd-ui.loadbalancer.server.port: 8080
traefik.http.routers.etcd-ui.rule: Host(`etcd.example.com`)
traefik.http.routers.etcd-ui.middlewares: redirect@file
traefik.http.routers.etcd-ui.entrypoints: http
traefik.http.routers.etcd-ui-ssl.rule: Host(`etcd.example.com`)
traefik.http.routers.etcd-ui-ssl.tls: 'true'
traefik.http.routers.etcd-ui-ssl.service: etcd-ui
traefik.http.routers.etcd-ui-ssl.tls.certresolver: default
traefik.http.routers.etcd-ui-ssl.entrypoints: https
restart_policy:
condition: on-failure
window: 120s
max_attempts: 5
and after start container i see:
# docker logs -f etcd-ui_keeper.1.qftkn42c8m01pfhqhrdsq9g3x
2019-11-21 20:04:44.890346 I | listening on 0.0.0.0:8080
But i cant open etcd.example.com/etcdkeeper ... i got Gateway Timeout
from traefik.
Any ideas?
[root@master01 ~]# vim /lib/systemd/system/etcdkeeper.servic
[Unit]
Description=etcdkeeper service
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/etcdkeeper -p 8800 -h 192.168.2.66
ExecReload=/bin/kill -HUP
KillMode=process
Restart=on-failure
PrivateTmp=true
[Install]
WantedBy=multi-user.target
[root@master01 ~]# systemctl status etcdkeeper.service
● etcdkeeper.service - etcdkeeper service
Loaded: loaded (/usr/lib/systemd/system/etcdkeeper.service; enabled; vendor preset: disabled)
Active: active (running) since 三 2022-01-12 12:15:23 CST; 5s ago
Main PID: 9740 (etcdkeeper)
Tasks: 4
Memory: 4.5M
CGroup: /system.slice/etcdkeeper.service
└─9740 /usr/local/bin/etcdkeeper -p 8800 -h 192.168.2.66
1月 12 12:15:23 master01 systemd[1]: Started etcdkeeper service.
1月 12 12:15:23 master01 systemd[1]: Starting etcdkeeper service...
1月 12 12:15:23 master01 etcdkeeper[9740]: listening on 192.168.2.66:8800
[root@master01 ~]# curl 192.168.2.66:8800
404 page not found
root@master01 ~]# ls -l /usr/local/bin/etcdkeeper
-rwxr-xr-x 1 root root 19755714 6月 8 2020 /usr/local/bin/etcdkeeper
What's the reason?
Two suggestions:
main.go
to the root directory so that you can easily do GO111MODULE=on go get github.com/evildecay/etcdkeeper
(I'm a little more comfortable building from source that downloading a binary release, and building from source is so easy with Go.)
Thanks!
i use the tool open kubernetes etcd.
but value is no decode. the value is Protobuf.the value need decode to yaml on view.
write value need encode.
now i use etcdctl --cacert filepath --cert filepath --key filepath get keyname|auger decode
the project https://github.com/jpbetz/auger
Hi,
Thanks for the gr8 work
if it possible, please add the ability to set ETCD endpoint from environment variable,
currently you are using Cookies.get('etcd-endpoint');
var etcdBase = Cookies.get('etcd-endpoint');
if(typeof(etcdBase) === 'undefined') {
etcdBase = '127.0.0.1:2379';
I met follow error when accessing ui
{"readyState":0,"status":0,"statusText":"timeout"}
I don't see the executable file. 'etcdkeeper' is the document file.
Does anyone know how to solve this?
Step 1/16 : FROM golang:1.9-alpine as builder
---> b0260be938c6
Step 2/16 : RUN apk add -U git && go get github.com/golang/dep/...
---> Using cache
---> 703234621f56
Step 3/16 : WORKDIR /go/src/github.com/evildecay/etcdkeeper
---> Using cache
---> 644d1053f003
Step 4/16 : ADD src ./
---> Using cache
---> 7c7b7324484a
Step 5/16 : ADD Gopkg.* ./
---> Using cache
---> 3516cf99238a
Step 6/16 : RUN dep ensure -update && go build -o etcdkeeper.bin etcdkeeper/main.go
---> Running in 1791cc70021c
etcdkeeper/main.go:7:2: cannot find package "etcdkeeper/session" in any of:
/go/src/github.com/evildecay/etcdkeeper/vendor/etcdkeeper/session (vendor tree)
/usr/local/go/src/etcdkeeper/session (from $GOROOT)
/go/src/etcdkeeper/session (from $GOPATH)
etcdkeeper/main.go:8:2: cannot find package "etcdkeeper/session/providers/memory" in any of:
/go/src/github.com/evildecay/etcdkeeper/vendor/etcdkeeper/session/providers/memory (vendor tree)
/usr/local/go/src/etcdkeeper/session/providers/memory (from $GOROOT)
/go/src/etcdkeeper/session/providers/memory (from $GOPATH)
The command '/bin/sh -c dep ensure -update && go build -o etcdkeeper.bin etcdkeeper/main.go' returned a non-zero code: 1
GET /v3/get?key=%2Fregistry%2Fevents%2Fdefault%2Fzk-0.1589a2d155984db6
response:
{"node":{"createdIndex":6656239,"dir":false,"key":"/registry/events/default/zk-0.1589a2d155984db6","modifiedIndex":6743140,"ttl":3535,"value":"k8s\u0000\n\u000b\n\u0002v1\u0012\u0005Event\u0012\ufffd\u0002\nZ\n\u0015zk-0.1589a2d155984db6\u0012\u0000\u001a\u0007default\"\u0000*$91cd703d-40ba-11e9-917c-525400ab7cc42\u00008\u0000B\u0008\u0008\ufffdŃ\ufffd\u0005\u0010\u0000z\u0000\u0012I\n\u0003Pod\u0012\u0007default\u001a\u0004zk-0\"$91cc931e-40ba-11e9-917c-525400ab7cc4*\u0002v12\u00076656235:\u0000\u001a\u0010FailedScheduling\"Cpod has unbound immediate PersistentVolumeClaims (repeated 2 times)*\u0015\n\u0011default-scheduler\u0012\u00002\u0008\u0008\ufffdŃ\ufffd\u0005\u0010\u0000:\u0008\u0008\ufffd\ufffd\ufffd\ufffd\u0005\u0010\u0000@\ufffd\ufffd\u0001J\u0007WarningR\u0000b\u0000r\u0000z\u0000\u001a\u0000\"\u0000"}}
etcdkeeper has already started successfully.
However, the following error occurs when I try to view information from the page
rpc error: code = ResourceExhausted desc = trying to send message larger than max (6161420 vs. 2097152)
The MaxCallSendMsgSize parameter defaults to 2M, I think we should expose this parameter
通过docker-compose部署 etcdkeeper,进入页面就弹出报错
我不知道是不是我的 docker-compose.yaml 配置的有错误,还是我启动 etcd 镜像错了
这是docker-compose.yaml内容
`version: '3'
networks:
mall:
services:
etcd1:
image: quay.io/coreos/etcd:v3.2.5
container_name: etcd1
command: etcd -name etcd1 -advertise-client-urls http://0.0.0.0:2379 -listen-client-urls http://0.0.0.0:2379 -listen-peer-urls http://0.0.0.0:2380 -initial-cluster-token etcd-cluster -initial-cluster "etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380" -initial-cluster-state new
ports:
- 2379:2379
- 2380:2380
networks:
- mall
etcd2:
image: quay.io/coreos/etcd:v3.2.5
container_name: etcd2
command: etcd -name etcd2 -advertise-client-urls http://0.0.0.0:2379 -listen-client-urls http://0.0.0.0:2379 -listen-peer-urls http://0.0.0.0:2380 -initial-cluster-token etcd-cluster -initial-cluster "etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380" -initial-cluster-state new
ports:
- 2379
- 2380
networks:
- mall
etcd3:
image: quay.io/coreos/etcd:v3.2.5
container_name: etcd3
command: etcd -name etcd3 -advertise-client-urls http://0.0.0.0:2379 -listen-client-urls http://0.0.0.0:2379 -listen-peer-urls http://0.0.0.0:2380 -initial-cluster-token etcd-cluster -initial-cluster "etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380" -initial-cluster-state new
ports:
- 2379
- 2380
networks:
- mall
etcdkeeper:
image: evildecay/etcdkeeper:latest
container_name: "etcdkeeper"
environment:
HOST: "0.0.0.0"
ports:
- 8080
networks:
- mall
depends_on:
- etcd1`
I ran etcdkeeper -usetls -cert /etcd-manage/bin/tlskey/etcdserver.crt -key etcd-manage/bin/tlskey/etcdserver.key
foobar.etcd.com:2379
2019/10/20 21:07:25 listening on 0.0.0.0:8080
2019/10/20 21:07:27 POST v3 connect success.
2019/10/20 21:07:27 rpc error: code = Unimplemented desc =
你好,我下载了MAC版的安装包,请问应该怎么启动呢。
看了下可以简化蛮多不必要的依赖
go.etcd.io/etcd/client/pkg/v3 v3.5.0 //go.etcd.io/etcd/client/pkg/v3/transport 用来tls连接
go.etcd.io/etcd/client/v2 v2.305.0
go.etcd.io/etcd/client/v3 v3.5.0
google.golang.org/grpc v1.38.0
点击登录总是弹出显示 user name is empty 的窗口,这是为啥
Etcdkeeper makes it very convenient to manage etcd single member. 👍 But now I use etcd cluster intended for HA. So etcdkeeper has any enhancement plan to support etcd cluster?
安装了etcd keeper。访问端口后默认连接127.0.0.1:2379.
这个默认连接可以修改吗?需要在哪里指定?
集群模式修改的格式是什么,我是3个节点的集群,把三个节点ip:2379都写进去吗?
in some cases,request time out happended ; could make this editable?
can we build a office docker image to easy deploy?
Hi,
I am the root user and I have already created another user with separate login credentials.
But when I use the etcd-keeper to login with the new user created, it gives the error "The server needs to initialize the root user."
I mean, if I were to give access to another user for viewing only specific set of keys in my production etcd cluster, why he needs to initialize it with root user? That is giving him the root username and password.And nobody wants that.
How can I get rid of this warning?
Hello:
I have a etcd server and try to run etcdkeeper. But when I accessd the webui (http://10.62.101.36:8280/etcdkeeper3/), returned the "grpc: timed out when dialing" error.
The etcd server info and etcdkeeper log print as followed, any advice to soulve it? thanks.
[root@master1 ~]# etcdctl --cert-file=/etc/etcd/peer.crt --key-file=/etc/etcd/peer.key --ca-file=/etc/etcd/ca.crt --peers="https://10.62.101.36:2379" cluster-health
member f9dceee68ee5d622 is healthy: got healthy result from https://10.62.101.36:2379
cluster is healthy
[root@master1 ~]# ./etcdkeeper/httpserver -h 10.62.101.36 -p 8280
2017/10/30 22:41:47 /root/assets
2017/10/30 22:41:47 listening on 10.62.101.36:8280
2017/10/30 22:41:56 grpc: addrConn.resetTransport failed to create client transport: connection error: desc = "transport: dial tcp 127.0.0.1:2379: getsockopt: connection refused"; Reconnecting to {"127.0.0.1:2379" <nil>}
2017/10/30 22:41:57 grpc: addrConn.resetTransport failed to create client transport: connection error: desc = "transport: dial tcp 127.0.0.1:2379: getsockopt: connection refused"; Reconnecting to {"127.0.0.1:2379" <nil>}
2017/10/30 22:41:58 grpc: addrConn.resetTransport failed to create client transport: connection error: desc = "transport: dial tcp 127.0.0.1:2379: getsockopt: connection refused"; Reconnecting to {"127.0.0.1:2379" <nil>}
2017/10/30 22:42:01 POST v3 connect fail.
2017/10/30 22:42:01 Failed to dial 127.0.0.1:2379: context canceled; please retry.
My env
etcd Version: 3.3.13
Git SHA: 98d3084
Go Version: go1.10.8
Go OS/Arch: linux/amd64
error message
rpc error: code = ResourceExhausted desc = grpc: received message larger than max (8615395 vs. 4194304)
Thanks a lot for your project
I havenot found how to list the watched keys. Maybe I lost something or your havenot implement it.
Like the command line: etcdctl lease timetolive --keys 694d6dde8ef506d2(lease id).
Thanks again.
as title.
after i enable the authentication of etcd and revoke the role guest.
Role: guest
KV Read:
KV Write:
etcd keeper report an erroe :
110: The request requires user authentication (Insufficient credentials) [0]
Etcdkeeper works well at local startup, but if you save a value with the - H - P parameter, timeout occurs, and HTTP put requests are sent only after timeout occurs. Specific phenomena can be seen in this link operation video.
http://download.voicecloud.cn/opps/20190828154845/VID_20190828_153704.mp4
原来是国人啊,感谢你的开源项目。
有个问题请教一下,etcdkeeper支持查看不同Revision的kv值吗?我好像没找到啊。谢谢。
Hi guys,
I would to compile you go program to arm architecture.
It's the first time I have to build a go application from source.
Could you please tell me what's the best way to do it ?
Cheers
Thanks for the wonderful tool to use for etcd. May I know if any option to enable more logs (enabling debug mode) for troubleshooting purpose?
I deployment etcdkeeper in server which is different with etcd and can't access,but it's useful when i deployment etcdkeeper in serer whcih is same with etcd, why? Hope your help
Is this a planned feature?
Hi,
@evildecay I suggest you add versioned tags to the docker image so people can choose what version to download.
You can set it up by adding the following rule in automated builds:
Docker Tag | Source |
---|---|
{sourceref} | /^v([0-9.]+)$/ |
Next time you add push a new git version tag, it will create a image with that version.
Ran the mac version:
$ /Applications/etcdkeeper/etcdkeeper
2019/04/09 07:20:14 listening on 0.0.0.0:8080
Then opened http://127.0.0.1:8080/etcdkeeper
in browser.
Hi,
tried building the tool and run from host, all good. When dockerized, browser hangs on this POST call and never timeouts. Which renders the usage impossible.
May I ask for some potential hint what might be wrong?
Best regards
CPU usage is too high after running for a while。
top command.
process cpu 200% .
Maybe the keys not prefixed with /
can not be showed on the web page .
@AndresCidoncha created a nice version switcher in his fork.
It's much more intuitive than having to go to the correct URL.
@AndresCidoncha perhaps you could create a pull request from your fork?
Forking a project and keeping general improvements for your self is not the best way to improve a project.
Thanks
etcdserver: user name is empty
输入正确的用户密码后一直弹出 这个错误,我搭建的 etcd集群是etcd-v3.4.14 版本
Hi,
We are using etcd to hold application configurations and sometimes we need to create new keys by modifying existing values.
So we would like to have a feature to duplicate existing values under a new key.
If the community agrees with this feature. We would happy to do this as a contribution.
Let me know your thoughts on this.
Thanks.
It's not perfect. The other args like cacert, cert, etc. are also necessary!
I can submit PR to fix it if needed.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.