---
abstract: Where we will begin and the first steps to be taken.
author: Xander Harris
blogpost: true
category: Preparation
date: 2025-06-23
tags: etcd, prep
title: Existing infrastructure with quick and dirty etcd
---

Before we start installing software we'll define our starting point.

## Requirements

The work documented here assumes that requires 4 otherwise-unused PCs, each
running {term}`ArchLinux` and connected to a local area network with
known IP addresses that can be controlled by the administrator. The control
plane node will ideally have more capacity than the worker nodes, but all four
may be the same so long as the
[minimum hardware requirements](https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/#before-you-begin)
summed with the
[minimum requirements](https://etcd.io/docs/v3.6/op-guide/hardware/)
are met by the control plane node. Fortunately these
are not especially demanding and we're not doing heavy workloads with
the cluster, so the
[Lenovo M910q](https://www.amazon.com/dp/B09RFFYCRK?ref=ppx_yo2ov_dt_b_fed_asin_title&th=1)
that was ordered for this purpose will do just fine.

There are two methods of deploying {term}`etcd` for the purposes of
Bare Metal {term}`Kubernetes`, as a separate cluster or as a workload
in the cluster itself. Either method requires that the control plane node
also supports the {term}`etcd` deployment and based on previous experience,
the author thinks it wise to keep the {term}`etcd` deployment separate from the
{term}`Kubernetes` services for the sake of easy management.

## Quick and dirty etcd

The shortest path to a running single-node {term}`etcd` service is to simply
install the package with {term}`yay` or {term}`makepkg` then start and enable
the service on the node that will be running it.

1. Install the service.
   1. With {term}`yay`.

      ```{code-block} shell
      yay -S etcd
      ```

   2. With {term}`makepkg`.

      ```{code-block} shell
      git clone https://aur.archlinux.org/etcd-bin.git Documents/src/aur.archlinux.org/etcd-bin
      cd Documents/src/aur.archlinux.org/etcd-bin
      makepkg -si
      ```

2. Enable and start {term}`etcd`.

   ```{code-block} shell
   systemctl enable --now etcd
   ```

This is obviously bad practice as none of this infrastructure has been defined
in a declarative fashion, but it does produce a running {term}`etcd` service on
the control plane node.

Now that we've done the preparation manually, we can move on to automating
the process.

<!-- vim: set colorcolumn=80: -->
