etcd's (and similar systems) leader election is needfully complicated. However, you can _leverage_ etcd to much more simply implement your own leader/master system. For most cases, a simple CAS (check-and-set) is sufficient.
An example from one of my systems:
1) Each node of a certain classification runs "redis"
2) Each node which runs "redis" runs "redisd" (a sidekick process)
3) "redisd" watches an etcd key (i.e. "/redis/master")
4) If/when "/redis/master" is not defined, "redisd" will CAS it to itself
5) If "/redis/master" changes, "redisd" will set its associated "redis" instance with the correct new master
In this situation, etcd performs all of the cluster-level synchonization required. You are guaranteed that only one request for master will succeed.
Of course, if you are running fleet, there is an even easier way: just tell fleet to run one instance of your "master" service. Again, etcd will be doing the heavy lifting, and fleet will handle the "one and only one" part. You can still have sidekick processes for announcements (or simple ExecStartPost statements in your primary units).