2997 Commits

Author SHA1 Message Date
Andrey Smirnov
c5e5922e53
chore: bump dependencies
dependabot + go-mod-outdated

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-01-26 17:07:11 +03:00
Andrey Smirnov
b3c3ef29bd
feat: install system extensions
Fixes #4815

This implements the following steps:

* machine configuration updates
* pulling and unpacking system extension images
* validating, listing system extensions
* re-packing system extensions
* preserving installed extensions in `/etc/extensions.yaml`

Once extension is enabled, raw information can be queried with:

```
$ talosctl -n 172.20.0.2 cat /etc/extensions.yaml
layers:
    - image: 000.ghcr.io-smira-gvisor-c927b54-dirty.sqsh
      metadata:
        name: gvisor
        version: 20220117.0-v1.0.0
        author: Andrew Rynhard
        description: |
            This system extension provides gVisor using containerd's runtime handler.
        compatibility:
            talos:
                version: '> v0.15.0-alpha.1'
```

This was tested with the `gvisor` system extension.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-01-26 16:24:28 +03:00
Andrey Smirnov
a0889600fb
chore: fix golangci-lint install
Version was never passed properly, plus the goreleaser is deprecated
now, switch to golangci-lint equivalent script.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-01-26 16:02:31 +03:00
Florian Klink
a50c42980f
fix: use #!/usr/bin/env bash as shebang instead of #!/bin/bash
This will fix running these scripts on distros without /bin/bash, but
where bash is in $PATH, such as NixOS.

Currently, `make fmt` otherwise fails to run:

```
make[3]: Leaving directory '/home/flokli/dev/numtide/manifoldfinance/talos'
sh: ./hack/fix-artifacts.sh: /bin/bash: bad interpreter: No such file or directory
make[2]: *** [Makefile:163: local-fmt-protobuf] Error 126
make[2]: Leaving directory '/home/flokli/dev/numtide/manifoldfinance/talos'
make[1]: *** [Makefile:274: fmt-protobuf] Error 2
make[1]: Leaving directory '/home/flokli/dev/numtide/manifoldfinance/talos'
make: *** [Makefile:277: fmt] Error 2
```

Signed-off-by: Florian Klink <flokli@flokli.de>
Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-01-25 23:11:39 +03:00
Florian Klink
4464b725c4
fix: qemu: always use runtime.GOARCH for CNI bundle
The CNI is executed on the host. Even if we want to run an arm64 qemu,
we still need to execute the amd64 CNI on the host.

Signed-off-by: Florian Klink <flokli@flokli.de>
Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-01-25 20:20:59 +03:00
Andrey Smirnov
e7379c81b2
release(v0.15.0-alpha.1): prepare release
This is the official v0.15.0-alpha.1 release.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-01-24 16:08:38 +03:00
Seán C McCord
58eb3600fc
fix: enforce reasonable TLS min tls-min-version
Enforces more reasonable minimum TLS versions for Kubernetes components
(1.3 for everything except apiserver; 1.2 for API server for
interoperability).

