Skip to content

Commit

Permalink
docs: update documentation for Talos 1.4
Browse files Browse the repository at this point in the history
Updated documentation, what's new, etc.

Also fix some minor UI issues in the dashboard.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
(cherry picked from commit 8689bef)
  • Loading branch information
smira committed Apr 18, 2023
1 parent 5d9c7ea commit b18da07
Show file tree
Hide file tree
Showing 16 changed files with 341 additions and 22 deletions.
6 changes: 2 additions & 4 deletions internal/pkg/dashboard/dashboard.go
Original file line number Diff line number Diff line change
Expand Up @@ -195,10 +195,8 @@ func buildDashboard(ctx context.Context, cli *client.Client, opts ...Option) (*D
dashboard.selectNodeByIndex(dashboard.selectedNodeIndex + 1)

return nil
case event.Key() == tcell.KeyCtrlC:
if defOptions.allowExitKeys {
dashboard.app.Stop()
}
case defOptions.allowExitKeys && (event.Key() == tcell.KeyCtrlC || event.Rune() == 'q'):
dashboard.app.Stop()

return nil
}
Expand Down
8 changes: 8 additions & 0 deletions internal/pkg/dashboard/networkconfig.go
Original file line number Diff line number Diff line change
Expand Up @@ -116,12 +116,20 @@ func NewNetworkConfigGrid(ctx context.Context, dashboard *Dashboard) *NetworkCon
widget.interfaceDropdown.SetOptions([]string{interfaceNone}, func(_ string, _ int) {
widget.formEdited()
})
widget.interfaceDropdown.SetListStyles(
tcell.StyleDefault.Foreground(tview.Styles.PrimitiveBackgroundColor).Background(tview.Styles.MoreContrastBackgroundColor),
tcell.StyleDefault.Foreground(tcell.ColorBlack).Background(tview.Styles.PrimaryTextColor),
)

widget.modeDropdown = tview.NewDropDown().SetLabel(formItemMode)
widget.modeDropdown.SetBlurFunc(widget.formEdited)
widget.modeDropdown.SetOptions([]string{ModeDHCP, ModeStatic}, func(_ string, _ int) {
widget.formEdited()
})
widget.modeDropdown.SetListStyles(
tcell.StyleDefault.Foreground(tview.Styles.PrimitiveBackgroundColor).Background(tview.Styles.MoreContrastBackgroundColor),
tcell.StyleDefault.Foreground(tcell.ColorBlack).Background(tview.Styles.PrimaryTextColor),
)

widget.addressesField = tview.NewInputField().SetLabel(formItemAddresses)
widget.addressesField.SetBlurFunc(widget.formEdited)
Expand Down
1 change: 0 additions & 1 deletion website/content/v1.3/learn-more/philosophy.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,6 @@ it forms.

This is achievable because Talos is tightly focused to do one thing: run
Kubernetes, in the easiest, most secure, most reliable way it can.
/Users/stevefrancis/workspace/talos/website/content/v1.3/learn-more

## Not based on X distro

Expand Down
10 changes: 5 additions & 5 deletions website/content/v1.4/introduction/support-matrix.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ description: "Table of supported Talos Linux versions and respective platforms."

