{"id":37177808,"url":"https://github.com/platform9/etcdadm","last_synced_at":"2026-01-14T20:43:57.968Z","repository":{"id":57482623,"uuid":"174054728","full_name":"platform9/etcdadm","owner":"platform9","description":null,"archived":false,"fork":true,"pushed_at":"2019-01-22T11:00:22.000Z","size":4561,"stargazers_count":9,"open_issues_count":0,"forks_count":1,"subscribers_count":10,"default_branch":"master","last_synced_at":"2024-06-20T01:51:06.984Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"kubernetes-sigs/etcdadm","license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/platform9.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":null,"support":null}},"created_at":"2019-03-06T02:19:34.000Z","updated_at":"2024-06-20T01:51:06.985Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/platform9/etcdadm","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/platform9/etcdadm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/platform9%2Fetcdadm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/platform9%2Fetcdadm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/platform9%2Fetcdadm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/platform9%2Fetcdadm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/platform9","download_url":"https://codeload.github.com/platform9/etcdadm/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/platform9%2Fetcdadm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28434496,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T18:57:19.464Z","status":"ssl_error","status_checked_at":"2026-01-14T18:52:48.501Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2026-01-14T20:43:57.250Z","updated_at":"2026-01-14T20:43:57.948Z","avatar_url":"https://github.com/platform9.png","language":"Go","funding_links":[],"categories":[],"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\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    - [Installing](#installing)\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--limitations)\n  - [Design](#design)\n  - [Questions](#questions)\n\n## Getting Started\n\n### Building\n\n```\ngo get -u github.com/platform9/etcdadm\n```\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.\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\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)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplatform9%2Fetcdadm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fplatform9%2Fetcdadm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplatform9%2Fetcdadm/lists"}