# etcdadm
**Repository Path**: mirrors_kubernetes-sigs/etcdadm
## Basic Information
- **Project Name**: etcdadm
- **Description**: [EOL] etcdadm is a command-line tool for operating an etcd cluster
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-08-09
- **Last Updated**: 2025-11-15
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## 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.
## Questions?
For more information reach out to [etcdadm slack channel](https://kubernetes.slack.com/messages/CEM0AT9GW)