IF YOU WOULD LIKE TO GET AN ACCOUNT, please write an
email to Administrator. User accounts are meant only to access repo
and report issues and/or generate pull requests.
This is a purpose-specific Git hosting for
BaseALT
projects. Thank you for your understanding!
Только зарегистрированные пользователи имеют доступ к сервису!
Для получения аккаунта, обратитесь к администратору.
Changes `gen config` to output `controlplane` and `join` machine config
types only. Users can manually set the `type` to `init` if they need to.
Signed-off-by: Andrew Rynhard <andrew@rynhard.io>
Now the latest value for CPU and Memory is also represented as COSI
resources.
Was going back and forth in the implementation but in the end decided to
use dedicated yaml structures for both CPU and Memory stats because:
- JSON tags are ignored by `go-yaml`, so the output is not really great.
- protobuf Talos definition contains fields which we don't really need
in the YAML output of `talosctl get`.
- current state of Talos resource service does not support protobuf
encoding for resources.
So the plan for Theila is to just use the structure as a dynamic object
without relying on protobufs. At least for now.
Signed-off-by: Artem Chernyshev <artem.0xD2@gmail.com>
This parses Talos cmdline args in addition to standard `ip=` cmdline
params.
GC'ed unused constant.
Signed-off-by: Andrey Smirnov <smirnov.andrey@gmail.com>
This controller provides three important aggregated resources to be
consumed by different interested parties:
* "default" node IP
* "current" addresses (node can be reached on these at the moment)
* "accumulative" addresses (for certSANs)
Example:
```
$ talosctl get nodeaddresses -n 172.20.0.2
NODE NAMESPACE TYPE ID VERSION ADDRESSES
172.20.0.2 network NodeAddress accumulative 4 ["10.244.0.0","10.244.0.1","172.20.0.2"]
172.20.0.2 network NodeAddress current 6 ["10.244.0.0","10.244.0.1","172.20.0.2"]
172.20.0.2 network NodeAddress default 1 ["172.20.0.2"]
```
Signed-off-by: Andrey Smirnov <smirnov.andrey@gmail.com>
It was a bad choice to name the method which returns resource spec
typecasted to the proper Go type as `Status()`, as certainly `Status`
has a different meaning for resources. So rename the method accordingly
to be `TypedSpec()`.
No functional or user-visbile changes, just renames.
Signed-off-by: Andrey Smirnov <smirnov.andrey@gmail.com>
The structure of the controllers is really similar to addresses and
routes:
* `LinkSpec` resource describes desired link state
* `LinkConfig` controller generates `LinkSpecs` based on machine
configuration and kernel cmdline
* `LinkMerge` controller merges multiple configuration sources into a
single `LinkSpec` paying attention to the config layer priority
* `LinkSpec` controller applies the specs to the kernel state
Controller `LinkStatus` (which was implemented before) watches the
kernel state and publishes current link status.
Signed-off-by: Andrey Smirnov <smirnov.andrey@gmail.com>
Go cross-compilation is not quite compatible with Go race detector, as C
toolchain is not cross-compilation ready.
Workaround is really simple: for race-enabled builds, don't build
multi-arch installer image (that is installer image which contains both
amd64 and arm64 Talos artifacts), but build installer artifacts only for
the target arch (skipping cross-compilation).
Signed-off-by: Andrey Smirnov <smirnov.andrey@gmail.com>
During boot sequence, if `talos.config`'s url has the uuid parameter, the uuid
value is retrieved via SMBIOS. However, at this part of the code it can happen
that the uuid is already set and valid. If this is the case, instead of
re-fetching the uuid, the one that is already set can be used.
closes#3676
Signed-off-by: Kevin Hellemun <17928966+OGKevin@users.noreply.github.com>
I wasn't able to reproduce this case, but looks like containerd can get
into a state when the snapshot was left behind, but container record is
missing. This prevents the container from being started with the error:
```
failed to create container kubelet: snapshot kubelet: already exists
```
This PR should help to fix this issue by trying to remove the snapshot
by name even if the container record is not found.
Signed-off-by: Andrey Smirnov <smirnov.andrey@gmail.com>
Fixes: https://github.com/talos-systems/talos/issues/3556
Introduce `coredns.disabled` flag to the machine config that allows
turning off coredns deployment during cluster bootstrap.
Signed-off-by: Artem Chernyshev <artem.0xD2@gmail.com>
The problem is that `pkg/machinery` is a submodule, so regular go walk
over the pattern `./...` doesn't include submodules, so we have to call
explicitly for the submodule.
This also enables go generate for all `./pkg`.
Signed-off-by: Andrey Smirnov <smirnov.andrey@gmail.com>
Remove `parsebool.sh` script as it's causing issues when the
release-tool is running `Makefile` commands to extract variable values.
Signed-off-by: Andrey Smirnov <smirnov.andrey@gmail.com>
Route handling is very similar to addresses:
* `RouteStatus` describes kernel routing table state,
`RouteStatusController` reflects kernel state into resources
* `RouteSpec` defines routes to be configured
* `RouteConfigController` creates `RouteSpec`s based on cmdline and
machine configuration
* `RouteMergeController` merges different configuration layers into the
final representation
* `RouteSpecController` applies the specs to the kernel routing table
Signed-off-by: Andrey Smirnov <smirnov.andrey@gmail.com>
Enable logging using default development config with some fine tuning.
Additionally, now `info` and below logs go to kmsg.
Signed-off-by: Artem Chernyshev <artem.0xD2@gmail.com>
VMware vSphere doens't allow talos.config to be set when deploying the OVA
due to missing vApp properties. Added talos.config to the ovf template to include
talos.config to fix this.
Fixes talos-systems#3669
Signed-off-by: Joost Coelingh <joost.coelingh@eu.equinix.com>
Extract config generation into a separate function. This reduces
cyclomatic complexity with the added benefit of being able to use
generation in another tool (e.g. Terraform provider to generate config).
Signed-off-by: Boran Car <boran.car@gmail.com>
* without `-print0` / `-0`, paths with spaces were skipped sometimes;
* `--stdin-filename` flag incorrectly consumed the first file.
Signed-off-by: Alexey Palazhchenko <alexey.palazhchenko@gmail.com>
This PR adds some documentation on how to use mayastor with talos and
links the video showing it in action.
Signed-off-by: Spencer Smith <robertspencersmith@gmail.com>
The change is essentially same as #3590, but applied to the upgrade path
which is very similar to the reset path.
We have to stop networkd (and remove the VIP/lease on the VIP) before we
leave and stop etcd. Plus we stop the kube-apiserver before the etcd is
stopped, so that we don't have unhealthy kube-apiserver.
Signed-off-by: Andrey Smirnov <smirnov.andrey@gmail.com>
This includes multiple controllers responsible for different stages of
`AddressSpec` conversion:
* `AddressConfigController` produces initial unmerged configuration from
multiple sources (more sources coming later, e.g. DHCP)
* `AddressMergeController` merges address configuration into final
representation
* `AddressSpecController` syncs resources with kernel state
Signed-off-by: Andrey Smirnov <smirnov.andrey@gmail.com>
This pulls in a newer version of smbios so that we can detect lower
smbios version and handle endianness if necessary.
Signed-off-by: Spencer Smith <robertspencersmith@gmail.com>
Fixes#3538
See also talos-systems/pkgs#276
As new containerd is now Go module-based, it pulls many more
dependencies if simply imported in `go.mod`, so I had to replace the
reference to the constant in `pkg/machinery/` to `containerd` volume
with simple value to avoid pulling Kubernetes dependencies into
`pkg/machinery`.
Also updates the kernel to include PR talos-systems/pkgs#275 for AES-NI
support.
Signed-off-by: Andrey Smirnov <smirnov.andrey@gmail.com>
This controller queries addresses of all the interfaces in the system
and presents them as resources. The idea is that can be a source for
many decisions - e.g. whether network is ready (physical interface has
scope global address assigned).
This is also good for debugging purposes.
Examples:
```
$ talosctl -n 172.20.0.2 get addresses
NODE NAMESPACE TYPE ID VERSION
172.20.0.2 network AddressStatus cni0/10.244.0.1/24 1
172.20.0.2 network AddressStatus cni0/fe80::9c87:cdff:fe8e:5fdc/64 2
172.20.0.2 network AddressStatus eth0/172.20.0.2/24 1
172.20.0.2 network AddressStatus eth0/fe80::ac1b:9cff:fe19:6b47/64 2
172.20.0.2 network AddressStatus flannel.1/10.244.0.0/32 1
172.20.0.2 network AddressStatus flannel.1/fe80::440b:67ff:fe99:c18f/64 2
172.20.0.2 network AddressStatus lo/127.0.0.1/8 1
172.20.0.2 network AddressStatus lo/::1/128 1
172.20.0.2 network AddressStatus veth178e9b31/fe80::6040:1dff:fe5b:ae1a/64 2
172.20.0.2 network AddressStatus vethb0b96a94/fe80::2473:86ff:fece:1954/64 2
```
```
$ talosctl -n 172.20.0.2 get addresses -o yaml eth0/172.20.0.2/24
node: 172.20.0.2
metadata:
namespace: network
type: AddressStatuses.net.talos.dev
id: eth0/172.20.0.2/24
version: 1
owner: network.AddressStatusController
phase: running
spec:
address: 172.20.0.2/24
local: 172.20.0.2
broadcast: 172.20.0.255
linkIndex: 4
linkName: eth0
family: inet4
scope: global
flags: permanent
```
Signed-off-by: Andrey Smirnov <smirnov.andrey@gmail.com>