483 Commits

Author SHA1 Message Date
Andrey Smirnov
0bf161dffb
test: add integration test for system extensions
This verifies system extensions via the gVisor system extension.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-01-26 23:29:15 +03:00
Andrey Smirnov
85782faa24
feat: update Kubernetes to 1.23.3
Also bumps some dependencies and updates Talos version we use in the
upgrade tests.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-01-26 17:59:21 +03:00
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
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
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
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
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
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
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
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
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
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
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
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
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
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
83e8bec6b9
feat: update Linux to 5.15.11
Cleanup release.toml in preparation for 0.15-alpha.0 release.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2021-12-24 21:21:58 +03:00
Andrey Smirnov
dc9a0cfe94
chore: bump Go dependencies
Bump all dependencies, update `grpc.WithInsecure()` which is deprecated
now.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2021-12-20 23:05:32 +03:00
Andrey Smirnov
80350861a2
feat: update Kubernetes to 1.23.1
See https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.23.md#changelog-since-v1230

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2021-12-16 22:13:24 +03:00
Spencer Smith
3af56bd2e7
test: update capi templates to v1beta1
This PR uplifts our E2E tests to use the latest CAPI templates and
providers

Signed-off-by: Spencer Smith <spencer.smith@talos-systems.com>
2021-12-14 15:41:23 -05:00
Andrey Smirnov
2dd0b5b68a
chore: update Go to 1.17.5
See:

* https://github.com/talos-systems/tools/pull/163
* https://github.com/talos-systems/pkgs/pull/370
* https://github.com/talos-systems/extras/pull/34

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2021-12-09 23:48:31 +03:00
Andrey Smirnov
97ffa7a645
feat: upgrade kubelet version in talosctl upgrade-k8s
Fixes #4656

As now changes to kubelet configuration can be applied without a reboot,
`talosctl upgrade-k8s` can handle the kubelet upgrades as well.

The gist is simply modifying machine config and waiting for `Node`
version to be updated, rest of the code is required for reliability of
the process.

Also fixed a bug in the API while watching deleted items with
tombstones.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2021-12-08 21:12:17 +03:00
Andrey Smirnov
8e1d0bfb5f
feat: update Kubernetes to 1.23.0
See https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.23.md#changelog-since-v1220

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2021-12-08 18:51:11 +03:00
Andrey Smirnov
8f3e1a4ad6
fix: drop unpacked layers from containerd image store
See https://github.com/containerd/cri/pull/1543

Fixes #4274

Fix is applied on two levels:

* for Talos-initiated pulls, update API call
* for Kubernetes-initiated pulls, update CRI plugin config

Comparison of `/var` usage before/after, as reported by
`talosctl mounts` (in GiB):

|              | before | after |
|--------------|:------:|------:|
| controlplane |  1.98  |  1.74 |
| worker       |  1.17  |  1.01 |

It's hard to measure effect on pulls to system containerd, like
`installer` image, as it's ephemeral, but it should also reduce space
usage in `tmpfs`.

Also fixes output of `talosctl mounts`.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2021-12-06 20:41:48 +03:00
Andrey Smirnov
36c9a65ac0
feat: update deps and Kubernetes to 1.23.0-rc.1
Update Go modules to the latest versions including talos-systems/
released modules.

In preparation for 0.14-beta release.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2021-12-06 18:43:26 +03:00
Andrey Smirnov
d2ebda78cc
feat: update runc to 1.0.3
Fixes #4648

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2021-12-06 17:46:11 +03:00
Andrey Smirnov
961d1567d9
chore: update Go to 1.17.4
This also pulls in RPi hw support.

Fixes #4491

See:

* https://github.com/talos-systems/tools/pull/161
* https://github.com/talos-systems/pkgs/pull/365
* https://github.com/talos-systems/pkgs/pull/366
* https://github.com/talos-systems/extras/pull/32

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2021-12-06 16:27:44 +03:00
Andrey Smirnov
d2fd7c2170
feat: make kubelet service apply changes immediately
The gist is that `kubelet` service code only manages the container
lifecycle, while `kubelet` configuration is managed now in the
controllers and resources.

New resources:

* `secrets.Kubelet` contains Kubelet PKI derived directly from the
machine configuration
* `k8s.KubeletConfig` contains Kubelet non-secret config derived
directly from the machine configuration
* `k8s.NodeIPConfig` contains configuration on picking up Node IP for
the kubelet (from machine configuration)
* `k8s.NodeIP` contains actual Node IPs picked from the node addresses
based on `NodeIPConfig`
* `k8s.KubeletSpec` contains final `kubelet` container configuration,
including merged arguments, KubeletConfig, etc. It is derived from
`KubeletConfig`, `Nodename` and `NodeIP`.

Final controller `KubeletServiceController` writes down configuration
and PKI to disk, and manages restart/start of the `kubelet` service
which is a pure wrapper around container lifecycle.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2021-12-03 23:02:49 +03:00
Spencer Smith
6377f3df7b
test: uplift capi versions and templates
This PR will use the latest templates for v1alpha4 and the supporting
CAPI provider versions. We'll bump again when we land v1beta1

Signed-off-by: Spencer Smith <spencer.smith@talos-systems.com>
2021-12-03 09:39:25 -05:00
Andrey Smirnov
2a0da06247
feat: split installer and imager images
The `installer` image is used for initial install and upgrades, so it
contains only Talos artifacts for the same arch as the image

