Remove secondary IntegrationPlatform in favor of using IntegrationProfile settings
Requirement
Users can add a custom IntegrationPlatform CR to their individual user namespace in order to apply customized settings to the operator. In case multiple IntegrationPlatform CRs are added to the operator namespace the concept of secondary IntegrationPlatforms has been introduced.
We should separate user defined customization settings from the IntegrationPlatform CR for better maintainability.
Problem
The concept of user defined IntegrationPlatforms and secondary IntegrationPlatforms has been the source of many unknown side effects and general confusion in the past. The maintenance of the different IntegrationPlatforms is quite difficult.
Proposal
Completely remove the concept of secondary IntegrationPlatforms. Make the IntegrationPlatform 1:1 with an operator so there is only one single source of truth for the operator instance.
Introduce a separate custom resource definition called IntegrationProfile that allows the user to customize a subset of IntegrationPlatform settings. The user may add multiple IntegrationProfile custom resources in the user namespace and just select the configuration to apply (via annotation on the Integration resource for instance). The administrator may add multiple IntegrationProfile custom resources to the operator namespace, too in order to let the user choose from a predefined set of named configurations.
The separation of CRDs (IntegrationPlatform and IntegrationProfile) simplifies the logic as we do not have primary and secondary resources anymore. Also the user may not be allowed to overwrite all IntegrationPlatform settings for security reasons (e.g. buildStrategy, maxRunningBuildsLimit). These restricted settings may only be changed in the IntegrationPlatform resource by a system administrator.
Open questions
Do we need to apply an automated migration strategy from secondary IntegrationPlatform to IntegrationProfile
Relates to:
- https://github.com/apache/camel-k/issues/934
- https://github.com/apache/camel-k/issues/3397
Maybe IntegrationProfile is a better name than PlatformConfiguration
Closed with #5138