v0.2.0
Release Notes - v0.2.0
Release Date: August 27, 2026
Overview
This release ports the repository to the Crossplane project
workflow. crossplane project build and crossplane project push replace the hand-written
Dockerfile, five shell scripts and an env file, and the composition function is now embedded
in the configuration package rather than built and published separately.
The Network API is unchanged. The XRD is byte-identical to v0.1.1, and rendering the example
produces the same sixteen composed resources. Existing Network resources need no edits.
The notable change for users is the Crossplane version floor: this release requires Crossplane
v2.0.0 or later.
Note that to develop a Crossplane Project in typescript you must use the branch at crossplane/cli#170.
Installing
Configuration Package
apiVersion: pkg.crossplane.io/v1
kind: Configuration
metadata:
name: configuration-aws-network-ts
spec:
package: xpkg.upbound.io/upbound/configuration-aws-network-ts:v0.2.0Function Package
The composition function is now embedded in the configuration package and is published and
installed along with it. There is no longer a separate function package to install or reference
yourself.
Upgrading from v0.1.1
Crossplane v2 is now required
The package metadata declares crossplane.version: ">=v2.0.0-0", up from ">=v1.17.0-0".
In practice this corrects metadata that was already understated: the XRD has been
apiextensions.crossplane.io/v2 with scope: Namespaced since v0.1.1, which Crossplane 1.x
cannot serve. The constraint now records what the package actually needs.
Namespaced managed resources must be activated
Crossplane 2 does not activate namespaced managed resources by default. Without a
ManagedResourceActivationPolicy the composed resources are created but never reconciled — they
simply sit there, which is a confusing failure to diagnose.
The package now ships one at apis/network/mrap.yaml covering every EC2 kind this configuration
composes, so a normal install needs no action. Note that crossplane composition render does not
need it, so this only shows up on a cluster.
Dependency changes
| Dependency | v0.1.1 | v0.2.0 |
|---|---|---|
provider-aws-ec2 |
v2 |
>=v2.7.0 |
function-auto-ready |
xpkg.upbound.io/crossplane-contrib/… >=v0.6.0 |
xpkg.crossplane.io/crossplane-contrib/… >=v0.7.0 |
Note that function-auto-ready also moved registry, from xpkg.upbound.io to
xpkg.crossplane.io.
If you copied the Composition
The pipeline's functionRef.name changed from upbound-configuration-aws-network-ts-function to
upbound-configuration-aws-network-tsnetwork, because the function is now embedded rather than a
separately published package. This only affects you if you vendored composition.yaml into your
own repository; installing the configuration package needs no action.
What's Changed from v0.1.1
Packaging and build
crossplane project buildproduces the multi-arch configuration package with the embedded
function image baked in, replacing theDockerfile,scripts/,envand per-arch
xpkg buildinvocations.crossplane project pushpublishes the configuration together with the embedded function
package it depends on.crossplane-project.yamlreplacespackage/crossplane.yamland
package-function/crossplane.yaml.
Repository layout
| Before | After |
|---|---|
function.ts, main.ts at the repository root |
functions/network/src/ |
package/apis/network/ |
apis/network/ (plus mrap.yaml) |
Dockerfile, scripts/, env |
crossplane project build / push |
Types are generated from the CRDs
The function's TypeScript types now come from a crossplane-models package generated at build
time from the CRDs of every dependency plus the XRDs in apis/, rather than the published
@crossplane-models/provider-upjet-aws package. schemas/ is generated and is not checked in.
Testing
Jest was replaced with Vitest. ts-jest caps its typescript peer below 7 while the toolchain
builds with TypeScript 7; Vitest has no typescript peer. The test cases themselves are
unchanged.
CI
- Seven CI jobs reduced to five (
version,cli,test,build,push). - GitHub Actions are now consistently SHA-pinned with the version in a trailing comment, and
moved to current releases (checkoutv7.0.1,setup-nodev7.0.0,setup-gov7.0.0,
download-artifactv8.0.1,upload-artifactv7.0.1,setup-qemuv4.2.0,setup-buildx
v4.3.0,login-actionv4.6.0). - A Renovate configuration was added.
Note for contributors
Building this project locally requires a crossplane CLI that includes
crossplane/cli#170, which is not in a released CLI
yet. CI builds the CLI from source for this reason. This affects contributors only — it has no
bearing on installing or running the released package.
What's Changed
- Port to a Crossplane project by @stevendborrelli in #20
- Update GitHub Actions and the provider floor by @stevendborrelli in #21
- Prepare the v0.2.0 release by @stevendborrelli in #22
Full Changelog: v0.1.1...v0.2.0