The `imager` image is used to produce Talos images, so it contains artifacts
for all arhitectures, so that it's possible e.g. to build Raspberry PI
Talos image on amd64 machine

Unpacked size comparison for amd64 (before this change, size of
`installer` was same as `imager` size):

```
REPOSITORY                               TAG                                      IMAGE ID       CREATED         SIZE
ghcr.io/smira/installer                  v0.14.0-alpha.2-8-g73293bc2-dirty        264995cf56df   4 minutes ago   176MB
ghcr.io/smira/imager                     v0.14.0-alpha.2-8-g73293bc2-dirty        3ba8e0176565   6 minutes ago   616MB
```

As the `installer` image is pulled into `tmpfs` on upgrade, it's important
to have it as small as possible to avoid putting too much pressure on
node memory.

Both images are generated anyways for both `amd64` and `arm64` target
architectures.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2021-12-03 14:37:45 +03:00
Noel Georgi
bc69f6ec84
feat: vip for VLANs
Support VIP for VLANS

Fixes #3601

Signed-off-by: Noel Georgi <git@frezbo.dev>
2021-12-02 21:39:06 +05:30
Andrey Smirnov
99338e5ffd
feat: update Flannel to 0.15.1
https://github.com/flannel-io/flannel/releases/tag/v0.15.1

Also updates CNI plugins to 1.0.1.

See:

* https://github.com/talos-systems/pkgs/pull/363
* https://github.com/talos-systems/extras/pull/31

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2021-12-02 17:48:41 +03:00
Andrey Smirnov
f7c87d1d9d
release(v0.14.0-alpha.2): prepare release
This is the official v0.14.0-alpha.2 release.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2021-11-30 21:30:14 +03:00
Andrey Smirnov
e9f4b7b204
feat: update Linux to 5.15.5
See https://github.com/talos-systems/pkgs/pull/362

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2021-11-30 18:58:08 +03:00
Alexey Palazhchenko
0f169bf9b1
chore: add API deprecations mechanism
Refs #4576.

Signed-off-by: Alexey Palazhchenko <alexey.palazhchenko@talos-systems.com>
2021-11-30 06:31:55 +00:00
Andrey Smirnov
f3149780e6
feat: update Kubernetes to 1.23.0-rc.0
Still no proper tags for Kubernetes modules (known issue upstream).

Also bump dependencies.

Closes #4605 closes #4606

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2021-11-29 16:22:46 +03:00
Artem Chernyshev
b4a406ae7c
test: pin cluster API templates version to tag v1alpha4
This should help us to go forward with breaking changes in the templates
repo.

Signed-off-by: Artem Chernyshev <artem.chernyshev@talos-systems.com>
2021-11-24 17:48:56 +03:00
Serge Logvinov
caa76be2c9
fix: containerd failed to load plugin
Solve warning message: failed to load plugin io.containerd.internal.v1.opt

Co-authored-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2021-11-19 17:55:05 +03:00
Andrey Smirnov
7c9b082f74
feat: update Kubernetes to 1.23.0-beta.0
Go modules were not tagged this time: https://github.com/kubernetes/kubernetes/issues/106529

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2021-11-18 16:50:46 +03:00
Andrey Smirnov
6dcce20e6f
test: set proper pod CIDR for Cilium tests
This fixes the issue with kubelet picking up wrong IP on restart, as
Talos doesn't know pod IPs (Cilium is using its own pod CIDR, it doesn't
look up Kubernetes settings).

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2021-11-15 23:50:00 +03:00
Andrey Smirnov
a76f6d69db
feat: allow kubelet to be restarted and provide negative nodeIP subnets
Fixes #4407 fixes #4489

This PR started by enabling simple restart of the `kubelet` service via
services API, but it turned out there's a problem:

When kubelet restarts, CNI is already up, so there's an interface on the
host with CNI node IP, the code which picks kubelet node IP finds it and
tries to add it to the list of kubelet node IPs which completely breaks
kubelet.

Solution was easy: allow node IPs to be filtered out - e.g. we never
want kubelet node IP to be from the pod CIDR.

But this filtering feature is also useful in other cases, so I added
that as well.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2021-11-15 15:43:34 +03:00
Alexey Palazhchenko
189221d589
chore: update dependencies
Closes #4538.
Closes #4539.
Closes #4540.

Signed-off-by: Alexey Palazhchenko <alexey.palazhchenko@talos-systems.com>
2021-11-15 12:10:03 +00:00
Andrey Smirnov
a50483dddf
feat: update Linux to 5.15.1
5.15 is the new LTS: https://www.kernel.org/category/releases.html

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2021-11-11 20:54:43 +03:00
Alexey Palazhchenko
82a1ad1681
chore: bump dependencies
Closes #4492.
Closes #4497.

Signed-off-by: Alexey Palazhchenko <alexey.palazhchenko@talos-systems.com>
2021-11-10 15:02:40 +00:00
Alexey Palazhchenko
785161d19f
feat: update k8s to 1.23.0-alpha.4
See https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.23.md#v1230-alpha4

Closes #4495.
Closes #4498.
Closes #4499.
Closes #4500.
Closes #4501.

Signed-off-by: Alexey Palazhchenko <alexey.palazhchenko@talos-systems.com>
2021-11-08 19:37:25 +00:00
Artem Chernyshev
261c497c71
feat: implement talosctl support command
Fixes: https://github.com/talos-systems/talos/issues/4406

Signed-off-by: Artem Chernyshev <artem.chernyshev@talos-systems.com>
2021-11-08 16:20:50 +03:00