Skip to content

Commit 5dec8c2

Browse files
committed
docs: add what's new and documentation for Talos 1.5
* SecureBoot * TPM disk encryption * KubePrism * Boot Asset Generation Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com> (cherry picked from commit daa4c18)
1 parent bd44bf0 commit 5dec8c2

File tree

12 files changed

+632
-38
lines changed

12 files changed

+632
-38
lines changed

pkg/imager/profile/default.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,14 @@ var Default = map[string]Profile{
6464
},
6565
},
6666
},
67+
"installer": {
68+
Platform: "metal",
69+
SecureBoot: pointer.To(false),
70+
Output: Output{
71+
Kind: OutKindInstaller,
72+
OutFormat: OutFormatRaw,
73+
},
74+
},
6775
"secureboot-installer": {
6876
Platform: "metal",
6977
SecureBoot: pointer.To(true),

website/content/v1.4/_index.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ no_list: true
44
linkTitle: "Documentation"
55
cascade:
66
type: docs
7-
lastRelease: v1.4.4
8-
kubernetesRelease: "1.27.1"
7+
lastRelease: v1.4.7
8+
kubernetesRelease: "1.27.4"
99
prevKubernetesRelease: "1.26.3"
1010
theilaRelease: "v0.2.1"
1111
nvidiaContainerToolkitRelease: "v1.12.1"

website/content/v1.5/_index.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ no_list: true
44
linkTitle: "Documentation"
55
cascade:
66
type: docs
7-
lastRelease: v1.5.0-alpha.0
7+
lastRelease: v1.5.0-beta.0
88
kubernetesRelease: "1.28.0"
99
prevKubernetesRelease: "1.27.1"
1010
theilaRelease: "v0.2.1"
11-
nvidiaContainerToolkitRelease: "v1.12.1"
12-
nvidiaDriverRelease: "530.41.03"
11+
nvidiaContainerToolkitRelease: "v1.13.5"
12+
nvidiaDriverRelease: "535.54.03"
1313
iscsiToolsRelease: "v0.1.4"
1414
preRelease: true
1515
---

website/content/v1.5/advanced/building-images.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
2-
title: "Building Talos Images"
3-
description: "How to build Talos images from source."
2+
title: "Building Custom Talos Images"
3+
description: "How to build a custom Talos image from source."
44
---
55

66
There might be several reasons to build Talos images from source:

website/content/v1.5/introduction/support-matrix.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,21 @@ description: "Table of supported Talos Linux versions and respective platforms."
66

77
| Talos Version | 1.5 | 1.4 |
88
|----------------------------------------------------------------------------------------------------------------|------------------------------------|------------------------------------|
9-
| Release Date | 2023-08-15, TBD | 2023-04-18 (1.4.0) |
10-
| End of Community Support | 1.6.0 release (2023-12-15, TBD) | 1.5.0 release (2023-08-15, TBD) |
9+
| Release Date | 2023-08-17, TBD | 2023-04-18 (1.4.0) |
10+
| End of Community Support | 1.6.0 release (2023-12-15, TBD) | 1.5.0 release (2023-08-17, TBD) |
1111
| Enterprise Support | [offered by Sidero Labs Inc.](https://www.siderolabs.com/support/) | [offered by Sidero Labs Inc.](https://www.siderolabs.com/support/) |
1212
| Kubernetes | 1.28, 1.27, 1.26 | 1.27, 1.26, 1.25 |
1313
| Architecture | amd64, arm64 | amd64, arm64 |
1414
| **Platforms** | | |
1515
| - cloud | AWS, GCP, Azure, Digital Ocean, Exoscale, Hetzner, OpenStack, Oracle Cloud, Scaleway, Vultr, Upcloud | AWS, GCP, Azure, Digital Ocean, Exoscale, Hetzner, OpenStack, Oracle Cloud, Scaleway, Vultr, Upcloud |
16-
| - bare metal | x86: BIOS, UEFI; arm64: UEFI; boot: ISO, PXE, disk image | x86: BIOS, UEFI; arm64: UEFI; boot: ISO, PXE, disk image |
16+
| - bare metal | x86: BIOS, UEFI, SecureBoot; arm64: UEFI, SecureBoot; boot: ISO, PXE, disk image | x86: BIOS, UEFI; arm64: UEFI; boot: ISO, PXE, disk image |
1717
| - virtualized | VMware, Hyper-V, KVM, Proxmox, Xen | VMware, Hyper-V, KVM, Proxmox, Xen |
1818
| - SBCs | Banana Pi M64, Jetson Nano, Libre Computer Board ALL-H3-CC, Nano Pi R4S, Pine64, Pine64 Rock64, Radxa ROCK Pi 4c, Raspberry Pi 4B, Raspberry Pi Compute Module 4 | Banana Pi M64, Jetson Nano, Libre Computer Board ALL-H3-CC, Nano Pi R4S, Pine64, Pine64 Rock64, Radxa ROCK Pi 4c, Raspberry Pi 4B, Raspberry Pi Compute Module 4 |
1919
| - local | Docker, QEMU | Docker, QEMU |
2020
| **Cluster API** | | |
21-
| [CAPI Bootstrap Provider Talos](https://github.com/siderolabs/cluster-api-bootstrap-provider-talos) | >= 0.6.0 | >= 0.5.6 |
21+
| [CAPI Bootstrap Provider Talos](https://github.com/siderolabs/cluster-api-bootstrap-provider-talos) | >= 0.7.0 | >= 0.6.0 |
2222
| [CAPI Control Plane Provider Talos](https://github.com/siderolabs/cluster-api-control-plane-provider-talos) | >= 0.4.10 | >= 0.4.10 |
23-
| [Sidero](https://www.sidero.dev/) | >= 0.6.0 | >= 0.5.7 |
23+
| [Sidero](https://www.sidero.dev/) | >= 0.6.0 | >= 0.6.0 |
2424

2525
## Platform Tiers
2626

website/content/v1.5/introduction/what-is-new/index.md

Lines changed: 161 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,164 @@ description: "List of new and shiny features in Talos Linux."
66

77
See also [upgrade notes]({{< relref "../../talos-guides/upgrading-talos/">}}) for important changes.
88

9-
TBD
9+
## Predictable Network Interface Names
10+
11+
Starting with version Talos 1.5, network interfaces are renamed to [predictable names](https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/)
12+
same way as `systemd` does that in other Linux distributions.
13+
14+
The naming schema `enx78e7d1ea46da` (based on MAC addresses) is enabled by default, the order of interface naming decisions is:
15+
16+
* firmware/BIOS provided index numbers for on-board devices (example: `eno1`)
17+
* firmware/BIOS provided PCI Express hotplug slot index numbers (example: `ens1`)
18+
* physical/geographical location of the connector of the hardware (example: `enp2s0`)
19+
* interfaces's MAC address (example: `enx78e7d1ea46da`)
20+
21+
The predictable network interface names features can be disabled by specifying `net.ifnames=0` in the kernel command line.
22+
Talos automatically adds the `net.ifnames=0` kernel argument when upgrading from Talos versions before 1.5, so upgrades to 1.5 don't require any manual intervention.
23+
24+
This change doesn't affect "cloud" platforms, like AWS, as Talos automatically adds `net.ifnames=0` to the kernel command line.
25+
26+
## SecureBoot
27+
28+
Talos now supports booting on UEFI systems in [SecureBoot]({{< relref "../../talos-guides/install/bare-metal-platforms/secureboot" >}}) mode.
29+
When combined with TPM-based disk encryption, this provides Trusted Boot experience.
30+
31+
## Boot Assets Generation
32+
33+
Talos provides [a new unified way]({{< relref "../../talos-guides/install/boot-assets" >}}) to generate various boot assets, including ISOs, disk images, PXE boot files, installer container images etc., which can be
34+
further customized with system extensions, extra kernel arguments.
35+
36+
## Kubernetes
37+
38+
### KubePrism - Kubernetes API Server In-Cluster Load Balancer
39+
40+
Talos now supports configuring the [KubePrism]({{< relref "../../kubernetes-guides/configuration/kubeprism">}}) - Kubernetes API Server in-cluster load balancer with machine config
41+
`features.kubePrism.port` and `features.kubePrism.enabled` fields.
42+
43+
If enabled, KubePrism binds to `localhost` and runs on the same port on every machine in the cluster.
44+
The default value for KubePrism endpoint is https://localhost:7445.
45+
46+
The KubePrism is used by the `kubelet`, `kube-scheduler`, `kube-controller-manager`
47+
and `kube-proxy` by default and can be passed to the CNIs like Cilium and Calico.
48+
49+
The KubePrism provides access to the Kubernetes API endpoint even if the external loadbalancer
50+
is not healthy, provided that the worker nodes can reach to the controlplane machine addresses directly.
51+
52+
### XFS Quota
53+
54+
Talos 1.5+ enables XFS project quota support by default, also enabling by default
55+
kubelet feature gate `LocalStorageCapacityIsolationFSQuotaMonitoring` to use xfs quotas
56+
to monitor volume usage instead of `du`.
57+
58+
This feature is controlled by the `.machine.features.diskQuotaSupport` field in the machine config,
59+
it is set to true for new clusters.
60+
61+
When upgrading from a previous version, the feature can be enabled by setting the field to true.
62+
On the first mount of a volume, the quota information will be recalculated, which may take some time.
63+
64+
## System Extensions
65+
66+
### Installing System Extensions
67+
68+
The way to install system extensions on the machine using `machine.install.extensions` machine configuration option is now deprecated,
69+
please use instead [the boot asset generation process]({{< relref "../../talos-guides/install/boot-assets" >}}) to create an image with system extension pre-installed.
70+
71+
### Extension Services
72+
73+
Talos now supports setting `environmentFile` for an [extension service container spec]({{< relref "../../advanced/extension-services/#container" >}}).
74+
The extension waits for the file to be present before starting the service.
75+
76+
## Disk Encryption
77+
78+
### TPM-based Disk Encryption
79+
80+
Talos now supports encrypting `STATE`/`EPHEMERAL` with [keys bound to a TPM device]{{< relref "../../talos-guides/install/bare-metal-platforms/secureboot" >}}().
81+
The TPM device must be TPM2.0 compatible.
82+
This type of disk encryption should be used when booting Talos in SecureBoot mode.
83+
84+
Example machine config:
85+
86+
```yaml
87+
machine:
88+
systemDiskEncryption:
89+
ephemeral:
90+
provider: luks2
91+
keys:
92+
- slot: 0
93+
tpm: {}
94+
state:
95+
provider: luks2
96+
keys:
97+
- slot: 0
98+
tpm: {}
99+
```
100+
101+
### Network KMS Disk Encryption
102+
103+
Talos now supports new type of encryption keys which are sealed/unsealed with an external KMS server:
104+
105+
```yaml
106+
machine:
107+
systemDiskEncryption:
108+
ephemeral:
109+
provider: luks2
110+
keys:
111+
- kms:
112+
endpoint: https://1.2.3.4:443
113+
slot: 0
114+
```
115+
116+
gRPC API definitions and a simple reference implementation of the KMS server can be found in this
117+
[repository](https://github.com/siderolabs/kms-client/blob/main/cmd/kms-server/main.go).
118+
119+
## Container Images
120+
121+
### `talosctl image` Command
122+
123+
A new set of commands was introduced to manage container images in the CRI:
124+
125+
* `talosctl image list` shows list of available images
126+
* `talosctl image pull` allows to pre-pull an image into the CRI
127+
128+
Both new commands accept `--namespace` flag with two possible values:
129+
130+
* `cri` (default): images managed by the CRI (Kubernetes workloads)
131+
* `system`: images managed by Talos (`etcd` and `kubelet`)
132+
133+
### `talosctl upgrade-k8s` Image Pre-pulling
134+
135+
The command `talosctl upgrade-k8s` now by default pre-pulls images for Kubernetes controlplane components
136+
and kubelet.
137+
This provides an early check for missing images, and minimizes downtime during Kubernetes
138+
rolling component update.
139+
140+
## Component Updates
141+
142+
* Linux: 6.1.42
143+
* containerd: 1.6.22
144+
* runc: 1.1.8
145+
* etcd: 3.5.9
146+
* Kubernetes: 1.28.0-rc.0
147+
* Flannel: 0.22.1
148+
149+
Talos is built with Go 1.20.7.
150+
151+
Talos now builds many device drivers as kernel modules in the x86 Linux kernel, which get automatically loaded on boot based on the hardware detected.
152+
153+
## Deprecations
154+
155+
### Machine Configuration Option `.machine.install.bootloader`
156+
157+
The `.machine.install.bootloader` option in the machine config is deprecated and will be removed in Talos 1.6.
158+
This was a no-op for a long time: the bootloader is always installed.
159+
160+
### RDMA/RoCE support
161+
162+
Talos no longer loads by default `rdma_rxe` Linux driver, which is required for RoCE support.
163+
If the driver is required, it can be enabled by specifying `rdma_rxe` in the `.machine.kernel.modules` field in the machine config.
164+
165+
### `talosctl images` Command
166+
167+
The command `talosctl images` was renamed to `talosctl image default`.
168+
169+
The backward-compatible alias is kept in Talos 1.5, but it will be dropped in Talos 1.6.
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
---
2+
title: "KubePrism"
3+
description: "Enabling in-cluster highly-available controlplane endpoint."
4+
---
5+
6+
Kubernetes pods running in CNI mode can use the `kubernetes.default.svc` service endpoint to access the Kubernetes API server,
7+
while pods running in host networking mode can only use the external cluster endpoint to access the Kubernetes API server.
8+
9+
Kubernetes controlplane components run in host networking mode, and it is critical for them to be able to access the Kubernetes API server,
10+
same as CNI components (when CNI requires access to Kubernetes API).
11+
12+
The external cluster endpoint might be unavailable due to misconfiguration or network issues, or it might have higher latency than the internal endpoint.
13+
A failure to access the Kubernetes API server might cause a series of issues in the cluster: pods are not scheduled, service IPs stop working, etc.
14+
15+
KubePrism feature solves this problem by enabling in-cluster highly-available controlplane endpoint on every node in the cluster.
16+
17+
## Enabling KubePrism
18+
19+
> As of Talos 1.5, KubePrism is not enabled by default.
20+
21+
To enable KubePrism, apply the following machine config patch either during the machine config generation, or to a running cluster (the patch should be applied to all nodes):
22+
23+
```yaml
24+
machine:
25+
features:
26+
kubeprism:
27+
enabled: true
28+
port: 7445
29+
```
30+
31+
> Note: the `port` specified should be available on every node in the cluster.
32+
33+
## How it works
34+
35+
Talos spins up a TCP loadbalancer on every machine on the `localhost` on the specified port which automatically picks up one of the endpoints:
36+
37+
* the external cluster endpoint as specified in the machine configuration
38+
* for controlplane machines: `https://localhost:<api-server-local-port>` (`http://localhost:6443` in the default configuration)
39+
* `https://<controlplane-address>:<api-server-port>` for every controlplane machine (based on the information from [Cluster Discovery]({{< relref "../../talos-guides/discovery" >}}))
40+
41+
KubePrism automatically filters out unhealthy (or unreachable) endpoints, and prefers lower-latency endpoints over higher-latency endpoints.
42+
43+
Talos automatically reconfigures `kubelet`, `kube-scheduler` and `kube-controller-manager` to use the KubePrism endpoint.
44+
The `kube-proxy` manifest is also reconfigured to use the KubePrism endpoint by default, but when enabling KubePrism for a running cluster the manifest should be updated
45+
with `talosctl upgrade-k8s` command.
46+
47+
When using CNI components that require access to the Kubernetes API server, the KubePrism endpoint should be passed to the CNI configuration (e.g. Cilium, Calico CNIs).
48+
49+
## Notes
50+
51+
As the list of endpoints for KubePrism includes the external cluster endpoint, KubePrism in the worst case scenario will behave the same as the external cluster endpoint.
52+
For controlplane nodes, the KubePrism should pick up the `localhost` endpoint of the `kube-apiserver`, minimizing the latency.
53+
Worker nodes might use direct address of the controlplane endpoint if the latency is lower than the latency of the external cluster endpoint.
54+
55+
KubePrism listen endpoint is bound to `localhost` address, so it can't be used outside the cluster.

website/content/v1.5/talos-guides/configuration/system-extensions.md

Lines changed: 3 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -11,32 +11,11 @@ container runtimes, loading additional firmware, etc.
1111
System extensions are only activated during the installation or upgrade of Talos Linux.
1212
With system extensions installed, the Talos root filesystem is still immutable and read-only.
1313

14-
## Configuration
14+
## Installing System Extensions
1515

16-
System extensions are configured in the `.machine.install` section:
16+
> Note: the way to install system extensions in the `.machine.install` section of the machine configuration is now deprecated.
1717
18-
```yaml
19-
machine:
20-
install:
21-
extensions:
22-
- image: ghcr.io/siderolabs/gvisor:33f613e
23-
```
24-
25-
During the initial install (e.g. when PXE booting or booting from an ISO), Talos will pull down container images for system extensions,
26-
validate them, and include them into the Talos `initramfs` image.
27-
System extensions will be activated on boot and overlaid on top of the Talos root filesystem.
28-
29-
In order to update the system extensions for a running instance, update `.machine.install.extensions` and upgrade Talos.
30-
(Note: upgrading to the same version of Talos is fine).
31-
32-
## Building a Talos Image with System Extensions
33-
34-
System extensions can be installed into the Talos disk image (e.g. AWS AMI or VMWare OVF) by running the following command to generate the image
35-
from the Talos source tree:
36-
37-
```sh
38-
make image-metal IMAGER_SYSTEM_EXTENSIONS="ghcr.io/siderolabs/amd-ucode:20220411 ghcr.io/siderolabs/gvisor:20220405.0-v1.0.0-10-g82b41ad"
39-
```
18+
A custom boot image of Talos can be generated with
4019

4120
## Authoring System Extensions
4221

website/content/v1.5/talos-guides/install/bare-metal-platforms/iso.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,8 @@ Please follow the [getting started guide]({{< relref "../../../introduction/gett
1414
> The boot order should prefer disk over ISO, or the ISO should be removed after the installation to make Talos boot from disk.
1515
1616
See [kernel parameters reference]({{< relref "../../../reference/kernel" >}}) for the list of kernel parameters supported by Talos.
17+
18+
There are two flavors of ISO images available:
19+
20+
* `metal-<arch>.iso` supports booting on BIOS and UEFI systems (for x86, UEFI only for arm64)
21+
* `secureboot-metal-<arch>.iso` supports booting on only UEFI systems in SecureBoot mode

0 commit comments

Comments
 (0)