748 Commits

Author SHA1 Message Date
Noel Georgi
e97b9f6d3e
feat: support dhcp options for vlan
Add `DHCPOptions` for VLAN device.

Fixes: #6011

Signed-off-by: Noel Georgi <git@frezbo.dev>
2022-08-05 01:41:46 +05:30
Noel Georgi
80d298abfb
feat: support skipping node registration
This PR supports skipping node registration from K8s.

This is an adavnced use case and only needs to be used in special cases.
In this mode Kubelet only runs the static pods.

Fixes: #5847

Operations that will be broken:

- `talosctl cluster create` would eventually timeout since it expects
  nodes to be registered.
- `talosctl health` since it expects nodes to be registered.
- `talosctl upgrade-k8s` since it expects nodes to be registered. Static
  pods can still be updated by editing the machine config..

Signed-off-by: Noel Georgi <git@frezbo.dev>
2022-08-04 23:09:47 +05:30
Andrey Smirnov
f9b664c947
fix: reload trusted CA list when client is recreated
Fixes #5652

This reworks and unifies HTTP client/transport management in Talos:

* cleanhttp is used everywhere consistently
* DefaultClient is using pooled client, other clients use regular
  transport
* like before, Proxy vars are inspected on each request (but now
  consistently)
* manifest download functions now recreate the client on each run to
  pick up latest changes
* system CA list is picked up from a fixed locations, and supports
  reloading on changes

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-08-04 20:01:35 +04:00
Andrey Smirnov
1a8f6ec8e1
fix: don't advertise Kubernetes pod networks over KubeSpan by default
This is incompatible with Calico and Cilium in default configuration, as
it's not easy to figure out exact PodCIDRs of the node.

We change the default but provide the option to revert the old behavior.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-08-03 22:33:59 +04:00
Andrey Smirnov
fe2ee3b100
feat: implement MachineStatus resource
Fixes #5789

Example:

```yaml
spec:
    stage: running
    status:
        ready: false
        unmetConditions:
            - name: staticPods
              reason: kube-system/kube-controller-manager-talos-default-master-1 not ready, kube-system/kube-scheduler-talos-default-master-1 not ready
```

