Description
Summary
Allow users to customise to adapt their deployment of self-hosted to the specifics of the environment/cluster it is applied to.
Context
Customers are finding it difficult to sometimes use KOTS because it does not allow them to add custom annotations or env variables to K8s resources. The installer produces a fixed manifest and that then gets applied to the kubernetes cluster. Any changes made forces them to re-apply those changes after an update to Gitpod, which can lead to confusion.
Specific reasons they need to customise / make changes:
- Annotate service to use internal networking
- Add an environment variable to S3 when used as a registry storage backend (internal reference)
Value
Allow Kots to work in more setups, because it can be customised to environment specific circumstances.
Acceptance Criteria
- Customers can add generic annotations and env variables to resources via a configuration field in the KOTS UI.
- This is well documented in our documentation.
Measurement
- Even more customers start using kots
Proposed solution
Allow for generic annotations on resources - have a way to set this in the KOTS UI & Installer Config. Then apply together with the installation.
Alternatives considered
- Open issues for the missing configuration options customers are doing currently with post-processing and solve this properly
- Rely on replicated git-ops flow (requires a feature request from us) for post-processing.
Additional Context
- Likely related to Add Option to Set Proxy Service as ClusterIP Type in KOTS Admin UI #9981 and 0b599a8
- Examples of what customers are currently customising:
Tasks
- Apply dummy functions to all components #10853
- Allow for custom annotations #10826
- Allow for custom envvars #10902
- Allow for custom labels (stretch goal) #10903
- Allow customization of Helm components #10942
- Configure KOTS input #10910
- Validate the input object #10908
- Document for Installer #10840
- Document for website #10941