Edge Kubernetes & Zero-Touch Provisioning›Provisioning · Cheat sheet & self-check

Provisioning · wrap-up

Cheat sheet & self-check

Every command from this section on one page.

04 · Bare-metal provisioning

Redfish (curl)

curl -sku user:pass https://<bmc>/redfish/v1/SystemsList systems (IDs vary by vendor: 1, System.Embedded.1, …)
PATCH …/Systems/<id> {"Boot":{"BootSourceOverrideTarget":"Pxe","BootSourceOverrideEnabled":"Once"}}Boot from network once
POST …/Systems/<id>/Actions/ComputerSystem.Reset {"ResetType":"ForceRestart"}Power cycle
POST …/Managers/<id>/VirtualMedia/<cd>/Actions/VirtualMedia.InsertMedia {"Image":"http://…/boot.iso"}Mount an ISO remotely

IPMI & PXE

ipmitool -I lanplus -H <bmc> -U user -P pass chassis bootdev pxe options=efibootLegacy: boot from network (UEFI)
ipmitool -I lanplus -H <bmc> -U user -P pass power cycleLegacy: power cycle
DHCP option 93 (client arch) → ipxe.efi vs undionly.kpxeServe the right iPXE binary

05 · Tinkerbell & Metal3

Tinkerbell

SmeeDHCP, TFTP and iPXE scripts (formerly Boots)
HookOSIn-memory OS that runs workflow actions (formerly Hook)
Tink server/controller + workerWorkflow engine; workers run actions as containers
TootlesMetadata service for cloud-init (formerly Hegel)
RufioBMC control as Kubernetes resources (Machine, Job, Task)
kubectl get hardware,templates,workflows -AInspect provisioning state

Metal3

Bare Metal Operator + IronicManage hosts through BareMetalHost resources
kubectl get baremetalhosts -AStates: registering → inspecting → available → provisioning → provisioned
bmc.address: redfish-virtualmedia://<bmc>/redfish/v1/Systems/1BMC driver + address
CAPM3Cluster API provider for Metal3

06 · OS image creation

Formats

RAW (.raw.gz / .raw.xz)Streamed straight onto the disk (e.g. image2disk); bare metal
QCOW2VMs, and Ironic can convert/write it
ISOInstaller or live boot via virtual media/USB
qemu-img convert -f qcow2 -O raw in.qcow2 out.rawConvert between formats

Build & first boot

image-builder (kubernetes-sigs) / PackerReproducible node images with Kubernetes components
cloud-init NoCloud: user-data, meta-data, network-configFirst-boot configuration
Ignition (Flatcar, Fedora CoreOS)First-boot provisioning for those OSes
sha256sum image.raw.gz > image.raw.gz.sha256; cosign sign-blob …Checksum and sign images

07 · Air-gapped delivery

Moving artifacts

skopeo copy --all docker://registry.k8s.io/pause:3.10 docker://harbor.local/mirror/pause:3.10Copy an image (all architectures)
skopeo copy --all docker://… oci-archive:bundle/pause.tarImage to a file for transfer
helm pull oci://… --version X && helm push chart-X.tgz oci://harbor.local/chartsMirror a Helm chart
oras copy <src> <dst>Copy any OCI artifact (SBOMs, signatures, files)

Pointing nodes at mirrors

/etc/rancher/rke2/registries.yaml (mirrors + configs)RKE2/K3s mirror configuration
registryMirrorConfiguration (EKS Anywhere cluster spec)EKS-A mirror + CA
containerd: /etc/containerd/certs.d/<registry>/hosts.tomlPlain containerd mirror config