As events (CLI doesn't show full contents):

```
172.20.0.2   cbhf2l6f9lrs738hehfg   talos/runtime/machine.MachineStatusEvent   BOOTING   ready: false, unmet conditions: [time network services]
```

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-08-01 18:36:10 +04:00
Tommy Botten Jensen
08d2612e07
docs: bond devices are comma separated
Update kernel arguments bond doc.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-07-29 20:51:35 +04:00
Andrey Smirnov
1db097f509
release(v1.2.0-alpha.1): prepare release
This is the official v1.2.0-alpha.1 release.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-07-28 21:43:44 +04:00
Noel Georgi
5ac4947b63
feat: enable default seccomp profile for kubelet
Enable the default seccomp profile provided by the container runtime

Fixes: #5293

Ref: https://kubernetes.io/docs/tutorials/security/seccomp/

Signed-off-by: Noel Georgi <git@frezbo.dev>
2022-07-28 21:45:49 +05:30
Artem Chernyshev
ae1bec59e9
feat: allow running only one sequence at a time
Fix `Talos` sequencer to run only a single sequence at the same time.
Sequences priority was updated. To match the table:

| what is running (columns) what is requested (rows) | boot | reboot | reset | upgrade |
|----------------------------------------------------|------|--------|-------|---------|
| reboot                                             | Y    | Y      | Y     | N       |
| reset                                              | Y    | N      | N     | N       |
| upgrade                                            | Y    | N      | N     | N       |

With a small addition that `WithTakeover` is still there.
If set, priority is ignored.

This is mainly used for `Shutdown` sequence invokation.
And if doing apply config with reboot enabled.

Signed-off-by: Artem Chernyshev <artem.chernyshev@talos-systems.com>
2022-07-27 17:21:36 +03:00
Andrey Smirnov
3addea83b9
feat: introduce support for Talos API access from Kubernetes
This is a first step: providing a service to access Talos API.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-07-26 00:02:19 +04:00
Matthew Richardson
34d3a41643
docs: add missing <> to relref
Fixing small issue in syntax.

Signed-off-by: Matthew Richardson <M.Richardson@ed.ac.uk>
Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-07-25 23:20:51 +04:00
Utku Ozdemir
47c35dc474
feat: set stable default hostname based on machine-id
Use machine-id as the source for the default hostname (e.g. `talos-2gd-76y`) instead of DHCP-assigned IP (e.g. `talos-172-20-0-2`). This way, DHCP IP changes won't impact the hostname. Defaults to true for Talos version >=1.2.

Closes siderolabs/talos#5896.

Signed-off-by: Utku Ozdemir <utku.ozdemir@siderolabs.com>
2022-07-21 19:37:28 +02:00
Noel Georgi
d650afb6cd
chore: fix typo in powercycle
Fix typo in `powercycle`

Signed-off-by: Noel Georgi <git@frezbo.dev>
2022-07-20 21:33:17 +05:30
Andrey Smirnov
644e803adf
fix: use masks and different firewall mark for KubeSpan
Fixes #4836

Firewall mark is `uint32` attached to the packet in the Linux kernel
(it's not transmitted on the wire). This is a shared value for all
networking software, so multiple components might attempt to set and
match on the firewall mark.

Cilium and Calico CNIs are using firewall marks internally, but they
touch only some bits of the firewall mark.

The way KubeSpan was implemented before this PR, it was doing direct
match on the firewall mark, and setting the whole `uint32`, so it comes
into conflict with any other networking component using firewall marks.

The other problem was that firewall mark 0x51820 (0x51821) was too
"wide" touching random bits of the 32-bit value for no good reason.

So this change contains two fixes:

* make firewall mark exactly a single bit (we use bits `0x20` and `0x40`
  now)
* match and mark packets with the mask (don't touch bits outside of the
  mask when setting the mark and ignore bits outside of the mask when
  matching on the mark).

This was tested successfully with both Cilium CNI (default config +
`ipam.mode=kubernetes`) and Calico CNI (default config).

One thing to note is that for KubeSpan and Talos it's important to make
sure that `podSubnets` in the machine config match CNI setting for
`podCIDRs`.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-07-20 16:05:56 +04:00
Spencer Smith
04a45dff28
docs: remove katacoda links
This PR removes katacoda links since katacoda is dead now :(

Signed-off-by: Spencer Smith <spencer.smith@talos-systems.com>
2022-07-19 12:25:15 -04:00
Andrey Smirnov
065b59276c
feat: implement packet capture API
This uses the `go-packet` library with native bindings for the packet
capture (without `libpcap`). This is not the most performant way, but it
allows us to avoid CGo.

There is a problem with converting network filter expressions (like
`tcp port 3222`) into BPF instructions, it's only available in C
libraries, but there's a workaround with `tcpdump`.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-07-19 01:23:09 +04:00
Andrey Smirnov
7c006cabc7
feat: update Kubernetes to 1.24.3
See https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md#changelog-since-v1242

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-07-18 22:10:34 +04:00
Utku Ozdemir
a75fe7600d
feat: gen secrets from kubernetes pki dir
This PR allows the ability to generate `secrets.yaml` (`talosctl gen secrets`) using a Kubernetes PKI directory path (e.g. `/etc/kubernetes/pki`) as input. Also introduces the flag `--kubernetes-bootstrap-token` to be able to set a static Kubernetes bootstrap token to the generated `secrets.yaml` file instead of a randomly-generated one. Closes siderolabs/talos#5894.

Signed-off-by: Utku Ozdemir <utku.ozdemir@siderolabs.com>
2022-07-16 13:06:32 +02:00
Utku Ozdemir
a1d7b535ad
docs: add kubeadm migration guide
Document how to migrate from kubeadm-based clusters to Talos.

Part of siderolabs/talos#5832

Signed-off-by: Utku Ozdemir <utku.ozdemir@siderolabs.com>
2022-07-16 12:50:27 +02:00
zebernst
9e0c56581e
docs: guide for setting up synology-csi driver
Guide for synology-csi driver

Signed-off-by: Noel Georgi <git@frezbo.dev>
2022-07-15 23:54:34 +05:30
Utku Ozdemir
89c7da8991
docs: add documentation for vagrant & libvirt
Documentation of running Talos on a Vagrant environment with libvirt provider.

Signed-off-by: Utku Ozdemir <utku.ozdemir@siderolabs.com>
2022-07-15 16:54:30 +02:00
Tim Jones
014b85fdcb
docs: improve talos kubernetes upgrade note
Improve working on Talos upgrade vs Kubernetes upgrades.

Signed-off-by: Tim Jones <tim.jones@siderolabs.com>
2022-07-15 16:08:18 +02:00
Spencer Smith
88bb017ed0
docs: remove old docs from site
This PR removes pre-v0.10 docs from the drop down. They will remain in
the content so folks can still read them if needed.

Signed-off-by: Spencer Smith <spencer.smith@talos-systems.com>
2022-07-14 20:52:35 -04:00
Andrey Smirnov
616da30695
docs: update last release for 1.1
It is v1.1.1 now.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-07-13 18:23:04 +04:00
Andrey Smirnov
641f6a1e4e
feat: expose strategic merge config patches
The end result is that every Talos CLI accepts both JSON and strategic
patches to patch machine configuration.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-07-12 15:38:01 +04:00
Christoph Schmatzler
6e3d2d647d
docs: fix disk encryption params
adds `provider` key to encryption settings

Signed-off-by: Christoph Schmatzler <christoph@medium.place>
Signed-off-by: Noel Georgi <git@frezbo.dev>
2022-07-12 15:11:33 +05:30
Alex Wied
c43d6a31d9
docs: fix typos
Fix typo in Equinix docs

Signed-off-by: Noel Georgi <git@frezbo.dev>
2022-07-11 23:07:09 +05:30
Bermi Ferrer
83ce92c5ff
docs: fix theila docs
Fix command name in theila docs

Signed-off-by: Noel Georgi <git@frezbo.dev>
2022-07-11 15:32:46 +05:30
Utku Ozdemir
d924901b79
feat: add cli subcommand to generate secrets
Adds a new command `talosctl gen secrets` to generate a `secrets.yaml` file with Talos and Kubenetes secrets. This file can later be used like `talosctl gen config ... --with-secrets secrets` to generate a config with these pre-generated secrets. Closes siderolabs/talos#5861.

Signed-off-by: Utku Ozdemir <utku.ozdemir@siderolabs.com>
2022-07-06 20:00:35 +02:00
Eirik Askheim
d27a6a4ac0
feat: add vlan support to cmdline
this commits adds dracut style vlan support to allow
installing talos in networks where ports is not tagged
with a default vlan.

Signed-off-by: Eirik Askheim <eirik@x13.no>
Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-07-04 21:59:11 +04:00
Andrey Smirnov
86a0a7bdf7
refactor: use pointer types more in machine config structs
There should be no functional change with this PR.

The primary driver is supporting strategic merge configuration patches.
For such type of patches machine config should be loaded from incomplete
fragments, so it becomes critically important to distinguish between a
field having zero value vs. field being set in YAML.

E.g. with following struct:

```go
struct { AEnabled *bool `yaml:"a"` }
```

It's possible to distinguish between:

```yaml
a: false
```

and no metion of `a` in YAML.

Merging process trewats zero values as "not set" (skips them when
merging), so it's important to allow overriding value to explicit
`false`.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-07-01 17:27:11 +04:00
Markus Reiter
3a1eb10e61
docs: update the Proxmox kvm64 note
These settings enable `x86-64-v2` while keeping the VM migration option.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-07-01 15:23:12 +04:00
Florian Klink
30e220fcd2
docs: kernel cmdline params updated on upgrades
Mention that kernel cmdline params are updates on Talos upgrades only

See https://github.com/siderolabs/talos/issues/4880#issuecomment-1170965112

Signed-off-by: Florian Klink <flokli@flokli.de>
Signed-off-by: Noel Georgi <git@frezbo.dev>
2022-07-01 15:28:18 +05:30
Utku Ozdemir
915de9cf9b
docs: fix bridge documentation
This PR fixes a mistake in the bridge support docs and the reference to its docs in changelog.

Signed-off-by: Utku Ozdemir <utku.ozdemir@siderolabs.com>
2022-07-01 11:21:46 +02:00
Andrey Smirnov
022581d809
release(v1.2.0-alpha.0): prepare release
This is the official v1.2.0-alpha.0 release.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-06-30 19:01:07 +04:00
Noel Georgi
7ebd9bcce6
docs: fix pod security talos resource name
Fix the resource name for admissionconfig

Signed-off-by: Noel Georgi <git@frezbo.dev>
2022-06-28 22:05:05 +05:30
Philipp Sauter
a68a00f1b9
docs: recommend setting "host" Processor Type on proxmox
Talos v1.0 and later versions are unable to boot in a Proxmox
VM with "kvm64" set as its Processor Type. We add an
instruction in the Proxmox Guide for setting Processor Type
to "host". Talos v1.0 requires the x86-64-v2
microarchitecture, which is very common today.

Signed-off-by: Philipp Sauter <philipp.sauter@siderolabs.com>
2022-06-28 15:47:45 +02:00
Tim Jones
758a9bf59f
docs: add theila ui
Adds an introduction section for using Theila with Talos
clusters.

Signed-off-by: Tim Jones <tim.jones@siderolabs.com>
2022-06-27 21:56:27 +02:00
hobyte
61abf31110
docs: change command for cluster create to keep $HOME with sudo
sudo -E doesn't keep $HOME on all platforms. Change to
--preserve-home=HOME to tell sudo to especially kee $HOME to prevent
config being generated in /root/.talos

Signed-off-by: hobyte <simolu8@gmail.com>
Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-06-27 18:35:55 +04:00
Philipp Sauter
2deff6b6e1
feat: add support for variable substitution in talos.config kernel parameter
The URL to fetch the configuration for a talos node is given by the
talos.config kernel parameter. We add support for 4 variables ${uuid},
${serial}, ${mac} and ${hostname} which substitute the device UUID,
DMI-sourced serial number, MAC address of the first network interface to
be up and the hostname respectively.

Fixes #3272

Signed-off-by: Philipp Sauter <philipp.sauter@siderolabs.com>
2022-06-24 12:38:08 +02:00
Davincible
448de71949
docs: add UpCloud installation guide
Describe installing Talos on Upload.

Signed-off-by: Davincible <david.brouwer.99@gmail.com>
Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-06-23 22:28:28 +04:00
Utku Ozdemir
797596229a
feat: add support for configuring network bridges
Allows configuring bridge interfaces (similar to bonds). Closes siderolabs#5414.

Signed-off-by: Utku Ozdemir <utku.ozdemir@siderolabs.com>
2022-06-22 21:09:18 +02:00
Andrey Smirnov
2b23fabcc1
docs: use SVG image for K8s conformance
It doesn't accept PNG images.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-06-22 22:15:46 +04:00
Noel Georgi
d4606c33ec
chore: bump kernel to 5.15.49
Bump kernel to 5.15.49

Remove the `random.trust_cpu` kernel cmdline as it already enabled in
Kconfig

Ref:
 - https://github.com/siderolabs/pkgs/pull/520
 - https://github.com/siderolabs/pkgs/pull/522

Signed-off-by: Noel Georgi <git@frezbo.dev>
2022-06-22 23:03:24 +05:30
Andrey Smirnov
cfb640222b
docs: update docs for release 1.1
Update documentation, support matrix, current release, what's new, etc.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-06-22 18:40:54 +04:00
Andrey Smirnov
b816d0b600
docs: fix the vendor information for Kubernetes conformance tests
As we submit results to Certified Kubernetes, we provide metadata which
should be updated now, and also we lost the logo in our assets.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-06-21 22:25:10 +04:00
Spencer Smith
916a306829
docs: add twitter meta info
This PR ensures we look cool on twitter.

Signed-off-by: Spencer Smith <spencer.smith@talos-systems.com>
2022-06-21 08:43:48 -04:00
Noel Georgi
e8113527f9
chore: bump kubernetes to v1.24.2
Bump kubernetes to [v1.24.2](https://github.com/kubernetes/kubernetes/releases/tag/v1.24.2)

Signed-off-by: Noel Georgi <git@frezbo.dev>
2022-06-17 23:23:06 +05:30
Noel Georgi
a31a858e08
docs: snippets for logging api server audit logs
Add snippets for logging kube-apiserver audit logs from Talos

Signed-off-by: Noel Georgi <git@frezbo.dev>
2022-06-16 16:10:35 +05:30
Noel Georgi
35475ce45b
docs: openebs jiva example with iscsi-tools extension
Add docs on using OpenEBS Jiva that works well with local storage and
`iscsi-tools` extension.

Signed-off-by: Noel Georgi <git@frezbo.dev>
Signed-off-by: Spencer Smith <spencer.smith@talos-systems.com>
2022-06-13 19:56:28 -04:00