Commit Graph

23 Commits

Author SHA1 Message Date
Alexander Demicev 8718160b80
Perform `ResourceDiff` compare before patch (#317) (#318)
* Fmt fixes



* Implement custom resource comparison logic

Introduces a `ResourceDiff` trait and implements it for various Fleet API resources. This allows controllers to perform more granular comparisons between the desired state and the current state of resources, avoiding unnecessary updates and reconciliations.



* Improve readability of the wait conditions individually



---------

Signed-off-by: Danil-Grigorev <danil.grigorev@suse.com>
Co-authored-by: Danil Grigorev <danil.grigorev@suse.com>
2025-06-06 13:24:31 +02:00
Danil Grigorev 97fe195787
chore: Update dependencies, add clippy CI, and cleanup code (#305)
* chore: Update dependencies, add clippy CI, and cleanup code

Signed-off-by: Danil-Grigorev <danil.grigorev@suse.com>

* Add clipy task and fix lint

Downgrade opentelemetry to allow clippy to pass

Signed-off-by: Danil-Grigorev <danil.grigorev@suse.com>

---------

Signed-off-by: Danil-Grigorev <danil.grigorev@suse.com>
2025-05-27 11:54:12 +00:00
Danil Grigorev fc7250d68c
Bump kube to 1.0.0 (#296)
* Bump kube to 1.0.0

Signed-off-by: Danil-Grigorev <danil.grigorev@suse.com>

* Clippy/fmt fixes

Signed-off-by: Danil-Grigorev <danil.grigorev@suse.com>

---------

Signed-off-by: Danil-Grigorev <danil.grigorev@suse.com>
2025-05-16 09:23:42 +00:00
Danil Grigorev a8c77f93dd
Simplify dynamic watch setup version separation (#219)
* Drop finalizer on ClusterGroup

- Move BundleNamespaceMapping cleanup into Class reconciler
- Remove finalizer from ClusterGroup, causing issues
- Refactor controllers to use stable API (duplicate cache for
  ClusterGroup)
- Fix hot loop on Helm install due to chart version compare issue

Signed-off-by: Danil-Grigorev <danil.grigorev@suse.com>

* Simplify dynamic watch setup version separation

Current setup allows to use functionality available for k/k 1.32+
already with streaming_list() option by piggybacking type_meta
population on serialization as a typed object first with k/k below 1.32.

`TypeMeta` for core types in this scenario is always populated by
`k8s_openapi` implementation, even though list response does omit
type_meta for the inner set of objects.

Main differentiator here, is that streaming_list uses only `watch`,
which never omits type_meta of the resource, while regular watch setup
issues `list` request to collect initial events.

For the `Cluster` object defined as a `CRD`, `to_dynamic_event` performs
necessary conversion with type_meta population in-place.

Signed-off-by: Danil-Grigorev <danil.grigorev@suse.com>

* Implement default handling as trait extension

Signed-off-by: Danil-Grigorev <danil.grigorev@suse.com>

---------

Signed-off-by: Danil-Grigorev <danil.grigorev@suse.com>
2025-03-24 08:59:56 +00:00
Danil Grigorev 9c46365d26
Add `BundleNamespaceMapping` generation (#217)
* Add bundleNamespaceMapping generation

Signed-off-by: Danil-Grigorev <danil.grigorev@suse.com>

* Update the docs on cluster group and bundle namespace mapping

Signed-off-by: Danil-Grigorev <danil.grigorev@suse.com>

* Refactor to use ref mut when possible

Signed-off-by: Danil-Grigorev <danil.grigorev@suse.com>

---------

Signed-off-by: Danil-Grigorev <danil.grigorev@suse.com>
2025-03-19 12:14:19 +00:00
Danil Grigorev 82dc23c348
Replace cache wide requeue all with dynamic watches setup (#209)
Signed-off-by: Danil-Grigorev <danil.grigorev@suse.com>
2025-03-12 17:24:58 +00:00
Danil Grigorev 6724dc2895
Toleraite CAPI unintialized taint (#204)
Signed-off-by: Danil-Grigorev <danil.grigorev@suse.com>
2025-03-11 16:19:18 +00:00
Danil Grigorev d72756640d
Implement support for cross-namespace cluster classes (#185)
Signed-off-by: Danil-Grigorev <danil.grigorev@suse.com>
2025-02-20 23:30:35 +00:00
Danil Grigorev 01d78bbf24
Pass agent env vars from fleet config (#186)
Signed-off-by: Danil-Grigorev <danil.grigorev@suse.com>
2025-02-20 22:35:19 +00:00
Danil Grigorev 5b403db91b
Use Resource inherit for new types (#167)
- watch fleet-controller ConfigMap for changes

Signed-off-by: Danil-Grigorev <danil.grigorev@suse.com>
2025-01-30 15:24:09 +00:00
Danil Grigorev 3add3be4aa
Helmops support, kube-rs bump (#161)
* Bump kube, cluster-api, fleet-api

Signed-off-by: Danil-Grigorev <danil.grigorev@suse.com>

* Add OCI ops support

Signed-off-by: Danil-Grigorev <danil.grigorev@suse.com>

* Template cluster with CAPI resources

Signed-off-by: Danil-Grigorev <danil.grigorev@suse.com>

* Install RKE2 provider

Signed-off-by: Danil-Grigorev <danil.grigorev@suse.com>

---------

Signed-off-by: Danil-Grigorev <danil.grigorev@suse.com>
2025-01-27 23:51:10 +00:00
Danil Grigorev 7c786943c5
Release 0.4 prep (#119)
* Multi stage and multi arch builds

Signed-off-by: Danil-Grigorev <danil.grigorev@suse.com>

* Add image name

Signed-off-by: Danil-Grigorev <danil.grigorev@suse.com>

* Update metadata for release v0.4.0

Signed-off-by: Danil-Grigorev <danil.grigorev@suse.com>

* Fix clippy warnings

Signed-off-by: Danil-Grigorev <danil.grigorev@suse.com>

---------

Signed-off-by: Danil-Grigorev <danil.grigorev@suse.com>
Co-authored-by: Dominic Giebert <dominic.giebert@suse.com>
2024-11-27 22:49:18 +00:00
Danil Grigorev ece6697c45
Use upstream CRDs (#110)
Signed-off-by: Danil-Grigorev <danil.grigorev@suse.com>
2024-09-17 16:41:53 +00:00
Danil Grigorev 3de1621de4
Perform only patch or create+update, improve error handling (#88)
Signed-off-by: Danil-Grigorev <danil.grigorev@suse.com>
2024-08-02 10:54:05 +00:00
Danil Grigorev 11fb534c14
Filter duplicate events from ClusterGroup reconcile (#87)
- Enroll into unstable-runtime to control and reuse object streams from
  watches.
- Reduce cache size by removing managed_fields
- Set the finalizer on the ClusterGroup object to ensure deletion events
  are not missed, and object is recreated

Signed-off-by: Danil-Grigorev <danil.grigorev@suse.com>
2024-08-01 13:53:54 +00:00
Danil Grigorev a8d3bb20d5
Use host network for the fleet cluster (#77)
- Deploy CNI using fleet bundle, utilizing new configuration
- Set not-ready tolerations for the fleet agent rollout

Signed-off-by: Danil-Grigorev <danil.grigorev@suse.com>
2024-07-24 12:32:47 +00:00
Danil Grigorev bd03e8c0b0
Label selector based import setting (#68)
* Use development branch for the time being

Signed-off-by: Danil-Grigorev <danil.grigorev@suse.com>

* Add support for namespace and cluster label selectors

Signed-off-by: Danil-Grigorev <danil.grigorev@suse.com>

* Rework FleetAgentConfig and include selectors

Signed-off-by: Danil-Grigorev <danil.grigorev@suse.com>

* Add e2e including FleetAddonConfig

Signed-off-by: Danil-Grigorev <danil.grigorev@suse.com>

---------

Signed-off-by: Danil-Grigorev <danil.grigorev@suse.com>
2024-07-22 08:05:48 +00:00
Danil Grigorev 030fdb5d54
Allow name override for generated Fleet cluster (#58)
* Allow name override for generated Fleet cluster

Signed-off-by: Danil-Grigorev <danil.grigorev@suse.com>

* Established default agent namespace - fleet-addon-agent

Signed-off-by: Danil-Grigorev <danil.grigorev@suse.com>

---------

Signed-off-by: Danil-Grigorev <danil.grigorev@suse.com>
2024-06-11 10:12:09 +00:00
Danil-Grigorev aa5858c056
Add option for using agent initiated setup
Signed-off-by: Danil-Grigorev <danil.grigorev@suse.com>
2024-05-21 20:45:45 +02:00
Danil Grigorev 2fe2148bfa
Add ability to patch created objects to maintain the state
Signed-off-by: Danil Grigorev <danil.grigorev@suse.com>
2024-04-29 14:22:39 +02:00
Danil Grigorev 01b75af280
Allow to not specify owner references on fleet objects
Signed-off-by: Danil Grigorev <danil.grigorev@suse.com>
2024-04-29 14:21:34 +02:00
Danil Grigorev c71e1d194f
Add FleetAddonConfig, to enable/disable controllers
Signed-off-by: Danil Grigorev <danil.grigorev@suse.com>
2024-04-22 16:39:27 +02:00
Danil Grigorev 01b8b50fe9
Create a ClusterGroup per ClusterClass
- matching all Clusters referencing a ClusterClass
- fleet cluster gets a label with ClusterClass name
- emit an event on cluster/group create and delete
- add common tracing fields

Signed-off-by: Danil Grigorev <danil.grigorev@suse.com>
2024-04-21 15:13:35 +02:00