# 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)