Commit Graph

68 Commits

Author SHA1 Message Date
Mauro Morales
be22b0a0b9 Let the user disable k8s (#800)
This fixes the issue when user specifically set k8s to be disabled

fixes https://github.com/kairos-io/kairos/issues/3561
2025-08-20 21:23:22 +00:00
Itxaka
b6985fbfeb Use kubevip libs instead of binary (#730) 2025-05-07 07:42:06 +00:00
rubyisrust
f2621bcfcf chore: fix typo (#701)
Co-authored-by: Itxaka <itxaka.garcia@spectrocloud.com>
2025-04-22 16:09:36 +02:00
Mauro Morales
66d62d2406 Adapt interactive installer to k8s distro (#713)
fixes https://github.com/kairos-io/kairos/issues/3125

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
2025-04-01 11:47:34 +02:00
Mauro Morales
c5c4badc1d Extend p2p functionality to k0s (#691)
Adds support for mesh network with k0s distro. The detection of the
distro is done by either having explicit config or by the binary
installed. By default, it uses k3s, for backwards compatibility.

Additionally, I refactored to split responsibilities. `master.go` will
have generic logic on how the steps to setup a master node, and
`worker.go` a worker node. It does so by interacting with the `K8sNode`
interface, and the detailed logic on how to do it for each distribution
has been moved to `k3s.go` and `k0s.go` respectively. This should make
it much simpler to debug or add new distributions.

Tests:

- [x] k3s single
- [x] k3s multi manual
- [x] k3s p2p auto
- [x] k0s single
- [x] k0s multi manual
- [x] k0s p2p auto

Covered:

- https://kairos.io/docs/examples/multi-node-p2p/
- https://kairos.io/docs/examples/multi-node/
- https://kairos.io/docs/examples/single-node/

---------

Signed-off-by: Mauro Morales <contact@mauromorales.com>
Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
2025-03-12 11:33:37 +01:00
Mauro Morales
d74f5c86b5 Fix passing arguments to k3s agent and k0s worker (#686)
Signed-off-by: Mauro Morales <contact@mauromorales.com>
2025-01-27 16:35:21 +01:00
Mauro Morales
2ec8886731 Run bootstrap if k0s config is present (#681)
And read args from both k3s or k0s

Signed-off-by: Mauro Morales <contact@mauromorales.com>
2025-01-24 16:18:27 +01:00
William Rizzo
5b9bdda87d Adding handling of k0s (#678)
This PR is dependent of
https://github.com/kairos-io/kairos-sdk/pull/546, and it adds the
possibility to deploy k0s instead of k3s.

refactored `oneTimeBootstrap()` to handle k0s and k3s.
Added `K0s` type to bootstrap `config` package
added k0s to provider `package`` InteractiveInstall()` and check for
mutual exclusivity

CC: @mauromorales

---------

Signed-off-by: William Rizzo <william.rizzo@gmail.com>
Signed-off-by: Mauro Morales <contact@mauromorales.com>
Co-authored-by: Mauro Morales <contact@mauromorales.com>
2025-01-14 17:13:17 +01:00
Ettore Di Giacinto
ee17f04079 feat(embedded registry): allow to enable embedded registry (#675)
This is a simple way to enable Spegel with k3s by following
https://docs.k3s.io/installation/registry-mirror?_highlight=spegel .

Part of https://github.com/kairos-io/kairos/issues/3100

Signed-off-by: mudler <mudler@localai.io>
2025-01-09 15:43:02 +01:00
Itxaka
bfb58a4de7 Use kairos logger (#637) 2024-09-18 10:57:35 +02:00
Itxaka
498b7429a7 Bump deps (#601) 2024-07-15 11:26:04 +02:00
tyzbit
40e8666450 feat(kubevip): static pod support (#520)
Closes https://github.com/kairos-io/kairos/issues/1993

To use:

```
kubevip:
  static_pod: true
```

I'm still getting my build environment set up so unfortunately I can't
test this functionality myself but the change should be straightforward.
Please review with this in mind, I definitely could have missed
something.

Signed-off-by: Tyler Hawkins <3319104+tyzbit@users.noreply.github.com>
2024-01-24 09:35:24 +01:00
Dimitris Karakasilis
05d3833dd9 Don't write an empty k3s service on disk (#519)
just use the one that was created by the k3s installer script

Fixes: https://github.com/kairos-io/kairos/issues/2125

Signed-off-by: Dimitris Karakasilis <dimitris@spectrocloud.com>
Co-authored-by: Mauro Morales <mauro.morales@spectrocloud.com>
2024-01-10 17:11:36 +01:00
Mauro Morales
9128c99233 Keep original k3s init file for openrc (#514)
Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

relates to kairos-io/kairos#2108

---------

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
2024-01-03 19:43:25 +01:00
Dimitris Karakasilis
fdd0f02d3b Remove the bus.EventAvailableReleases implementation (#496)
to let the kairos-agent handle upgrades from now on. It used to be that
provider-kairos returned releases from the provider-kairos repository
but it's no longer the case. Everything is release in the
kairos-io/kairos repository and the new versioneer library of the
kairos-sdk (which is used in the kairos-agent) is capabable of handling
both "standard" and "core" images.

Part of: https://github.com/kairos-io/kairos/issues/1999

Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
2023-12-08 14:04:27 +02:00
Itxaka
1b7876c513 Create empty k3s service file (#495) 2023-11-17 18:40:31 +01:00
Itxaka
c6177abb53 Set the proper yaml section for p2p (#483)
It was being set to kairos key but the proper key is p2p

Fixes: https://github.com/kairos-io/kairos/issues/1922

Signed-off-by: Itxaka <itxaka@kairos.io>
2023-10-18 17:16:41 +02:00
Itxaka
3b1a697180 Drop elemental calls (#478)
No longer used, move to kairos-agent

Also drop sha iso calculation as its done by the iso builder
automatically

Fixes https://github.com/kairos-io/kairos/issues/1798

Signed-off-by: Itxaka <itxaka@kairos.io>
2023-09-08 14:40:11 +02:00
Mauro Morales
9fa3d9f799 Bump kairos version (#446)
Tests are green and did a manual QA and it's working properly. I do have
two questions which I put as comments

---------

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
2023-07-10 18:10:33 +02:00
Itxaka
441863b21f ⬆️ Drop yip direct dep (#434) 2023-07-04 14:53:57 +02:00
Mateusz Urbanek
72c01e2657 fix: bump go.mod path to v2 (#431)
The path in `go.mod` should be ended in `/v2` suffix, as per [go.mod
module version numbers](https://go.dev/doc/modules/version-numbers).

---------

Signed-off-by: Mateusz Urbanek <mateusz.urbanek.98@gmail.com>
2023-07-03 21:07:41 +02:00
Dimitris Karakasilis
99b8b7c53c 1233-Rework tests (#306)
Fixes [#1233](https://github.com/kairos-io/kairos/issues/1233)

---------

Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
2023-05-04 19:53:20 +03:00
Itxaka
f7d5d81013 ⬆️ Bump deps to use kairos-sdk (#299)
First time bumping the provider, be gentle

Signed-off-by: Itxaka <itxaka.garcia@spectrocloud.com>

---------

Signed-off-by: Itxaka <itxaka.garcia@spectrocloud.com>
2023-03-31 14:31:54 +02:00
Oz Tiram
70903fdec8 🌱 add version information directly from git (#175)
Partial fix for https://github.com/kairos-io/kairos/issues/643

Signed-off-by: Oz Tiram <oz@spectrocloud.com>
2023-01-17 10:19:43 +01:00
Dimitris Karakasilis
0d636d2b2c Exclude .img images from upgrades (#160)
and fix renamed Earthly ARG

Fixes https://github.com/kairos-io/kairos/issues/598

Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>

Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
2023-01-03 23:16:40 +01:00
mudler
8338402905 🌱 Be consistent and respect MinNodes in the service
Signed-off-by: mudler <mudler@c3os.io>
2022-12-27 20:27:15 +01:00
Ettore Di Giacinto
05213f04b0 🐛 Fixup detection if block is missing (#143)
p2p block is optional, thus we might panic otherwise here

Signed-off-by: Ettore Di Giacinto <mudler@users.noreply.github.com>

Signed-off-by: Ettore Di Giacinto <mudler@users.noreply.github.com>
2022-12-22 09:19:24 +01:00
Ettore Di Giacinto
415820e66e Update internal/provider/config/config.go
Co-authored-by: Dimitris Karakasilis <dimitris@karakasilis.me>
2022-12-13 17:58:49 +01:00
Ettore Di Giacinto
4857ff8879 🌱 Change config to be more user friendly
Signed-off-by: Ettore Di Giacinto <mudler@mocaccino.org>
2022-12-12 15:38:21 +01:00
Ettore Di Giacinto
e193a3f3b2 🌱 Be consistent, there is no kairos block anymore
Signed-off-by: Ettore Di Giacinto <mudler@mocaccino.org>
2022-12-12 13:44:49 +01:00
Ettore Di Giacinto
19d541774b 🌱 Leader now prunes inactive members
Signed-off-by: Ettore Di Giacinto <mudler@mocaccino.org>
2022-12-12 11:49:38 +01:00
Ettore Di Giacinto
79fd3633a5 ⚠️ Change P2P configuration setting reference
Signed-off-by: Ettore Di Giacinto <mudler@mocaccino.org>
2022-12-09 16:36:30 +01:00
Ettore Di Giacinto
15a9d15a0c 🌱 HA block belongs to Kairos, not k3s
Signed-off-by: Ettore Di Giacinto <mudler@mocaccino.org>
2022-12-09 09:59:22 +01:00
Ettore Di Giacinto
8df00fcffe 🌱 Allow to disable DHT
Signed-off-by: Ettore Di Giacinto <mudler@mocaccino.org>
2022-12-08 14:51:31 +01:00
Ettore Di Giacinto
6b13d26a33 🌱 Fix linting
Signed-off-by: Ettore Di Giacinto <mudler@mocaccino.org>
2022-12-08 10:54:47 +01:00
Ettore Di Giacinto
1e56ddef74 🌱 Handle setup VPN manually if required
Signed-off-by: Ettore Di Giacinto <mudler@mocaccino.org>
2022-12-07 19:47:00 +01:00
Ettore Di Giacinto
5c5c432594 🌱 Do setup API only if a kairos block is defined
Signed-off-by: Ettore Di Giacinto <mudler@mocaccino.org>
2022-12-07 16:41:24 +01:00
Ettore Di Giacinto
4703feefd8 🌱 Propagate back roles
If we keep the API started, we want to keep streaming roles in case of completely disconnection between the nodes.
This guarantees that we keep streaming out our roles nevertheless of what happens

Signed-off-by: Ettore Di Giacinto <mudler@mocaccino.org>
2022-12-07 14:32:48 +01:00
Ettore Di Giacinto
8eb8b650b0 🌱 Keep into account that a Kairos block is optional
Signed-off-by: Ettore Di Giacinto <mudler@mocaccino.org>
2022-12-07 13:57:16 +01:00
Ettore Di Giacinto
ab68c1d333 🌱 Fire oneTimeBootstrap when a token is not defined
This doesn't change the documented flow, but makes sure that if someone did defined a network token and also enables k3s manually it still tries to co-ordinate over p2p.

Optionally, a `skip_auto` is introduced to manually bootstrap the node

Signed-off-by: Ettore Di Giacinto <mudler@mocaccino.org>
2022-12-07 11:35:17 +01:00
Ettore Di Giacinto
eab541874b Drop unused
Signed-off-by: Ettore Di Giacinto <mudler@mocaccino.org>
2022-12-06 22:15:57 +01:00
Ettore Di Giacinto
db3a4bc287 Add HA p2p support
Fixes: https://github.com/kairos-io/kairos/issues/2

Signed-off-by: Ettore Di Giacinto <mudler@mocaccino.org>
2022-12-06 22:15:12 +01:00
Ettore Di Giacinto
dd9127f7ce 🌱 Allow to set minimum number of node to wait for
Signed-off-by: Ettore Di Giacinto <mudler@mocaccino.org>
2022-12-05 11:53:33 +01:00
mudler
0517b1e766 Add kubeVIP support with p2p hybrid mode
In this way, the p2p API will just run the co-ordination to setup KubeVIP automatically
to the new cluster.

Signed-off-by: Ettore Di Giacinto <mudler@mocaccino.org>
2022-12-05 11:53:33 +01:00
mudler
c64a19f1d4 🌱 Refactor roles
Signed-off-by: mudler <mudler@c3os.io>
Signed-off-by: Ettore Di Giacinto <mudler@mocaccino.org>
2022-12-05 11:53:33 +01:00
Ettore Di Giacinto
01df674098 Fixup fixture
Signed-off-by: Ettore Di Giacinto <mudler@users.noreply.github.com>
2022-12-04 10:58:25 +00:00
Ettore Di Giacinto
228286d002 🤖 Reboot into tests
Signed-off-by: Ettore Di Giacinto <mudler@users.noreply.github.com>
2022-12-03 22:48:13 +00:00
Ettore Di Giacinto
2c48a95228 🌱 tidy
Signed-off-by: Ettore Di Giacinto <mudler@users.noreply.github.com>
2022-12-03 22:48:13 +00:00
Ettore Di Giacinto
1ef914c818 Set permissions
Signed-off-by: Ettore Di Giacinto <mudler@users.noreply.github.com>
2022-12-03 22:48:13 +00:00
Ettore Di Giacinto
a7859d1665 🌱 Execute the cc and restart DNS service
Signed-off-by: Ettore Di Giacinto <mudler@users.noreply.github.com>
2022-12-03 22:48:13 +00:00