Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kubernetes-retired/etcdadm
[EOL] etcdadm is a command-line tool for operating an etcd cluster
https://github.com/kubernetes-retired/etcdadm
etcd k8s-sig-cluster-lifecycle
Last synced: 4 months ago
JSON representation
[EOL] etcdadm is a command-line tool for operating an etcd cluster
- Host: GitHub
- URL: https://github.com/kubernetes-retired/etcdadm
- Owner: kubernetes-retired
- License: apache-2.0
- Archived: true
- Created: 2018-06-13T17:16:08.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2024-04-29T17:19:53.000Z (9 months ago)
- Last Synced: 2024-10-09T06:06:07.886Z (4 months ago)
- Topics: etcd, k8s-sig-cluster-lifecycle
- Language: Go
- Homepage:
- Size: 37.1 MB
- Stars: 764
- Watchers: 36
- Forks: 135
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Security: SECURITY_CONTACTS
- Roadmap: ROADMAP.md
Awesome Lists containing this project
- awesome-repositories - kubernetes-retired/etcdadm - [EOL] etcdadm is a command-line tool for operating an etcd cluster (Go)
README
etcdadm
=======etcdadm is a command-line tool for operating an etcd cluster. It makes it easy to create a new cluster, add a member to, or remove a member from an existing cluster. Its user experience is inspired by [kubeadm](https://kubernetes.io/docs/reference/setup-tools/kubeadm/).
For major project goals, see the [roadmap](ROADMAP.md)
## Table of Contents
- [Getting Started](#getting-started)
- [Building](#building)
- [Creating a new cluster](#creating-a-new-cluster)
- [Adding a member](#adding-a-member)
- [Removing a member](#removing-a-member)
- [Advanced Usage](#advanced-usage)
- [Creating a new cluster from a snapshot](#creating-a-new-cluster-from-a-snapshot)
- [Caveats & Limitations](#caveats-and-limitations)
- [Design](#design)
- [Questions](#questions)## Getting Started
### Building
1. Clone the git repository.
1. Build on the host:
```
make etcdadm
```
1. Build in a container, using docker:
```
make container-build
```
_If you are in a country/region where Internet access is restricted and you cannot download Go dependencies successfully, `make` with the `GOPROXY` environment variable set to a third party you trust, for example:_
```
GOPROXY=https://goproxy.io make container-build
```
_`goproxy.io` is not endorsed specifically by the project._### Creating a new cluster
1. Copy `etcdadm` to each machine that will become a member.
2. Choose one machine and run```
etcdadm init
```### Adding a member
1. Copy the CA certificate and key from any machine in the cluster to the machine being added.
```
rsync -avR /etc/etcd/pki/ca.* :/
```
2. Choose a cluster endpoint (i.e. client URL of some member) and run```
etcdadm join
```### Removing a member
On the machine being removed, run
```
etcdadm reset
```## Advanced Usage
### Creating a new cluster from a snapshot
If you have an existing etcd snapshot, you can use it to create a new cluster:
```
etcdadm init --snapshot /path/to/etcd.snapshot
```## Caveats and Limitations
1. Must run as root. (This is because etcdadm creates a systemd service)
2. Does not support etcd v2.
3. Currently tested on Container Linux, with plans for other platforms.## Design
The goal of etcdadm is to make it easy to operate an etcd cluster. It downloads a specific etcd release, installs the binary, configures a systemd service, generates certificates, calls the etcd API to add (or remove) a member, and verifies that the new member is healthy.
Etcdadm must be run on the machine that is being added or removed. As a consequence, if a member permanently fails, and the operator cannot invoke `etcdadm reset` on that machine, the operator must use the etcd API to delete the failed member from the list of members.
On its own, etcdadm does not automate cluster operation, but a cluster orchestrator can delegate all the above tasks to etcdadm.
### Sequence Diagrams
See `docs/diagrams` for sequence diagrams of init, join, and reset.
For more information reach out to [etcdadm slack channel](https://kubernetes.slack.com/messages/CEM0AT9GW)