I maintain a fork of the official Fedora KIWI descriptions to build custom cloud images tailored for my infrastructure needs.
Repository: github.com/jbweber/fedora-kiwi-descriptions
Why Custom Images?
The official Fedora cloud images are fine, but I wanted an image that works well both as a cloud VM and on bare metal nodes for provisioning with Metal3 and Cluster API.
Profiles
Cloud-Base-Generic-EXT4
A standard Fedora cloud image using EXT4 instead of btrfs.
What you get:
- Fedora 43 cloud image (~1.56 GB installed, ~704 MB qcow2)
- 5GB virtual disk (qcow2 format, sparse/optimized)
- UEFI boot with GRUB2
- cloud-init support
- qemu-guest-agent for VM integration
- Hardware firmware support (linux-firmware)
- CPU microcode updates (Intel/AMD)
Disk layout:
/dev/vda1 - EFI System Partition (100MB, FAT32)
/dev/vda2 - /boot (2GB, ext4)
/dev/vda3 - / root (remaining space, ext4)
Cloud-Base-K8s-EXT4
Kubernetes-ready cloud image, pre-configured for immediate cluster deployment.
Includes everything from Cloud-Base-Generic-EXT4, plus:
- Kubernetes 1.34: kubelet, kubeadm, kubectl
- containerd 1.34: Container runtime
- Pre-configured kernel modules (
overlay,br_netfilter) - Sysctl settings for bridge netfilter and IP forwarding
- containerd config with proper CNI plugin paths
- Ready to run
kubeadm initafter first boot
CNI plugin paths:
/usr/libexec/cni- System-provided immutable plugins/var/lib/cni/bin- Writable location for additional CNI plugins (Flannel, Calico, Cilium)/opt/cni/bin- Compatibility symlink to/var/lib/cni/bin
Building
See the repository README for build instructions and testing.