Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow multiple operators in a single namespace #3397

Open
christophd opened this issue Jun 27, 2022 · 3 comments
Open

Allow multiple operators in a single namespace #3397

christophd opened this issue Jun 27, 2022 · 3 comments

Comments

@christophd
Copy link
Contributor

This is a follow-up on #3358

We should allow to install multiple operators in a single namespace for the sake of multi operator handling on a single cluster. At the moment we have static operator resource names (e.g. deployment name is camel-k-operator) so there can only be one single operator per namespace.

When dealing with multi tenancy on a cluster we should be able to run multiple (global) operators in a single namespace.

@squakez squakez added kind/feature New feature or request area/operator labels Jun 27, 2022
@github-actions
Copy link
Contributor

This issue has been automatically marked as stale due to 90 days of inactivity.
It will be closed if no further activity occurs within 15 days.
If you think that’s incorrect or the issue should never stale, please simply write any comment.
Thanks for your contributions!

@squakez squakez added this to the 2.0.0 milestone Feb 2, 2023
@squakez squakez modified the milestones: 2.0.0, 2.1.0 Jul 27, 2023
@valdar
Copy link
Member

valdar commented Sep 26, 2023

I think there is the opportunity to expand a little bit the scope of this issue by also provide a way to have multiple versions of the camel-k operator installed in parallel using label selection to restrict the resources each camel-k operator should watch and reconcile.

This would also hopefully simplify requiring a specific installation of the camel-k operator using the camel-k bundle without requiring to hand craft and tweak deployments.

Current State

The camel-k bundle sets up a camel-k operator upon installation which then relies on IntegrationPlatforms to configure its behavior.

current

The IntegrationPlatform is meant to:

  • configure various aspect of the operator i.e. the registry where container images are pushed, some maven build configurations options, etc

  • provide a basic multi tenancy model where each tenant is tied to a platform and scoped using an operator_id (in the form of a label/annotation on any resource that should be reconciled by the same operator)

  • provide a basic support for platform vs user configurations i.e. the platform admin can configure some aspect of the camel-k operatore but users can further customize them by creating a local IntegrationPlatform

  • provide a basic support for running more than one camel-k operator by introducing the concept of secondary platform

Even if some initial support for having multiple running camel-k operators exists, in order to have another operator installed, a deployment must be hand crafted and deployed to kubernetes resulting in additional manual work to be done and increasing the complexity of handling updated as the deployment must be amended manually as the camel-k bundle is not aware of such additional operators.

Also, dealing with multiple IntegrationPlatforms is very confusing, it is not used very often and discouraged.

Proposed state

Introduce a new model where the IntegrationPlatform is not used only to configure some aspect of the operator, but also as a way to request the deployment of a specific Camel K operator. Within this model there won’t be a single camel-k operator dealing with a multitude of configurations and behaviors but a number of camel-k operators reconciling specific resources potentially with specific requirements and behaviors.

To make this possible the camel-k operator needs to be split (at least from a responsibility point of view) into:

  • camel-k platform controller which is responsible to reconcile IntegrationPlatforms

  • camel-k operator which is responsible to reconcile all other camel-k CR such as Integration, Kamelet, KameletBinding, etc

proposed

@squakez squakez modified the milestones: 2.1.0, 2.2.0 Oct 17, 2023
@claudio4j
Copy link
Contributor

How do you view the CRD upgrade changes and the different controller versions ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
No open projects
Development

No branches or pull requests

4 participants