fix(guides): news + guide for docker talos (#35604)

**Description**
<!--
Please include a summary of the change and which issue is fixed. Please
also include relevant motivation and context. List any dependencies that
are required for this change.
-->
⚒️ Fixes  # <!--(issue)-->

**⚙️ Type of change**

- [ ] ⚙️ Feature/App addition
- [ ] 🪛 Bugfix
- [ ] ⚠️ Breaking change (fix or feature that would cause existing
functionality to not work as expected)
- [ ] 🔃 Refactor of current code
- [x] 📜 Documentation Changes

**🧪 How Has This Been Tested?**
<!--
Please describe the tests that you ran to verify your changes. Provide
instructions so we can reproduce. Please also list any relevant details
for your test configuration
-->

**📃 Notes:**
<!-- Please enter any other relevant information here -->

**✔️ Checklist:**

- [ ] ⚖️ My code follows the style guidelines of this project
- [ ] 👀 I have performed a self-review of my own code
- [ ] #️⃣ I have commented my code, particularly in hard-to-understand
areas
- [ ] 📄 I have made changes to the documentation
- [ ] 🧪 I have added tests to this description that prove my fix is
effective or that my feature works
- [ ] ⬆️ I increased versions for any altered app according to semantic
versioning
- [ ] I made sure the title starts with `feat(chart-name):`,
`fix(chart-name):`, `chore(chart-name):`, `docs(chart-name):` or
`fix(docs):`

** App addition**

If this PR is an app addition please make sure you have done the
following.

- [ ] 🖼️ I have added an icon in the Chart's root directory called
`icon.png`

---

_Please don't blindly check all the boxes. Read them and only check
those that apply.
Those checkboxes are there for the reviewer to see what is this all
about and
the status of this PR with a quick glance._

---------

Signed-off-by: Alfred Göppel <43101280+alfi0812@users.noreply.github.com>
Signed-off-by: Kjeld Schouten <info@kjeldschouten.nl>
Co-authored-by: Kjeld Schouten <info@kjeldschouten.nl>
This commit is contained in:
Alfred Göppel
2025-05-29 11:45:48 +02:00
committed by GitHub
parent 1cbbb3d3c7
commit a5ccdf029c
3 changed files with 188 additions and 1 deletions
@@ -0,0 +1,155 @@
---
title: Talos as a Docker-Compose App
---
:::caution[Disclaimer]
This guide is not covered by the Support Policy and some features wont work when running Talos as a dockerfile.
:::
Talos can be run as a docker container. This has a couple of downsides like:
- No system-extensions
- No TalosCTL reset -> restart the containers and/or wipe container storage instead
- Dependance on host-kernel -> host kernel might not be optimised for talos
- No MetalLB -> use ServiceLB or node port instead
- No TalosCTL Upgrade -> update the container instead
- Nvidia GPU Assignment
- Warning spam in container logs that it cant alter bpf related stuff
- CEPH and such can hijack drives -> Be careful!
## Setup Instructions
### Dockerfile
Following you will find a dockerfile on how to run Talos as a docker container.
```yaml
services:
talos-control-1:
container_name: talos-control-1
environment:
- PLATFORM=container
hostname: talos-control-1
image: ghcr.io/siderolabs/talos:v1.10.2
networks:
talosnet:
ipv4_address: 192.168.10.50
privileged: true
read_only: true
tmpfs:
- /run
- /system
- /tmp
volumes:
- /dev/zfs:/dev/zfs
- /mnt/tank/apps/talos/control/system/state:/system/state
- /mnt/tank/apps/talos/control/system/var:/var
- /mnt/tank/apps/talos/control/system/cni:/etc/cni
- /mnt/tank/apps/talos/control/system/kubernetes:/etc/kubernetes
- /mnt/tank/apps/talos/control/system/libexec:/usr/libexec/kubernetes
- /mnt/tank/apps/talos/control/system/opt:/opt
- /mnt/tank/apps/talos/control/data/openebs:/var/openebs/local
talos-worker-1:
container_name: talos-worker-1
environment:
- PLATFORM=container
hostname: talos-worker-1
image: ghcr.io/siderolabs/talos:v1.10.2
networks:
talosnet:
ipv4_address: 192.168.10.51
privileged: true
read_only: true
tmpfs:
- /run
- /system
- /tmp
volumes:
- /dev/zfs:/dev/zfs
- /mnt/tank/apps/talos/worker/system/state:/system/state
- /mnt/tank/apps/talos/worker/system/var:/var
- /mnt/tank/apps/talos/worker/system/cni:/etc/cni
- /mnt/tank/apps/talos/worker/system/kubernetes:/etc/kubernetes
- /mnt/tank/apps/talos/worker/system/libexec:/usr/libexec/kubernetes
- /mnt/tank/apps/talos/worker/system/opt:/opt
- /mnt/tank/apps/talos/worker/data/openebs:/var/openebs/local
networks:
talosnet:
driver: macvlan
driver_opts:
parent: br0
ipam:
driver: default
config:
- subnet: 192.168.10.0/24
gateway: 192.168.10.1
```
### Clustertool
#### talconfig
This modification for your talconfig, should allow for automatic selection of the container NIC.
This is needed for each node defined
```yaml
nodes:
- hostname: talos-control-1
networkInterfaces:
- deviceSelector:
hardwareAddr: "02:*"
```
#### Machineconfig
Running Talos inside a dockerfile requires some modifications to talos machine config:
```yaml
machine:
features:
hostDNS:
enabled: true
forwardKubeDNSToHost: true
```
This either has to be done manually or in a patchfile.
#### Other requirements
After Clustertool bootstrap, be sure to delete/comment-out:
- MetalLB
- Longhorn
## Further testing needed
### ClusterTool compatibility
The able has previously been tested with "normal" useage of `talosctl apply`, on machineconfigs created, and manually altered, using `clustertool genconfig`.
Its not been validated for clustertool bootstrapping as of yet
### Intel GPU support
We assume that doing the volume-forwards to the container like normal for adding intel GPUs to containers, would work fine.
But we've not tested this yet
### OpenEBS ZFS-PV
We assume that the included /dev/zfs forward is going to be enough to even setup OpenEBS ZFS-PV with access to the pool.
But we've not officially tested this.
@@ -2,7 +2,7 @@
slug: "news/puffin-post"
title: "MrPuffins new role"
authors: [privatepuffin]
date: 2025-04-10
date: 2025-05-01
tags:
- "2025"
---
@@ -0,0 +1,32 @@
---
slug: "news/docker-compose-talos"
title: "Truenas-Oriented Talos Docker-Compose"
authors: [alfi0812, privatepuffin]
date: 2025-05-28
tags:
- "2025"
---
## TrueNAS Switches to Incus with Fangtooth Release — VM Support Now Experimental
With the release of TrueNAS SCALE Fangtooth, iXsystems has officially switched its virtualization backend from KVM to Incus.
This transition has introduced several limitations, and VM support is now also labeled as experimental. Leaving users without a stable VM-solution on TrueNAS.
Users have reported performance issues with the new Incus-based VM system,
and some previously supported configurations—such as running VMs with raw-file backed disks
(making use of ZFS small-blocks special-vdevs) — are no longer functional.
Currently, there is no official Incus-Guest-Agent available on Talos, making it difficult for users to control the VM threw TrueNAS UI.
Users have been requesting a Kubernetes solution within the iX-supported Apps/Instances system for quite some time.
Traditional containerization approaches like LXC/LXD or jails were never viable options for us,
as they lack support for Talos and present significant management challenges.
However, after careful testing and evaluation, we've concluded that integrating Talos in container form within the existing Docker Compose-based Apps system presents a compelling solution.
This approach enables users to run Kubernetes on TrueNAS SCALE without the added complexity of virtual machines or the maintenance burden of homegrown setups,
striking a practical balance between performance, simplicity, and native integration.
In light of this, We have reaffirmed our commitment to the TrueNAS community by releasing a new guide
on how to run Talos as a Docker container inside SCALE Apps.
This approach provides a practical alternative for those affected by the VM backend changes,
allowing continued experimentation and development with Talos despite the Incus limitations.
To get started with Talos as a Docker-Compose App following the following [this](/guides/talos/docker).