Signed-off-by: Seán C McCord <ulexus@gmail.com>
2022-01-21 13:31:07 -05:00
Artem Chernyshev
b8d4c5dfad
fix: use correct error in kernel_param_spec Modify call handling
Fixes: https://github.com/talos-systems/talos/issues/4834
Signed-off-by: Artem Chernyshev <artem.chernyshev@talos-systems.com>
2022-01-21 16:46:58 +03:00
Andrey Smirnov
4961d6867c
docs: drop talos.interface kernel arg
It's not supported in recent Talos.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-01-21 15:21:21 +03:00
Andrey Smirnov
b1e61fa5b1
chore: update Linux to 5.15.16
See https://www.openwall.com/lists/oss-security/2022/01/18/7

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-01-20 23:28:59 +03:00
Andrey Smirnov
d4b8445935
feat: support CRI configuration merging and reimplement registry config
Containerd doesn't support merging plugin configuration from multiple
sources, and Talos has several pieces which configure CRI plugin:
(see https://github.com/containerd/containerd/issues/5837)

* base config
* registry mirror config
* system extensions
* ...

So we implement our own simple way of merging config parts (by simply
concatenating text files) to build a final `cri.toml`.

At the same time containerd migrated to a new format to specify registry
mirror configuration, while old way (via CRI config) is going to be
removed in 1.7.0. New way also allows to apply most of registry
configuration (except for auth) on the fly.

Also, containerd was updated to 1.6.0-rc.0 and runc to 1.1.0.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-01-20 23:05:20 +03:00
Andrey Smirnov
f94c8c6e1c
feat: update Kubernetes to 1.23.2
See https://github.com/kubernetes/kubernetes/releases/tag/v1.23.2

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-01-20 22:12:03 +03:00
Artem Chernyshev
21f497b3e2
feat: install readonly overlay mounts during talos chroot sequence
The list of layers should come from the `/extensions.yaml` configuration
file.

Closes: https://github.com/talos-systems/talos/issues/4814

Signed-off-by: Artem Chernyshev <artem.chernyshev@talos-systems.com>
2022-01-20 19:25:01 +03:00
Andrey Smirnov
9ad5a67d21
feat: inject platform network configuration as network resources
Instead of patching in the machine config, provide a new interface in
the platforms to supply platform-specific network configuration.

Configuration will be cached in the `/state` across reboots, and
configuration might be even updated in real time (e.g. on GCP).

Network configuration on platform level can be overridden with
user-supplied machine configuration.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-01-20 16:26:49 +03:00
Noel Georgi
907f8cbfb8
docs: fix patch flag
Fix the patch flag

Signed-off-by: Noel Georgi <git@frezbo.dev>
2022-01-19 22:19:32 +05:30
Andrey Smirnov
caa4344264
docs: add documentation on developing Talos
Target audidence:

* maintainers
* contributors

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-01-19 18:17:54 +03:00
Steve Francis
16eeb67762
docs: readme updates
Talos to Talos Linux, Talos to Sidero, and product wording refreshes.

Signed-off-by: Seán C McCord <ulexus@gmail.com>
2022-01-18 22:23:49 +03:00
Noel Georgi
3c0737027b
chore: update release notes
Release notes update from #4819

Signed-off-by: Noel Georgi <git@frezbo.dev>
2022-01-18 21:37:03 +05:30
Noel Georgi
6d8bea5d55
feat: jetson nano SoC
Support Jetson Nano SoC

Depends on https://github.com/talos-systems/pkgs/pull/380

Signed-off-by: Noel Georgi <git@frezbo.dev>
2022-01-18 20:12:54 +05:30
Andrey Smirnov
1d8955ebe4
feat: update CoreDNS to 1.8.7
Drop the rewrite rule which seems to be causing issues for
`ingress-nginx` when Kubernetes IPv4-only cluster runs in the
IPv6-enabled environment.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-01-18 17:21:05 +03:00
Seán C McCord
6af83afd5a
fix: handle multiple-IP cluster nodes
Allow cluster nodes to have multiple internal IP addresses when checking
for all Kubernetes nodes.

Fixes #4807

Signed-off-by: Seán C McCord <ulexus@gmail.com>
2022-01-17 11:41:54 -05:00
Andrey Smirnov
43b2d81371
chore: bump dependencies
Dependabot + go-mod-outdated.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-01-17 16:25:18 +03:00
Steve Francis
529e80f4f5
docs: update home page and footer
From PRs #4798 #4799

Co-authored-by: Steve Francis <steve.francis@siderolabs.com>
Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
Signed-off-by: Steve Francis <steve.francis@siderolabs.com>
2022-01-17 15:18:57 +03:00
Steve Francis
37630e70cc
Update twitter link 2022-01-14 14:39:32 -08:00
Andrey Smirnov
af440919bb
fix: avoid panic in config loading/validation
As wrong `error` value was used, publishing an event was causing a panic
in Talos.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-01-14 21:16:33 +03:00
Andrew Rynhard
4b8e9de599
docs: add guide on adding proprietary kernel modules
Adds a guide on how to create an installer with a customized kernel with
proprietary drivers.

Signed-off-by: Andrew Rynhard <andrew@rynhard.io>
Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-01-14 18:46:43 +03:00
Spencer Smith
833dc4169a
docs: rework vmware assets
This PR moves to give curl commands for the vmware assets instead of
relying on the local paths that I was using. This matches what we're
doing for gcp docs as well.

Signed-off-by: Spencer Smith <spencer.smith@talos-systems.com>
2022-01-14 09:24:31 -05:00
Serge Logvinov
2869b5eeac
feat: add oraclecloud.com platform support
* cloud-init for oraclecloud (IMDSv2)
* amd64/arm64 arch
* set DHCPv6 on if IPv6 subnet allocated

Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-01-14 16:56:37 +03:00
Shahar Naveh
f3ec24bebf
fix: vmware documentation typo
Fixes a small typo in the vmware docs

Signed-off-by: Shahar Naveh <shaharnaveh@users.noreply.github.com>
Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-01-14 16:37:50 +03:00
Artem Chernyshev
2f2bdb26aa
feat: replace flags with --mode in apply, edit and patch commands
Fixes: https://github.com/talos-systems/talos/issues/4588

Signed-off-by: Artem Chernyshev <artem.chernyshev@talos-systems.com>
2022-01-13 16:09:53 +03:00
Andrey Smirnov
b09be2a69c
docs: update index.md and sync across versions
See #4781

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-01-12 18:52:52 +03:00
Serge Logvinov
ca65b918a7
docs: add nocloud documentation
Update documentation - how to use nocloud platform.

Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-01-12 18:18:03 +03:00
Andrey Smirnov
59437d6d83
fix: filter down nameservers for docker-based cluster create
Filter the default list down to IPv4/IPv6 depending on the network
configuration. The problem is that the full list contains IPv6 resolvers
and these won't work on IPv4-only network (which is default for
`talosctl cluster create`).

