Настраиваем сетевую загрузку talos

Дополнение к статье Настраиваем сетевую загрузку с помощью mikrotik, ipxe, bios, uefi.

Решил добавить примеры сетевой загрузки для talos.

Intro

Недавно купил себе материнскую плату D1581Q3A. На мой взгляд самая подходящая материнская плата для развертывания тестовых кластеров Kubernetes в домашних условиях. 16 ядер, 64 ГБ памяти, наверное, позволят запустить кластер на одном узле.

Фабрика образов

Talos предоставляет отдельный сервис для сборки и генерации образов.

Я использую этот сервис, чтобы получить Talos с нужными мне драйверами (realtek, coral), с нужными программами (iscsi-tools, util-linux-tools).

Вот пример моего образа:

  customization:
    extraKernelArgs:
        - talos.platform=metal
        - slab_nomerge
        - pti=on
        - init_on_alloc=1/0
        - init_on_free=0/1
    systemExtensions:
        officialExtensions:
            - siderolabs/gasket-driver
            - siderolabs/iscsi-tools
            - siderolabs/realtek-firmware
            - siderolabs/util-linux-tools

После успешной сборки образа, нужно скачать файлы kernel-amd64, initramfs-amd64.xz, положить в /var/www/html/Talos/1.13.8.

Рекомендую для каждой версии создавать отдельный каталог, места они занимают не много. В случае чего, можно удалить и старые версии и файлы.

menu.ipxe

menu.ipxe - это файл в котором мы настраиваем сетевую загрузку.

SKIPPED - это пропущенные части, весь файл целиком можно посмотреть здесь.

#!ipxe

menu
  item --gap -- -------------------------- RockyLinux 8 Installation ----------------------
SKIPPED
  item --gap -- -------------------------- Talos --------------------------
  item talos_netboot Netboot Talos (HTTP)
  item talos_netboot_controlplane Netboot Talos ControlPlane Node (HTTP)
  item talos_netboot_worker Netboot Talos Worker Node (HTTP)
SKIPPED

:talos_netboot
  set osroot Talos/1.13.8
  kernel http://${serverip}/${osroot}/kernel-amd64 \
         console=ttyS0 \
         console=tty0 \
         talos.platform=metal \
         slab_nomerge \
         pti=on \
         init_on_alloc=1/0 \
         init_on_free=0/1
  initrd http://${serverip}/${osroot}/initramfs-amd64.xz
  boot

:talos_netboot_controlplane
  set osroot Talos/1.13.8
  set talosconfig Talos/configs
  kernel http://${serverip}/${osroot}/kernel-amd64 \
         console=ttyS0 \
         console=tty0 \
         talos.platform=metal \
         talos.config=http://${serverip}/${talosconfig}/worker.yaml \
         slab_nomerge \
         pti=on \
         init_on_alloc=1/0 \
         init_on_free=0/1
  initrd http://${serverip}/${osroot}/initramfs-amd64.xz
  boot

:talos_netboot_worker
  set osroot Talos/1.13.8
  set talosconfig Talos/configs
  kernel http://${serverip}/${osroot}/kernel-amd64 \
         console=ttyS0 \
         console=tty0 \
         talos.platform=metal \
         talos.config=http://${serverip}/${talosconfig}/worker.yaml \
         slab_nomerge \
         pti=on \
         init_on_alloc=1/0 \
         init_on_free=0/1
  initrd http://${serverip}/${osroot}/initramfs-amd64.xz
  boot