309 Commits

Author SHA1 Message Date
Noel Georgi
79ca1a3dfb
feat: e2e-aws using tf code
e2e-aws using TF code.

Signed-off-by: Noel Georgi <git@frezbo.dev>
2023-08-11 19:58:14 +05:30
Andrey Smirnov
969e8097ce
feat: update Kubernetes to 1.28.0-rc.1
See https://github.com/kubernetes/kubernetes/releases/tag/v1.28.0-rc.1

Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
2023-08-11 15:39:58 +04:00
Andrey Smirnov
87fe8f1a2a
feat: implement image generation profiles
Support full configuration for image generation, including image
outputs, support most features (where applicable) for all image output
types, unify image generation process.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2023-08-02 19:13:44 +04:00
Noel Georgi
68e6b98f7d
feat: add security state resource
Add security state resource that describes the state of Talos SecureBoot
and PCR signing key fingerprints.

The UKI fingerprint is currently not populated.

Fixes: #7514

Signed-off-by: Noel Georgi <git@frezbo.dev>
2023-07-31 22:02:08 +05:30
Noel Georgi
209c34801e
chore: drop with-secureboot talosctl flag
The code picks up firmware files in the order it's defined. The
secureboot QEMU firmware files are defined first, so this flag is a
no-op. This was leftover from when `ovmfctl` was used.

Signed-off-by: Noel Georgi <git@frezbo.dev>
2023-07-31 17:33:12 +04:00
Andrey Smirnov
9b533e27cf
feat: update Kubernetes to 1.28.0-rc.0
See https://github.com/kubernetes/kubernetes/releases/tag/v1.28.0-rc.0

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2023-07-27 20:39:58 +04:00
Andrey Smirnov
4d96d642fd
feat: update default Kubernetes version to 1.28.0-beta.0
See https://github.com/kubernetes/kubernetes/releases/tag/v1.28.0-beta.0

Go modules are not tagged yet, so skipped updating them.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2023-07-21 22:04:19 +04:00
Noel Georgi
170a73e161
chore: support creating qemu guest socket
Support creating a qemu guest agent socket so we can test
`qemu-guest-agent` extension in CI.

Ref: https://github.com/siderolabs/extensions/pull/173#issuecomment-1611911106

Signed-off-by: Noel Georgi <git@frezbo.dev>
2023-07-21 22:46:13 +05:30
Dmitriy Matrenichev
5f34f5b41f
chore: rename api load balancer to KubePrism
Closes #7432

Signed-off-by: Dmitriy Matrenichev <dmitry.matrenichev@siderolabs.com>
2023-07-14 15:23:53 +03:00
Noel Georgi
79365d9bac
feat: tpm2 based disk encryption
Support disk encryption using tpm2 and pre-calculated signed PCR values.

Fixes: #7266

Signed-off-by: Noel Georgi <git@frezbo.dev>
2023-07-12 20:41:28 +05:30
Andrey Smirnov
1c2f19b367
feat: update Kubernetes to 1.28.0-alpha.4
The Go modules were not tagged for alpha.4, so using alpha.3 tag.

Talos 1.5 will ship with Kubernetes 1.28.0.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2023-07-11 15:40:24 +04:00
Artem Chernyshev
ce63abb219
feat: add KMS assisted encryption key handler
Talos now supports new type of encryption keys which rely on Sealing/Unsealing randomly generated bytes with a KMS server:

