Bump CAPI, controller-runtime, Talos dependencies, Kubernetes.
Fix some compatibility issues, but should be no functional changes.
Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
Rename to siderolabs, bump dependencies, controller-runtime, get rid of
netaddr, new SideroLink API, etc.
Use bootstrap cluster with a control plane + worker to avoid nasty
restarts when host-mode SideroLink IP pops up.
Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
This allows proper upgrades by replacing the `MetalMachineTemplate`.
If the `MetalMachineTemployment` is mutated, the changes are not rolled
out automatically.
Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
This is final part of #735, previous part in #823.
This imports all remaining changes with some fixups minus the webhook
changes.
This change adds detailed hardware information to the Server CRD.
Hardware info is extracted by the agent from SMBIOS.
The ServerClass CRD is also updated so more precise qualifiers can be used.
Co-authored-by: Gerard de Leeuw <gdeleeuw@leeuwit.nl>
Signed-off-by: Gerard de Leeuw <gdeleeuw@leeuwit.nl>
Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
This is basically subset of PR #735 with only CRD changes without actual
code changes to use new CRDs. As storage version is v1alpha2, every
access goes twice via conversion webhooks (for better test coverage).
Other parts of #735 will be incorporated in a follow-up PR, I decided to
split things up for easier review.
Example:
```bash
$ kubectl get servers.v1alpha1.metal.sidero.dev 49fd7c2d-1ba4-4157-8cc0-3f7212f119f0 -o yaml
...
cpu:
manufacturer: QEMU
version: pc-q35-6.0
hostname: pxe-3
managementApi:
endpoint: 172.25.0.1:39565
system:
family: Unknown
manufacturer: QEMU
productName: Standard PC (Q35 + ICH9, 2009)
serialNumber: Unknown
skuNumber: Unknown
version: pc-q35-6.0
$ kubectl get servers.v1alpha2.metal.sidero.dev 49fd7c2d-1ba4-4157-8cc0-3f7212f119f0 -o yaml
...
hardware:
compute:
processors:
- manufacturer: QEMU
productName: pc-q35-6.0
system:
family: Unknown
manufacturer: QEMU
productName: Standard PC (Q35 + ICH9, 2009)
serialNumber: Unknown
skuNumber: Unknown
version: pc-q35-6.0
```
We can make more changes to v1alpha2 resources in follow-up PRs.
Co-authored-by: Gerard de Leeuw <gdeleeuw@leeuwit.nl>
Signed-off-by: Gerard de Leeuw <gdeleeuw@leeuwit.nl>
Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
This PR has two major changes:
* retire the code which supported seamless migration from
pre-ServerBinding era to ServerBindings: creating `ServerBinding` on the
fly from the `MetalMachine` and `Server`; as there's no migration path
from pre-ServerBinding Sidero to the new version, it's time to drop it
* instead of creating workload cluster Kubernetes client each time, use
CAPI standard class to cache the client; the problem with "leaking"
clients is that HTTP/2 clients are almost never gc'ed, so they stay in
memory keeping an open connection with keepalives going both ways, so
caching lowers the load both on the controller and the control plane
endpoint
Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
Based on https://github.com/siderolabs/sidero/pull/794, but instead of
using a dedicated controller for all webhooks keep all of them in each
own controller.
Additionally, implement validation webhooks for `Server` resource, which
validates that `bootFromDiskMethod` and `configPatches` are using proper
values.
Signed-off-by: Artem Chernyshev <artem.chernyshev@talos-systems.com>
Imports should be consistently named so future changes are more readable and easier to understand.
Signed-off-by: Gerard de Leeuw <gdeleeuw@leeuwit.nl>
Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
Fixes#717
`caps-controller-manager` has proper webhook support, so use that for
readiness/liveness checks (standard CAPI way).
`sidero-controller-manager` doesn't have webhooks (we should fix it
eventually!), so using iPXE check
Also:
* bump Talos to 0.14.1
* use Talos provided default arguments for the agent environment (as
agent is running Talos kernel, it makes sense).
Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
Now `PXEBooted` condition is derived from `TalosInstalled` condition of
the linked `ServerBinding`.
This makes the node to use `pxe` boot until Talos installation succeeds.
Signed-off-by: Artem Chernyshev <artem.chernyshev@talos-systems.com>
- `TalosConfigLoaded` is set to false when the config load has failed.
- `TalosConfigValidated` is set to false when the config validation
fails on the node.
- `TalosInstalled` is set to true/false when talos installer finishes.
All conditions are set by the adapter on the `ServerBinding`, then
copied to the `MetalMachine`.
Signed-off-by: Artem Chernyshev <artem.chernyshev@talos-systems.com>
Get addresses from the events coming into events sink container.
Add v1beta1 support.
Update `metalmachine_controller` to set providerID earlier and add
ProviderSet condition to be set after the cluster nodes actually get
patched with the provider ID as well.
The condition is required to trigger reconcile on CAPI `machines`,
otherwise it never picks `Node` ready condition.
Signed-off-by: Artem Chernyshev <artem.chernyshev@talos-systems.com>
Fixes#615
This implements the SideroLink integration on Sidero side. This feature
requires Talos 0.14 from master as of right now.
SideroLink status is stored in `ServerBinding` resource for each server.
Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
This PR will add all of the changes necessary for supporting CAPI v1alpha4 resources.
Signed-off-by: Gerard de Leeuw <gdeleeuw@leeuwit.nl>
Signed-off-by: Artem Chernyshev <artem.chernyshev@talos-systems.com>
This also bumps cluster-api version to the latest 0.3 release.
Closes#476#484#486#487#490#491#492#493
Signed-off-by: Andrey Smirnov <smirnov.andrey@gmail.com>
This PR updates the naming of the two apps that make up sidero for
consistency. It also updates things like the Makefile, Dockerfile, and
kustomize to make sure image names are the same as these app names.
Signed-off-by: Spencer Smith <robertspencersmith@gmail.com>