crossplane / crossplane/crossplane
Allow composition pipeline steps to reference specific function revisions
- Dominant language
- Go
- Stars
- 12.1k
- Forks
- 1.3k
- Avg merge
- 1d 6h
- Merged PRs (30d)
- 46
Description
### What problem are you facing?
We have a large custom composition function that handles the logic.
Because the logic is in the function itself, we cannot do a staggered rollout. Once the new function is deployed all the composites will use it straight away, circumventing the composition revision.
The actual composition only contains a few parameters for the functions, and they are mostly static. So composition revisions as they are today are not helpful for this, as they don't have any reference to the function revisions to be used.
### How could Crossplane help solve your problem?
If Crossplane could track the version or revision of any given composition and match it to each function in the pipeline, it would be possible to expand the functionality of the composition revisions to also include functions.
Let's assume we have a composition with version 1 and a function version 1. We deploy some claims or composites with the `compositionUpdatePolicy` set to `Manual`. Now version 2 of the composition and the function are released. Version 2 contains some changes that will cause an interruption and should be deployed at a specific time, and the time varies for each claim/composite.
However, because the composition doesn't track which version of the function to use, the `compositionUpdatePolicy` is useless here. As soon as the function is deployed all resources will be reconciled against this. Even worse, because `compositionUpdatePolicy` is set to `Manual` the inputs will still be from version 1 of the composition. This could also lead to issues with function version 2 (breaking changes with inputs, etc...).
Right now to ensure that a specific version of a function matches to a specific composition is by adding the version to the name of the function itself. So instead of calling it `myfunc` the name would be `myfunc-v1.2.3`.
Contributor guide
Assessment
This issue has not been assessed yet.