```
systemDiskEncryption:
  ephemeral:
    keys:
      - kms:
          endpoint: https://1.2.3.4:443
        slot: 0
```
gRPC API definitions and a simple reference implementation of the KMS server can be found in this
[repository](https://github.com/siderolabs/kms-client/blob/main/cmd/kms-server/main.go).

Signed-off-by: Artem Chernyshev <artem.chernyshev@talos-systems.com>
2023-07-07 19:02:39 +03:00
Noel Georgi
e5306ef263
chore: format and cleanup test scripts
This formats and cleanups the test scripts.

Signed-off-by: Noel Georgi <git@frezbo.dev>
2023-06-27 16:53:40 +05:30
Noel Georgi
8daf432b29
chore: bump deps
Bump deps.

Signed-off-by: Noel Georgi <git@frezbo.dev>
2023-06-22 22:41:08 +05:30
Andrey Smirnov
fe0f46980f
feat: implement secure boot from disk
This includes sd-boot handling, EFI variables, etc.

There are some TODOs which need to be addressed to make things smooth.

Install to disk, upgrades work.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2023-06-16 20:15:16 +05:30
Dmitriy Matrenichev
445f5ad542
feat: support API server load balancer
This commit adds support for API load balancer. Quick way to enable it is during cluster creation using new `api-server-balancer-port` flag (0 by default - disabled). When enabled all API request will be routed across
cluster control plane endpoints.

Closes #7191

Signed-off-by: Dmitriy Matrenichev <dmitry.matrenichev@siderolabs.com>
2023-06-16 10:09:20 -04:00
Dmitriy Matrenichev
665702ddd3
chore: fix cilium e2e tests
`WITH_CONFIG_PATCH_WORKER` check result was overriding any value set in `CONFIG_PATCH_FLAG` variable.
Move it to the different variable.

Signed-off-by: Dmitriy Matrenichev <dmitry.matrenichev@siderolabs.com>
Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2023-06-14 15:08:31 +04:00
Andrey Smirnov
e858bca3a2
test: fix cilium integration tests
Due to a bug (?) cilium tests don't clean up all the deployments & pods,
leaving one pod in 'Pending' state.

Kubernetes e2e tests check for !Running pods in `kube-system` namespace.

Fix by moving cilium tests to a separate namespace.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2023-06-13 20:41:15 +04:00
Christian Rolland
e6dde8ffc5
feat: add network chaos to qemu development environment
Add flags for configuring the qemu bridge interface with chaos options:
- network-chaos-enabled
- network-jitter
- network-latency
- network-packet-loss
- network-packet-reorder
- network-packet-corrupt
- network-bandwidth

These flags are used in /pkg/provision/providers/vm/network.go at the end of the CreateNetwork function to first see if the network-chaos-enabled flag is set, and then check if bandwidth is set.  This will allow developers to simulate clusters having a degraded WAN connection in the development environment and testing pipelines.

If bandwidth is not set, it will then enable the other options.
- Note that if bandwidth is set, the other options such as jitter, latency, packet loss, reordering and corruption will not be used.  This is for two reasons:
	- Restriction the bandwidth can often intoduce many of the other issues being set by the other options.
	- Setting the bandwidth uses a separate queuing discipline (Token Bucket Filter) from the other options (Network Emulator) and requires a much more complex configuration using a Heirarchial Token Bucket Filter which cannot be configured at a granular enough level using the vishvananda/netlink library.

Adding both queuing disciplines to the same interface may be an option to look into in the future, but would take more extensive testing and control over many more variables which I believe is out of the scope of this PR.  It is also possible to add custom profiles, but will also take more research to develop common scenarios which combine different options in a realistic manner.

Signed-off-by: Christian Rolland <christian.rolland@siderolabs.com>
Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2023-06-06 20:15:26 +04:00
Andrey Smirnov
383471c3e9
feat: update default Kubernetes to v1.27.2
See https://github.com/kubernetes/kubernetes/releases/v1.27.2

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2023-05-19 15:14:17 +04:00
Noel Georgi
3b36993b99
fix: rlimit nofile test
The test was added at the wrong place.

Signed-off-by: Noel Georgi <git@frezbo.dev>
2023-05-12 16:20:52 +05:30
Noel Georgi
4f720d4653
fix: revert: set rlimit explicitly in wrapperd
This reverts commit a2565f67416e9b9bc22f2d5506df9ea7771c0c8c.

The fix done in `a2565f67`, was actually a no-op caused by the
misunderstanding the fix done in Go and backported to [Go 1.20.4](ecf7e00db8).
The fix gave a false confidence that it was working when it was tested
against Talos `main` branch since the PR #7190 bumped `x/sys` package
from [v0.7.0 -> v0.8.0](ecf7e00db8), the actual change in `x/sys` can be found here at ff18efa0a3 which meant that when updating Go to 1.20.4 the `x/sys` package should been updated too. The `x/sys` package changed how the syscall to set the rlimit was called, it got moved into the Go stdlib instead of calling rlimit syscall in the `x/sys` package, which meant a combination of using Go 1.20.4 and an older `x/sys` package means `RLIMIT_NOFILE` value would not be set back to the original value.

The Talos 1.4 release branch currently have  `x/sys`
at [v0.7.0(https://github.com/siderolabs/talos/blob/v1.4.3/go.mod#L133),
so the backport would consist of this change along another commit bumping `x/sys` package to `v0.8.0`.

Fixes: #7198
Fixes: #7206

Co-authored-by: Utku Ozdemir <utku.ozdemir@siderolabs.com>
Signed-off-by: Noel Georgi <git@frezbo.dev>
2023-05-11 23:38:20 +05:30
Andrey Smirnov
a781dfb8e3
feat: update Kubernetes to 1.27.1
See https://github.com/kubernetes/kubernetes/releases/tag/v1.27.1

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2023-04-18 14:12:25 +04:00
Andrey Smirnov
e31f7f50b1
feat: update Kubernetes to 1.27.0
See https://github.com/kubernetes/kubernetes/releases/tag/v1.27.0

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2023-04-12 13:36:38 +04:00
Noel Georgi
5e9d836c3d
chore: add kernel module signtaure verification
Add kernel module signature verification for out of tree kernel modules.

Fixes: #7049

Signed-off-by: Noel Georgi <git@frezbo.dev>
2023-04-10 20:05:07 +05:30
Andrey Smirnov
5176d27dc5
feat: update Kubernetes to 1.27.0-rc.1
This has a fix for an issue for DaemonSets and graceful shutdown.

See https://github.com/kubernetes/kubernetes/releases/tag/v1.27.0-rc.1

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2023-04-07 12:58:37 +04:00
Andrey Smirnov
e095150a6e
test: bump CAPI components versions
Bringing up to the latest version in 1.x series.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2023-03-31 22:29:08 +04:00
Andrey Smirnov
cefa9c3ecb
feat: update Kubernetes to 1.27.0-rc.0
See https://github.com/kubernetes/kubernetes/releases/tag/v1.27.0-rc.0

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2023-03-27 14:32:54 +04:00
Andrey Smirnov
d30cf9c86e
test: fix misprint in e2e scripts
This bug breaks `e2e-extensions`.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2023-03-24 15:28:18 +04:00
Noel Georgi
c63cf90e32
feat: update k8s to v1.27.0-beta.0
Update k8s to v1.27.0-beta.0

Signed-off-by: Noel Georgi <git@frezbo.dev>
2023-03-21 23:59:17 +05:30
Andrey Smirnov
28713c2c4d
feat: update Kubernetes to 1.26.3
Mostly to backport to 1.3.x, main should be soon updated to 1.27.x.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2023-03-20 23:36:11 +04:00
Noel Georgi
a78281214d
feat: add cilium e2e tests
Add cilium e2e tests. The existing cilium check was very old, update to
latest cilium version and also add a test for KPR strict mode.

Signed-off-by: Noel Georgi <git@frezbo.dev>
2023-03-03 20:03:25 +05:30
Andrey Smirnov
dea17d7234
feat: update Kubernetes to v1.26.2
See https://github.com/kubernetes/kubernetes/releases/tag/v1.26.2

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2023-03-01 22:50:54 +04:00
Noel Georgi
5a01d5fd47
chore: run extension build as downstream
Run extensions build as downstream

Signed-off-by: Noel Georgi <git@frezbo.dev>
2023-02-27 20:11:10 +05:30
Noel Georgi
2d01480180
feat: automatically load modules based on hw info
Fixes: #6802

Automatically load kernel modules based on hardware info and modules
alias info. udevd would automatically load modules based on HW
information present.

Signed-off-by: Noel Georgi <git@frezbo.dev>
2023-02-14 19:57:13 +05:30
Andrey Smirnov
703d965951
feat: update Kubernetes to 1.26.1, etcd to 3.5.7
See:

* https://github.com/etcd-io/etcd/releases/tag/v3.5.7
* https://github.com/kubernetes/kubernetes/releases/v1.26.1

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2023-01-20 15:41:55 +04:00
Andrey Smirnov
63c17104c5
feat: update Kubernets to 1.26.0
See https://github.com/kubernetes/kubernetes/releases/tag/v1.26.0

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-12-09 18:13:35 +04:00
Andrey Smirnov
38e57bd12b
feat: update Kubernetes to v1.26.0-rc.1
See https://github.com/kubernetes/kubernetes/releases/tag/v1.26.0-rc.1

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-12-01 14:53:36 +04:00
Andrey Smirnov
fdbd380f60
feat: use 'registry.k8s.io' for Kubernetes images
See https://kubernetes.io/blog/2022/11/28/registry-k8s-io-faster-cheaper-ga/

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-11-28 14:13:54 +04:00
Andrey Smirnov
9382443baa
feat: update Kubernetes to v1.26.0-rc.0
Removed deprecated arg from the kubelet spec, as the arg is going to be
removed completely in v1.27 (kubelet defaults to remote CRI anyways).

Go modules not updated due to https://github.com/kubernetes/kubernetes/issues/113951

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-11-16 17:07:06 +04:00
Andrey Smirnov
3866d0e334
feat: update Kubernetes to v1.26.0-beta.0
See https://github.com/kubernetes/kubernetes/releases/tag/v1.26.0-beta.0

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-11-11 15:06:34 +04:00
Noel Georgi
6b771bc739
chore: bump deps
Bump kernel to 5.15.77
Bump Flannel to 0.20.1
Bump Kubernetes to v1.26.0-alpha.3

Bump go deps

Signed-off-by: Noel Georgi <git@frezbo.dev>
2022-11-04 21:48:12 +05:30
Andrey Smirnov
96aa9638f7
chore: rename talos-systems/talos to siderolabs/talos
There's a cyclic dependency on siderolink library which imports talos
machinery back. We will fix that after we get talos pushed under a new
name.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-11-03 16:50:32 +04:00
Andrey Smirnov
9c78b3aff4
feat: update Kubernetes to v1.26.0-alpha.2
See
https://github.com/kubernetes/kubernetes/releases/tag/v1.26.0-alpha.2

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-10-12 22:23:03 +04:00
Andrey Smirnov
8b09bd4b04
feat: update Kubernetes to v1.26.0-alpha.1
Talos 1.3.0 will ship with Kubernetes 1.26.0.

See https://github.com/kubernetes/kubernetes/releases/tag/v1.26.0-alpha.1

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-09-21 18:42:31 +04:00
Andrey Smirnov
e07c6ae99e
feat: update Kubernetes to v1.25.1
See https://github.com/kubernetes/kubernetes/releases/tag/v1.25.1

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-09-19 16:23:00 +04:00
Noel Georgi
4f37b668be
chore: remove capi hacks
Remove hacks used for CAPI tests

Signed-off-by: Noel Georgi <git@frezbo.dev>
2022-09-01 18:57:27 +05:30
Noel Georgi
b500d0aa90
chore: bump k8s to v1.25.0
Bump k8s to
[v1.25.0](https://github.com/kubernetes/kubernetes/releases/tag/v1.25.0)

Signed-off-by: Noel Georgi <git@frezbo.dev>
2022-08-24 18:58:44 +05:30
Andrey Smirnov
2f2d97b6b5
fix: don't wait for the hostname in maintenance mode
Fixes #6119

With new stable default hostname feature, any default hostname is
disabled until the machine config is available.

Talos enters maintenance mode when the default config source is empty,
so it doesn't have any machine config available at the moment
maintenance service is started.

Hostname might be set via different sources, e.g. kernel args or via
DHCP before the machine config is available, but if all these sources
are not available, hostname won't be set at all.

This stops waiting for the hostname, and skips setting any DNS names in
the maintenance mode certificate SANs if the hostname is not available.

Also adds a regression test via new `--disable-dhcp-hostname` flag to
`talosctl cluster create`.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-08-23 17:52:20 +04:00
Noel Georgi
faf92ce016
chore: bump kubernetes to v1.25.0-rc.1
Bump kubernetes to v1.25.0-rc.1

Signed-off-by: Noel Georgi <git@frezbo.dev>
2022-08-19 00:21:23 +05:30