{"id":12680336,"url":"https://github.com/kubernetes-retired/etcdadm","last_synced_at":"2025-12-16T02:14:36.085Z","repository":{"id":34679938,"uuid":"137247827","full_name":"kubernetes-retired/etcdadm","owner":"kubernetes-retired","description":"[EOL] etcdadm is a command-line tool for operating an etcd cluster","archived":true,"fork":false,"pushed_at":"2024-04-29T17:19:53.000Z","size":38905,"stargazers_count":764,"open_issues_count":0,"forks_count":135,"subscribers_count":36,"default_branch":"master","last_synced_at":"2024-10-09T06:06:07.886Z","etag":null,"topics":["etcd","k8s-sig-cluster-lifecycle"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kubernetes-retired.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY_CONTACTS","support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-06-13T17:16:08.000Z","updated_at":"2024-10-06T08:57:48.000Z","dependencies_parsed_at":"2023-02-12T14:46:09.250Z","dependency_job_id":"df8f1265-d277-4809-a3cc-b6c363365ffe","html_url":"https://github.com/kubernetes-retired/etcdadm","commit_stats":{"total_commits":790,"total_committers":56,"mean_commits":"14.107142857142858","dds":0.7392405063291139,"last_synced_commit":"badf076754f44e7e575d28f9a3a1327e684a6dc5"},"previous_names":["kubernetes-retired/etcdadm","kubernetes-sigs/etcdadm"],"tags_count":31,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubernetes-retired%2Fetcdadm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubernetes-retired%2Fetcdadm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubernetes-retired%2Fetcdadm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubernetes-retired%2Fetcdadm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kubernetes-retired","download_url":"https://codeload.github.com/kubernetes-retired/etcdadm/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":219846721,"owners_count":16556429,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["etcd","k8s-sig-cluster-lifecycle"],"created_at":"2024-07-17T06:03:36.055Z","updated_at":"2025-12-16T02:14:36.057Z","avatar_url":"https://github.com/kubernetes-retired.png","language":"Go","funding_links":[],"categories":["others","Go"],"sub_categories":[],"readme":"etcdadm\n=======\n\netcdadm 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/).\n\nFor major project goals, see the [roadmap](ROADMAP.md)\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://cdn.rawgit.com/platform9/etcdadm/master/demo.svg\"\u003e\n\u003c/p\u003e\n\n## Table of Contents\n\n  - [Getting Started](#getting-started)\n    - [Building](#building)\n    - [Creating a new cluster](#creating-a-new-cluster)\n    - [Adding a member](#adding-a-member)\n    - [Removing a member](#removing-a-member)\n  - [Advanced Usage](#advanced-usage)\n    - [Creating a new cluster from a snapshot](#creating-a-new-cluster-from-a-snapshot)\n  - [Caveats \u0026 Limitations](#caveats-and-limitations)\n  - [Design](#design)\n  - [Questions](#questions)\n\n## Getting Started\n\n### Building\n\n1. Clone the git repository.\n1. Build on the host:\n   ```\n   make etcdadm\n   ```\n1. Build in a container, using docker:\n   ```\n   make container-build\n   ```\n    _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:_\n   ```\n   GOPROXY=https://goproxy.io make container-build\n   ```\n   _`goproxy.io` is not endorsed specifically by the project._\n\n### Creating a new cluster\n\n1. Copy `etcdadm` to each machine that will become a member.\n2. Choose one machine and run\n\n```\netcdadm init\n```\n\n### Adding a member\n\n1. Copy the CA certificate and key from any machine in the cluster to the machine being added.\n\n```\nrsync -avR /etc/etcd/pki/ca.* \u003cMember IP address\u003e:/\n```\n2. Choose a cluster endpoint (i.e. client URL of some member) and run\n\n```\netcdadm join \u003cendpoint\u003e\n```\n\n### Removing a member\n\nOn the machine being removed, run\n\n```\netcdadm reset\n```\n\n## Advanced Usage\n\n### Creating a new cluster from a snapshot\n\nIf you have an existing etcd snapshot, you can use it to create a new cluster:\n\n```\netcdadm init --snapshot /path/to/etcd.snapshot\n```\n\n## Caveats and Limitations\n\n1. Must run as root. (This is because etcdadm creates a systemd service)\n2. Does not support etcd v2.\n3. Currently tested on Container Linux, with plans for other platforms.\n\n## Design\n\nThe 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.\n\nEtcdadm 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.\n\nOn its own, etcdadm does not automate cluster operation, but a cluster orchestrator can delegate all the above tasks to etcdadm.\n\n### Sequence Diagrams\n\nSee `docs/diagrams` for sequence diagrams of init, join, and reset.\n\n\u003ca name=\"questions\"\u003e\u003c/a\u003e\n## Questions?\n\nFor more information reach out to [etcdadm slack channel](https://kubernetes.slack.com/messages/CEM0AT9GW)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkubernetes-retired%2Fetcdadm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkubernetes-retired%2Fetcdadm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkubernetes-retired%2Fetcdadm/lists"}