This is not a problem for QEMU, as QEMU filters down the list for
built-in DHCP server already splitting it for DHCP4/DHCP6.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-01-12 15:54:29 +03:00
Andrey Smirnov
194eaa6f22
chore: clean up /usr/bin from unneeded files
This removes all files but leaves `udevadm` which is actually used by
Talos.

Size reduction for `initramfs-amd64`: 54380024 -> 54228188

Files removed:

```
NODE         MODE         UID   GID   SIZE(B)   LASTMOD           NAME
172.20.0.2   drwxr-xr-x   0     0     107       Jan 10 23:46:33   .
172.20.0.2   Lrwxrwxrwx   0     0     26        Jan 10 23:46:33   iptables-xml -> /sbin/xtables-legacy-multi
172.20.0.2   -rwxr-xr-x   0     0     30496     Jan 10 23:46:33   ocspcheck
172.20.0.2   -rwxr-xr-x   0     0     442008    Jan 10 23:46:33   openssl
172.20.0.2   -rwxr-xr-x   0     0     14240     Jan 10 23:46:33   scmp_sys_resolver
```

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-01-11 23:33:12 +03:00
Seán C McCord
74e7272401
docs: update office office
Update office hours in older documentation versions to match current.

Signed-off-by: Seán C McCord <ulexus@gmail.com>
2022-01-10 15:46:33 -05:00
Spencer Smith
539af338c4
docs: update vmware docs
This PR updates the vmware docs to introduce a script to help with the
automation, as well as introduce the setup of talos-vmtoolsd and
reworking the format a bit.

Signed-off-by: Spencer Smith <spencer.smith@talos-systems.com>
2022-01-10 14:18:34 -05:00
Andrey Smirnov
279a3fda7b
feat: update Go to 1.17.6, containerd to 1.5.9
See:

* https://github.com/talos-systems/tools/pull/166
* https://github.com/talos-systems/pkgs/pull/379
* https://github.com/talos-systems/extras/pull/36
* https://github.com/talos-systems/pkgs/pull/379

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-01-10 20:49:01 +03:00
Andrey Smirnov
3d30889412
chore: bump Go dependencies
dependabot + go-mod-outdated

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-01-10 17:27:42 +03:00
Andrey Smirnov
d02d944ec7
chore: provide umarshal from YAML methods for network resource specs
This will be required to preserve platform network configuration in a
cache across boots. Network configuration will be marshaled to YAML and
unmarshaled back.

Changes are pretty simple and most of the code is auto-generated:
replace `stringer` codegen with `enumer` which produces also methods
which convert from string back to enum values.

Added tests to verify YAML marshaling/unmarshaling.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-01-10 17:00:53 +03:00
Andrey Smirnov
2e735714d9
fix: derive machine-id from node identity
Fixes #4759

This uses existing features: Talos always generates 32 bytes random node
identity, we use first 16 bytes of that to generate `machine-id` in
compliant format and mount that into the `kubelet` container.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-01-10 15:59:07 +03:00
Spencer Smith
d8a2721e12
test: update CAPI components to latest
This PR updates to our latest point release for CACPPT to
ensure faster testing. It also pulls in a newer AWS provider.

Signed-off-by: Spencer Smith <spencer.smith@talos-systems.com>
2022-01-05 16:49:03 -05:00
Eric Wohltman
7dff8a53ee
fix: ignore missing init.yaml for cluster create
Fixes: #4362.
This change is to make `talosctl cluster create` ignore a missing `init.yaml` file when given an `--input-dir` argument. The `talosctl gen config` command does not create an `init.yaml`, so this would allow running the command to generate configs and then immediately use them to create a cluster.

Signed-off-by: Eric Wohltman <eric.wohltman@gmail.com>
Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2021-12-30 21:43:16 +03:00
Andrey Smirnov
f4516c7d84
chore: bump dependencies
Some via dependabot, some via go-mod-outdated.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2021-12-30 19:38:03 +03:00
Andrey Smirnov
944f13221d
chore: fix release pipeline
Looks like I missed adding new steps.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2021-12-30 17:46:00 +03:00
Andrey Smirnov
cb548a368a
release(v0.15.0-alpha.0): prepare release
This is the official v0.15.0-alpha.0 release.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2021-12-30 16:27:19 +03:00
Artem Chernyshev
da0b36e616
feat: introduce talos.exp.wipe kernel param to wipe system disk
Fixes: https://github.com/talos-systems/talos/issues/4399

Signed-off-by: Artem Chernyshev <artem.chernyshev@talos-systems.com>
2021-12-29 15:10:52 +03:00
Andrey Smirnov
c079eb32bd
refactor: use AWS SDK to access AWS metadata service
This provides a better way to access IMDS APIs (new IMDS API version,
etc.)

Using `aws-go-sdk` vs. new `aws-go-sdk-v2` as `go-getter` depends on
`v1` version.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2021-12-28 20:54:31 +03:00
Andrey Smirnov
2f4b9d8d6d
feat: make machine configuration read-only in Talos (almost)
Talos shouldn't try to re-encode the machine config it was provided
with.

So add a `ReadonlyWrapper` around `*v1alpha1.Config` which makes sure
that raw config object is not available anymore (it's a private field),
but config accessors are available for read-only access.

Another thing that `ReadonlyWrapper` does is that it preserves the
original `[]byte` encoding of the config keeping it exactly same way as
it was loaded from file or read over the network.

Improved `talosctl edit mc` to preserve the config as it was submitted,
and preserve the edits on error from Talos (previously edits were lost).

`ReadonlyWrapper` is not used on config generation path though - config
there is represented by `*v1alpha.Config` and can be freely modified.

Why almost? Some parts of Talos (platform code) patch the machine
configuration with new data. We need to fix platforms to provide
networking configuration in a different way, but this will come with
other PRs later.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2021-12-28 20:12:55 +03:00
Andrey Smirnov
524f83d3d8
feat: use official Go SDK to fetch GCP instance metadata
This enables fetching of hostname as well.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2021-12-28 18:49:56 +03:00
Andrey Smirnov
d2a7e082c2
test: retry in discovery tests
Sometimes pushing/pulling to Kubernetes registry is delayed due to
backoff on failed attempts to talk to the API server when the cluster is
still bootstrapping. Workaround that by adding retries.

Also disable kernel module controller in container mode, as it will keep
always failing.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2021-12-28 16:55:41 +03:00