Skip to content

Document progressive function rollout with OCI references - #1163

Open
adamwg wants to merge 1 commit into
crossplane:masterfrom
adamwg:awg/function-rollout
Open

adamwg wants to merge 1 commit into
crossplane:masterfrom
adamwg:awg/function-rollout

Conversation

@adamwg

@adamwg adamwg commented Oct 28, 2026

Copy link
Copy Markdown
Member

Add docs for the progressive function rollout feature added in v2.5.

Design, for reference: https://github.com/crossplane/crossplane/blob/main/design/one-pager-controlled-rollout-of-composition-functions-v2.md

@netlify

netlify Bot commented Oct 28, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for crossplane ready!

Name Link
🔨 Latest commit 15a41de
🔍 Latest deploy log https://app.netlify.com/projects/crossplane/deploys/6ae244539b2ef524fb317479
😎 Deploy Preview https://deploy-preview-1163--crossplane.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
Lighthouse
Lighthouse
1 paths audited
Performance: 93 (🔴 down 1 from production)
Accessibility: 90 (🔴 down 2 from production)
Best Practices: 92 (no change from production)
SEO: 100 (no change from production)
PWA: 70 (no change from production)
View the detailed breakdown and full score reports

To edit notification comments on pull requests, go to your Netlify project configuration.

Add docs for the progressive function rollout feature added in v2.5.

Signed-off-by: Adam Wolfe Gordon <awg@upbound.io>
@adamwg
adamwg force-pushed the awg/function-rollout branch from a254027 to 15a41de Compare October 28, 2026 18:52

@jbw976 jbw976 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for adding these docs as a quick follow up to the now merged feature @adamwg!

The docs tracking issue #1157 mentions a few caveats that we should document, but I'm not sure they all made it into this PR. Is there more to do to make sure those are documented, did they end up not being important enough to include, etc.?

for `v0.13.2`. Both versions of the function are now running:

```shell {copy-lines="1"}
kubectl get functionrevisions -o="custom-columns=NAME:.metadata.name,PACKAGE:.spec.package,STATE:.spec.desiredState"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i think this should actually be .spec.image - apparently that's the right field on FunctionRevisions. I set up this scenario to verify:

.spec.package finds nothing:
❯ kubectl get functionrevisions -o="custom-columns=NAME:.metadata.name,PACKAGE:.spec.package,STATE:.spec.desiredState"

NAME                                                     PACKAGE   STATE
crossplane-contrib-function-go-templating-91622b9260e8   <none>    Active
crossplane-contrib-function-go-templating-d66b8d13aa14   <none>    Active

# .spec.image does work
❯ kubectl get functionrevisions -o="custom-columns=NAME:.metadata.name,IMAGE:.spec.image,STATE:.spec.desiredState"

NAME                                                     IMAGE                                                                                                                                  STATE
crossplane-contrib-function-go-templating-91622b9260e8   xpkg.crossplane.io/crossplane-contrib/function-go-templating@sha256:20198cb6ea5b4b8a48042343410ec9031e5ec43431d874364ecd3eac8e861290   Active
crossplane-contrib-function-go-templating-d66b8d13aa14   xpkg.crossplane.io/crossplane-contrib/function-go-templating@sha256:2edec9149ed78cfc109fdda53fef847055e4789f1d5984ffc2f9ce2b54241abc   Active

{{</hint>}}

Instead of a `functionRef`, a step can use the
{{<hover label="ociref" line="9">}}function{{</hover>}} field to name a function

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i think tihs label needs to be op-ociref to match the yaml below and work

different. Controllers outside the package manager manage these "external"
revisions. The package manager pulls the package, runs a function pod for each
one, and records their names in the parent `Function`'s
`status.externalFunctionRefs` field. Multiple external revisions of the same

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this supposed to be status.externalRevisionRefs to match the other mentions in this section?

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants