Commit Graph
89 Commits
Author SHA1 Message Date
Andrei Kvapil 66ab048612 fix ci pipeline
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-11-27 19:34:48 +01:00
Andrei Kvapil 4270d66376 Merge remote-tracking branch 'upstream/main' into refactor-engine 2025-11-25 18:35:43 +01:00
Andrei Kvapil a89dd819ff Return cozystack.io/system-app=true label
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-11-25 18:23:46 +01:00
Andrei Kvapil e0ec967120 Rename resources
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-11-25 17:43:33 +01:00
Andrei Kvapil e046206d2b refactor a bit
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-11-25 16:24:08 +01:00
Andrei Kvapil 451ef73172 refactor escaping
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-11-25 15:01:06 +01:00
Andrei Kvapil aaf2d1326a Move telemetry from cozystack-controller to cozystack-operator
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-11-25 02:17:05 +01:00
Andrei Kvapil ea1d0363d1 [platform] Get rid of lookups for apps
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-11-25 01:15:08 +01:00
Andrei Kvapil 45bd323c6e [platform] Get rid of lookups
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-11-24 20:09:03 +01:00
Andrei Kvapil 35086bc362 bug fixes and cleanup
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-11-24 15:12:37 +01:00
Andrei Kvapil 7b28139ad9 [platform] Add OCIRegistry with artefacts
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-11-24 13:44:16 +01:00
Andrei Kvapil 5883fbf7ea [cozystack-controller] Add reconciliation for CozystackResourceDefinitions
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-11-24 10:24:01 +01:00
Andrei Kvapil bb220647ad Instruct Cozystack API server and lineage webhook logic to use labels
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-11-22 23:20:17 +01:00
Andrei Kvapil 982727ac91 refactor and install flux-aio
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-11-22 01:35:59 +01:00
Andrei Kvapil 6c3a7b7efb remove flux from bundles
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-11-21 16:17:10 +01:00
Andrei Kvapil 923dbd209d Fix artifact sources processing
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-11-20 23:39:16 +01:00
Andrei Kvapil c23826efac separate artifactgeenrators
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-11-20 04:42:41 +01:00
Andrei Kvapil 36119cec45 Introduce CozystackPlatformConfiguration
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-11-20 04:28:44 +01:00
Andrei Kvapil f98b429ad2 Implement business logic
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-11-20 03:33:54 +01:00
Andrei Kvapil 8a0935fb37 Design CozystackBundle API
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-11-20 02:22:45 +01:00
Andrei Kvapil 17286ad213 fix merging values.yaml
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-11-19 17:59:06 +01:00
Andrei Kvapil 4b1525a5f8 Cleanup
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-11-19 15:32:40 +01:00
Andrei Kvapil 4f97aef04c Update apps to use ExternalArtifacts
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-11-19 14:31:54 +01:00
Andrei Kvapil 75197c6d25 Update apps to use ExternalArtifacts
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-11-19 00:41:09 +01:00
Andrei Kvapil c808ed6f24 Add ArtifactGenerators reconciler
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-11-19 00:07:20 +01:00
Andrei Kvapil 222b582b68 Introduce cozystack-operator
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-11-18 23:14:36 +01:00
Timofei Larkin aba4d2c977 Merge branch 'main' into vnc
Signed-off-by: Timofei Larkin <lllamnyp@gmail.com>
2025-11-18 11:39:34 +04:00
Timofei Larkin 6fdc9b0bad [vpc,dashboard] Expose subnet details in dashboard
## What this PR does

To use the new VPC feature, users need to pass the subnet ID to the VMs
they wish to launch in a given VPC/subnet. As the dashboard cannot
compute the subnet ID in the same manner as the Helm template, a helper
configmap is created, containing the details of the subnets attached to
a given VPC. This configmap is queried by the dashboard frontend to
render those details to the user.

### Release note

```release-note
[vpc,dashboard] Expose subnet details to end-user in the dashboard.
```

Signed-off-by: Timofei Larkin <lllamnyp@gmail.com>
2025-11-13 19:10:22 +03:00
Andrei Kvapil c81b222cf6 [dashboard] Introduce VNC console
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-11-13 00:57:40 -05:00
Andrei Kvapil d8237b4321 [dashboard-controller] Fix static resources reconciliation and showing
secrets

Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-11-07 17:30:26 +01:00
Andrei Kvapil 08be385665 [dashboard-controller] Fix labelSelectors
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-11-07 14:56:23 +01:00
Andrei Kvapil b45f4a6545 [dashboard] sync with upstream & enhancements
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-11-05 18:22:22 +01:00
Andrei Kvapil af460f1c41 [dashboard-controller] Move bages generation logic to internal dashboard
component

Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-11-04 17:11:31 +01:00
Andrei Kvapil bd9dcb52a3 [dashboard] Add new patches
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-10-31 18:06:44 +01:00
Timofei Larkin f3ba8eca8e [dashboard] Revert reconciler removal
## What this PR does

In a previous patch (#1555) the reconciliation loop for the OpenAPI UI
resources was accidentally removed. This patch reintroduces a separate
controller, which handles updates to CozystackResourceDefinitions and
creates, updates, or deletes the dashboard's custom resources.

### Release note

```release-note
[dashboard] Reintroduce the accidentally removed reconciler that
autoconfigures custom dashboard resources for the OpenAPI UI.
```

Signed-off-by: Timofei Larkin <lllamnyp@gmail.com>
2025-10-30 19:37:20 +03:00
Timofei Larkin 7cbe564ff1 [controller] Remove crdmem, handle DaemonSet
This patch drops the custom caching of the Cozystack resource
definitions in favor of the informer cache and adds a flag to the
Cozystack controller to select, whether it restarts the cozystack-api
deployment or the cozystack-api daemonset.

As with the new default behavior of using a local endpoint for the k8s
API by the lineage webhook and the Cozystack API, the Cozystack
controller now also defaults to restarting a Cozystack API DaemonSet
instead of a Deployment. To revert to the old behavior, disable the
local k8s API endpoint on the webhook and cozystack API and set the
`cozystackController.cozystackAPIKind` value in the Cozystack controller
system Helm chart to "Deployment".

```release-note
[controller] Use informer cache instead of the older bespoke
implementation and add support for running the Cozystack API as a
DaemonSet.
```

Signed-off-by: Timofei Larkin <lllamnyp@gmail.com>
2025-10-29 12:45:57 +03:00
Timofei Larkin d57f9acc7a [lineage] Check for nil chart in HelmRelease (#1525)
## What this PR does

Some HelmReleases use `chartRef` instead of `chart`. If the lineage
webhook finds such a HelmRelease, a nil pointer dereference happens.
This patch adds a nil check to guard against this.

### Release note

```release-note
[lineage] Add a nil check to guard against HelmReleases with a nil
.spec.chart field when traversing the ownership tree.
```
2025-10-16 18:06:14 +04:00
Timofei Larkin 354507a4ea [lineage] Check for nil chart in HelmRelease
Some HelmReleases use `chartRef` instead of `chart`. If the
lineage webhook finds such a HelmRelease, a nil pointer dereference
happens. This patch adds a nil check to guard against this.

```release-note
[lineage] Add a nil check to guard against HelmReleases with a nil
.spec.chart field when traversing the ownership tree.
```

Signed-off-by: Timofei Larkin <lllamnyp@gmail.com>
2025-10-16 15:52:14 +03:00
Timofei Larkin 85c9da58de [dashboard] Show service LB IP
Fix an incorrect JSON path that prevented Service LoadBalancer IPs from
rendering in the table view.

Signed-off-by: Timofei Larkin <lllamnyp@gmail.com>
2025-10-16 14:43:54 +03:00
Timofei Larkin 2a82273902 [lineage] Separate webhook from cozy controller
The lineage-controller-webhook makes a lot of outgoing API calls for
every event it handles, contributing to a high API server latency,
increasing the number of in-flight requests and generally degrading
performance. This patch remedies this by separating the lineage
component from the cozystack-controller and deploying it as a separate
component on all control-plane nodes. Additionally, a new internal label
is introduced to track if a resource has already been handled by the
webhook. This label is used to exclude such resources from
consideration. Addresses #1513.

```release-note
[lineage] Break webhook out into a separate daemonset. Reduce
unnecessary webhook calls by marking handled resources and excluding
them from consideration by the webhook's object selector.
```

Signed-off-by: Timofei Larkin <lllamnyp@gmail.com>
2025-10-14 10:50:28 +03:00
Andrei Kvapil 3b9fa33240 [dashboard] Remove Tenant resource from Marketplace; fix field override when typing
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-10-10 02:13:12 +02:00
Andrei Kvapil 2ae926d04e [dashboard] Fix listing modules
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-10-10 01:24:10 +02:00
Andrei Kvapil 0ba4d4494e [dashboard] Add filter for tenantresources (#1500)
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>

<!-- Thank you for making a contribution! Here are some tips for you:
- Start the PR title with the [label] of Cozystack component:
- For system components: [platform], [system], [linstor], [cilium],
[kube-ovn], [dashboard], [cluster-api], etc.
- For managed apps: [apps], [tenant], [kubernetes], [postgres],
[virtual-machine] etc.
- For development and maintenance: [tests], [ci], [docs], [maintenance].
- If it's a work in progress, consider creating this PR as a draft.
- Don't hesistate to ask for opinion and review in the community chats,
even if it's still a draft.
- Add the label `backport` if it's a bugfix that needs to be backported
to a previous version.
-->

## What this PR does


### Release note

<!--  Write a release note:
- Explain what has changed internally and for users.
- Start with the same [label] as in the PR title
- Follow the guidelines at
https://github.com/kubernetes/community/blob/master/contributors/guide/release-notes.md.
-->

```release-note
[]
```
2025-10-09 23:42:59 +02:00
Andrei Kvapil 19c91071d8 [dashboard] Add filter for tenantresources
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-10-09 23:42:08 +02:00
Timofei Larkin e2b4cd8bd0 [lineage] Use an auto-refreshing RESTMapper
Since the Cozystack extension API can now change dynamically while there
are live clients (the lineage webhook) querying this API, the REST
mapper of the client should "expect" that things may change and refresh
their discovery information when they get a cache miss to see if new
kinds have been registered.

```release-note
[lineage] Use an auto-refreshing RESTMapper in the webhook's API client
that tries to update its API discovery info when it fails to GET a
resource kind that was previously not registered in its schema.
```

Signed-off-by: Timofei Larkin <lllamnyp@gmail.com>
2025-10-09 13:12:06 +03:00
Timofei Larkin 9b0f919052 [controller, api] Select ingresses and services
This patch extends the resource-selecting function of the webhook to
also apply selectors to ingresses and services, like has been already
done for secrets. The Cozystack resource definitions have been upgraded
to contain two more fields: `ingresses` and `services` and populated
with counterparts of the legacy selectors from the dashboard roles.

```release-note
[controller, api] Enable marking ingresses and services as user-facing
and implement selectors for existing CozystackResourceDefinitions.
```

Signed-off-by: Timofei Larkin <lllamnyp@gmail.com>
2025-10-06 11:31:09 +03:00
Timofei Larkin 8d50dfb73f [controller,api] Specify visible secrets
This patch carries the selectors for secrets to be shown to end users
over from the legacy dashboard-resourcemap roles into the new
CozystackResourceDefinition selectors. Also a {{ .namespace }} template
variable is added to the variables supported in the `resourceNames`
field in the selector.

```release-note
[controller,api] Support {{ .namespace }} in `resourceNames` resource
selectors, add whitelist of secrets to show to end-users.
```

Signed-off-by: Timofei Larkin <lllamnyp@gmail.com>
2025-10-01 16:56:52 +03:00
Timofei Larkin c16e37e079 [controller,api] Refactor tenant resource label
This patch refactors the secret selectors to use the
`internal.cozystack.io/tenantresource` label for managing secret
visibility and removes any selectors based on it or the previous
`apps.cozystack.io/tenantresource` label, the idea being that this label
will only ever be set by the controller.

```
[controller,api] Refactor labels for the secret selector.
```

Signed-off-by: Timofei Larkin <lllamnyp@gmail.com>
2025-10-01 13:24:40 +03:00
Timofei Larkin 66004c83e2 [lineage, controller] Implement name selectors
This patch implements name-based selectors for
`CozystackResourceDefinitions.spec.secrets`. Application developers may
now specify secrets that should or should not be visible to end users by
specifying a `resourceNames` field with a string slice of acceptable
names. This will, for instance, let developers exclude a secret like
`postgres-dbname-superuser` that has a predictable name even if it does
not have predictable labels. Simple templates are supported, so
`postgres-{{ .name }}-superuser` is also a valid entry under
`resourceNames`.

```release-note
[lineage, controller] Let application developers determine resource
visibility for end users by name, as well as by labels.
```

Signed-off-by: Timofei Larkin <lllamnyp@gmail.com>
2025-10-01 12:29:04 +03:00
Andrei Kvapil 82926a8b2a [dashboard] fix: showing secrets with empty values
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-09-30 19:04:40 +02:00