| Talos Version | 1.4 | 1.3 |
|----------------------------------------------------------------------------------------------------------------|------------------------------------|------------------------------------|
| Release Date | 2023-03-15 | 2022-12-15 (1.3.0) |
| End of Community Support | 1.5.0 release (2023-06-15, TBD) | 1.3.0 release (2022-12-15) |
| Release Date | 2023-04-18 | 2022-12-15 (1.3.0) |
| End of Community Support | 1.5.0 release (2023-08-15) | 1.4.0 release (2023-04-18) |
| Enterprise Support | [offered by Sidero Labs Inc.](https://www.siderolabs.com/support/) | [offered by Sidero Labs Inc.](https://www.siderolabs.com/support/) |
| Kubernetes | 1.27, 1.26, 1.22 | 1.26, 1.25, 1.24 |
| Kubernetes | 1.27, 1.26, 1.25 | 1.26, 1.25, 1.24 |
| Architecture | amd64, arm64 | amd64, arm64 |
| **Platforms** | | |
| - 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 |
Expand All @@ -18,9 +18,9 @@ description: "Table of supported Talos Linux versions and respective platforms."
| - 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 |
| - local | Docker, QEMU | Docker, QEMU |
| **Cluster API** | | |
| [CAPI Bootstrap Provider Talos](https://github.com/siderolabs/cluster-api-bootstrap-provider-talos) | >= 0.5.6 | >= 0.5.6 |
| [CAPI Bootstrap Provider Talos](https://github.com/siderolabs/cluster-api-bootstrap-provider-talos) | >= 0.6.0 | >= 0.5.6 |
| [CAPI Control Plane Provider Talos](https://github.com/siderolabs/cluster-api-control-plane-provider-talos) | >= 0.4.10 | >= 0.4.10 |
| [Sidero](https://www.sidero.dev/) | >= 0.5.7 | >= 0.5.7 |
| [Sidero](https://www.sidero.dev/) | >= 0.6.0 | >= 0.5.7 |

## Platform Tiers

Expand Down
9 changes: 0 additions & 9 deletions website/content/v1.4/introduction/what-is-new.md

This file was deleted.

170 changes: 170 additions & 0 deletions website/content/v1.4/introduction/what-is-new/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,170 @@
---
title: What's New in Talos 1.4
weight: 50
description: "List of new and shiny features in Talos Linux."
---

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

## Interactive Dashboard

Talos now starts a text-based [UI dashboard]({{< relref "../../talos-guides/interactive-dashboard" >}}) on virtual console `/dev/tty2` and switches to it by default upon boot.
Kernel logs remain available on `/dev/tty1`.

To switch between virtual TTYs, use the `Alt+F1` and `Alt+F2` keys.

You can disable this new feature by setting the kernel parameter `talos.dashboard.disabled=1`.
The dashboard is disabled by default on SBCs to limit resource usage.

The output to the serial console is not affected by this change.

{{< imgproc "interactive-dashboard-2.png" Fit "920x920" >}}
Interactive Dashboard on QEMU VM
{{< /imgproc >}}

## Boot Process

Talos now ships with the latest Linux LTS kernel 6.1.x.

### GRUB Menu Wipe Options

Talos ISO GRUB menu now an includes an option to wipe completely a Talos installed on a system disk.

Talos GRUB menu for a system disk boot now includes an option to wipe `STATE` and `EPHEMERAL` partition returning the
machine to the maintenance mode.

### Kernel Modules

Talos now automatically loads kernel drivers built as modules.
If any system extensions or the Talos base kernel build provides kernel modules and if they matches the system hardware (via PCI IDs), they will be loaded automatically.
Modules can still be loaded explicitly by defining it in [machine configuration](https://www.talos.dev/v1.4/reference/configuration/#kernelconfig).

At the moment only a small subset of device drivers is built as modules, but we plan to expand this list in the future.

### Kernel Modules Tree

Talos now supports re-building the kernel modules dependency tree information on upgrades.
This allows modules of same name to co-exist as in-tree and external modules.
System Extensions can provide modules installed into `extras` directory and when loading it'll take precedence over the in-tree module.

### Kernel Argument `talos.environment`

Talos now supports passing environment variables via `talos.environment` kernel argument.

Example:

```text
talos.environment=http_proxy=http://proxy.example.com:8080 talos.environment=https_proxy=http://proxy.example.com:8080
```

### Kernel Argument `talos.experimental.wipe`

Talos now supports specifying a list of system partitions to be wiped in the `talos.experimental.wipe` kernel argument.

```text
`talos.experimental.wipe=system:EPHEMERAL,STATE`
```

## Networking

### Bond Device Selectors

Bond links can now be described using device selectors instead of explicit device names:

```yaml
machine:
network:
interfaces:
- interface: bond0
bond:
deviceSelectors:
- hardwareAddr: '00:50:56:*'
- hardwareAddr: '00:50:57:9c:2c:2d'
```
### VLAN Machine Configuration
Strategic merge config patches now correctly support merging `.vlans` sections of the network interface.

## `talosctl` CLI

### `talosctl etcd`

Talos adds new APIs to make it easier to perform etcd maintenance operations.

These APIs are available via new `talosctl etcd` sub-commands:

* `talosctl etcd alarm list|disarm`
* `talosctl etcd defrag`
* `talosctl etcd status`

See also [etcd maintenance guide]({{< relref "../../advanced/etcd-maintenance " >}}).

### `talosctl containers`

`talosctl logs -k` and `talosctl containers -k` now support and output container display names with their ids.
This allows to distinguish between containers with the same name.

### `talosctl dashboard`

A dashboard now shows same information as interactive console (see above), but in a remote way over the Talos API:

{{< imgproc "talos-dashboard.png" Fit "920x600" >}}
talosctl dashboard CLI
{{< /imgproc >}}

Previous monitoring screen can be accessed by using `<F2>` key.

### `talosctl logs`

An issue was fixed which might lead to the log output corruption in the CLI under certain conditions.

### `talosctl netstat`

Talos API was extended to support retrieving a list of network connections (sockets) from the node and pods.
`talosctl netstat` command was added to retrieve the list of network connections.

### `talosctl reset`

Talos now supports resetting user disks through the Reset API,
the list of disks to wipe can be passed using the `--user-disks-to-wipe` flag to the `talosctl reset` command.

## Miscellaneous

### Registry Mirror Catch-All Option

Talos now supports a catch-all option for registry mirrors:

```yaml
machine:
registries:
mirrors:
docker.io:
- https://registry-1.docker.io/
"*":
- https://my-registry.example.com/
```

### Talos API `os:operator` role

Talos now supports a new `os:operator` role for the Talos API.
This role allows everything `os:reader` role allows plus access to maintenance APIs:
rebooting, shutting down a node, accessing packet capture, etcd alarm APIs, etcd backup, etc.

### VMware Platform

Talos now supports loading network configuration on VMWare platform from the `metadata` key.
See [CAPV IPAM Support](https://github.com/kubernetes-sigs/cluster-api-provider-vsphere/blob/main/docs/proposal/20220929-ipam-support.md) and
[Talos issue 6708](https://github.com/siderolabs/talos/issues/6708) for details.

## Component Updates

* Linux: 6.1.24
* containerd: v1.6.20
* runc: v1.1.5
* Kubernetes: v1.27.1
* etcd: v3.5.8
* CoreDNS: v1.10.1
* Flannel: v0.21.4

Talos is built with Go 1.20.3.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 0 additions & 1 deletion website/content/v1.4/learn-more/philosophy.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,6 @@ it forms.

This is achievable because Talos is tightly focused to do one thing: run
Kubernetes, in the easiest, most secure, most reliable way it can.
/Users/stevefrancis/workspace/talos/website/content/v1.3/learn-more

## Not based on X distro

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
---
title: "Network Configuration"
description: "In this guide we will describe how network can be configured on bare-metal platforms."
---

By default, Talos will run DHCP client on all interfaces which have a link, and that might be enough for most of the cases.
If some advanced network configuration is required, it can be done via the [machine configuration]({{< relref "../../../reference/configuration" >}}) file.

But sometimes it is required to apply network configuration even before the machine configuration can be fetched from the network.

## Kernel Command Line

Talos supports some kernel command line parameters to configure network before the machine configuration is fetched.

> Note: Kernel command line parameters are not persisted after Talos installation, so proper network configuration should be done via the machine configuration.
Address, default gateway and DNS servers can be configured via `ip=` kernel command line parameter:

```text
ip=172.20.0.2::172.20.0.1:255.255.255.0::eth0.100:::::
```

Bonding can be configured via `bond=` kernel command line parameter:

```text
bond=bond0:eth0,eth1:balance-rr
```

VLANs can be configured via `vlan=` kernel command line parameter:

```text
vlan=eth0.100:eth0
```

See [kernel parameters reference]({{< relref "../../../reference/kernel" >}}) for more details.

### Platform Network Configuration

Some platforms (e.g. AWS, Google Cloud, etc.) have their own network configuration mechanisms, which can be used to perform the initial network configuration.
There is no such mechanism for bare-metal platforms, so Talos provides a way to use platform network config on the `metal` platform to submit the initial network configuration.

The platform network configuration is a YAML document which contains resource specifications for various network resources.
For the `metal` platform, the [interactive dashboard]({{< relref "../../interactive-dashboard" >}}) can be used to edit the platform network configuration.

The current value of the platform network configuration can be retrieved using the `MetaKeys` resource (key `0xa`):

```bash
talosctl get meta 0xa
```

The platform network configuration can be updated using the `talosctl meta` command for the running node:

```bash
talosctl meta write 0xa '{"externalIPs": ["1.2.3.4"]}'
talosctl meta delete 0xa
```

The initial platform network configuration for the `metal` platform can be also included into the generated Talos image:

```bash
docker run --rm -i ghcr.io/siderolabs/imager:{{< release >}} iso --arch amd64 --tar-to-stdout --meta 0xa='{...}' | tar xz
docker run --rm -i --privileged ghcr.io/siderolabs/imager:{{< release >}} image --platform metal --arch amd64 --tar-to-stdout --meta 0xa='{...}' | tar xz
```

The platform network configuration gets merged with other sources of network configuration, the details can be found in the [network resources guide]({{< relref "../../../learn-more/networking-resources.md#configuration-merging" >}}).
70 changes: 70 additions & 0 deletions website/content/v1.4/talos-guides/interactive-dashboard/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
---
title: "Interactive Dashboard"
description: "A tool to inspect the running Talos machine state on the physical video console."
---

Interactive dashboard is enabled for all Talos platforms except for SBC images.
The dashboard can be disabled with kernel parameter `talos.dashboard.disabled=1`.

The dashboard runs only on the physical video console (not serial console) on the 2nd virtual TTY.
The first virtual TTY shows kernel logs same as in Talos <1.4.0.
The virtual TTYs can be switched with `<Alt+F1>` and `<Alt+F2>` keys.

Keys `<F1>` - `<Fn>` can be used to switch between different screens of the dashboard.

The dashboard is using either UEFI framebuffer or VGA/VESA framebuffer (for legacy BIOS boot).
For legacy BIOS boot screen resolution can be controlled with the [`vga=` kernel parameter](https://docs.kernel.org/fb/vesafb.html).

## Summary Screen (`F1`)

{{< imgproc "interactive-dashboard-1.png" Fit "920x920" >}}
Interactive Dashboard Summary Screen
{{< /imgproc >}}

The header shows brief information about the node:

* hostname
* Talos version
* uptime
* CPU and memory hardware information
* CPU and memory load, number of processes

Table view presents summary information about the machine:

* UUID (from SMBIOS data)
* Cluster name (when the machine config is available)
* Machine stage: `Installing`, `Upgrading`, `Booting`, `Maintenance`, `Running`, `Rebooting`, `Shutting down`, etc.
* Machine stage readiness: checks Talos service status, static pod status, etc. (for `Running` stage)
* Machine type: controlplane/worker
* Number of members discovered in the cluster
* Kubernetes version
* Status of Kubernetes components: `kubelet` and Kubernetes controlplane components (only on `controlplane` machines)
* Network information: Hostname, Addresses, Gateway, Connectivity, DNS and NTP servers

Bottom part of the screen shows kernel logs, same as on the virtual TTY 1.

## Monitor Screen (`F2`)

{{< imgproc "interactive-dashboard-2.png" Fit "920x920" >}}
Interactive Dashboard Monitor Screen
{{< /imgproc >}}

Monitor screen provides live view of the machine resource usage: CPU, memory, disk, network and processes.

## Network Config Screen (`F3`)

> Note: network config screen is only available for `metal` platform.
{{< imgproc "interactive-dashboard-3.png" Fit "920x920" >}}
Interactive Dashboard Network Config Screen
{{< /imgproc >}}

Network config screen provides editing capabilities for the `metal` [platform network configuration]({{< relref "../install/bare-metal-platforms/network-config" >}}).

The screen is split into three sections:

* the leftmost section provides a way to enter network configuration: hostname, DNS and NTP servers, configure the network interface either via DHCP or static IP address, etc.
* the middle section shows the current network configuration.
* the rightmost section shows the network configuration which will be applied after pressing "Save" button.

Once the platform network configuration is saved, it is immediately applied to the machine.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit b18da07

Please sign in to comment.