Talos Linux
Overview
Talos Linux is an operating system for running Kubernetes. Mixtile maintains an experimental port of it for Blade 3 in the mixtile-talos repository.
The Blade 3 port is an alpha release based on Talos v1.7.4, not on the current Talos release. Sidero Labs, the developer of Talos, does not support Blade 3, and the port is not available from the Talos Image Factory.
Download
The current release of the port is v0.2-alpha. Download its image:
Prerequisites
talosctlv1.7.4, to match the Talos version of the image. Newer versions can generate configurations that Talos v1.7.4 does not accept. Download it from the Talos v1.7.4 release, and see the Talos v1.7 documentation for how to install it.kubectl, to use the cluster once it is running.- A serial console, to see the board's IP address and the maintenance messages.
Install
The image is a complete disk image with U-Boot included. Extract metal-arm64.raw from the archive, then write it to the eMMC as described in Flashing an OS Image.
This procedure has not yet been verified with the Talos image.
Bootstrap
The steps below follow the release notes of v0.2-alpha. They have not been verified by running them on a board.
-
Power on Blade 3 and wait until the serial console shows the maintenance-mode messages and the board's IP address.
-
On your computer, generate a configuration. Replace
<node-ip>with the board's IP address:Host PCtalosctl gen config blade3 https://<node-ip>:6443 --install-disk /dev/mmcblk0The cluster endpoint, here
https://<node-ip>:6443, must match the node's IP address, or the virtual IP or DNS name you intend to use for the control plane. -
Apply the control-plane configuration to the board:
Host PCtalosctl apply-config --insecure --nodes <node-ip> --file controlplane.yaml -
Bootstrap the cluster:
Host PCtalosctl --talosconfig ./talosconfig bootstrap --nodes <node-ip> --endpoints <node-ip> -
Retrieve the
kubeconfig:Host PCtalosctl --talosconfig ./talosconfig kubeconfig --nodes <node-ip> --endpoints <node-ip>
If your network needs a proxy to pull container images, set http_proxy, https_proxy and no_proxy in the machine configuration before you apply it.
Build from Source
The build script compiles the Blade 3 kernel and U-Boot and builds Talos v1.7.4, the version the port is based on. The versions are fixed in the script, so do not update them to a newer Talos release.
These steps follow the build script in the main branch of the repository. They have not been tested as written here.
The current build script produces a Talos installer image, not the metal-arm64.raw.xz disk image published in the release. The step that creates the disk image is commented out in build.sh and is not maintained. A self-built installer image cannot be flashed with Flashing an OS Image.
Prerequisites
- An x86_64 computer running Linux, with Docker and the Docker Buildx plugin. The build runs privileged containers.
- A GitHub account and a personal access token with the read:packages and write:packages scopes. The build pushes its container images to the GitHub Container Registry, and it cannot run without pushing.
Log in to the registry:
echo "<token>" | docker login ghcr.io -u <github-username> --password-stdin
Get the source
git clone https://github.com/mixtile-rockchip/mixtile-talos.git
cd mixtile-talos
Configure the build
build.sh sets USERNAME to the GitHub account the images are pushed to. It is set in two places in the script. Change both to your own GitHub user name.
Build
./build.sh
The script downloads the kernel, U-Boot, the Rockchip firmware and the Talos source, builds them in containers, and pushes the resulting images.
Build output
output/_out/installer-arm64.tar, the Talos installer image for Blade 3- The kernel, board overlay, imager and installer images, in
ghcr.io/<github-username>/
Known Limitations
- Only a single-node control plane, with the Flannel network plugin, has been validated. Multi-node clusters have not been tested.
- The port stays on Talos v1.7.4, which no longer receives updates from Sidero Labs.