Skip to content

v0.1.0

Choose a tag to compare

@stevendborrelli stevendborrelli released this 16 Jan 20:41
· 29 commits to main since this release
25ee73d

Release Notes - v0.1.0

Release Date: January 16, 2026

Note v0.1.0 contains a dependency bug, use v0.1.1 or newer.

Overview

This is the first published release of configuration-aws-network-ts, a TypeScript implementation of the Crossplane AWS Network Configuration. This configuration provides a example solution for provisioning AWS networking infrastructure using Crossplane's TypeScript Function SDK.

What's Included

Network Infrastructure

This configuration creates a complete AWS network setup including:

  • VPC with customizable CIDR blocks
  • Subnets (both public and private) across multiple availability zones
  • Internet Gateway for public subnet connectivity
  • Route Tables with automatic associations
  • Security Groups with configurable rules
  • Route Table Associations for subnet routing

Composite Resource API

The configuration provides a high-level Network custom resource with the following capabilities:

  • Namespaced resources for multi-tenant environments

  • Configurable parameters:

    • VPC CIDR block (default: 192.168.0.0/16)
    • Multiple subnets with availability zone and type (public/private) configuration
    • AWS region selection
    • Management policies for resource lifecycle control
    • ProviderConfig name for AWS authentication
  • Status reporting:

    • VPC ID
    • Subnet IDs (all, public, and private)
    • Security Group IDs

TypeScript Function

The configuration includes a custom Crossplane Function written in TypeScript that:

  • Uses the official @crossplane-org/function-sdk-typescript SDK
  • Provides type-safe resource generation with @crossplane-models/provider-upjet-aws
  • Runs as a containerized function with multi-architecture support (amd64/arm64)
  • Uses distroless container images for security and minimal footprint

Developer Experience

  • Testing: Unit tests with Jest
  • Linting: ESLint configuration for code quality
  • Formatting: Prettier for consistent code style
  • Type Checking: TypeScript strict mode with compile-time validation
  • CI/CD: GitHub Actions workflow for automated builds and releases
  • Local Development:
    • npm run local for local function testing
    • crossplane render support for testing compositions
    • Hot reload capabilities during development

Build & Package Support

  • Multi-architecture Docker images (amd64 and arm64)
  • Crossplane package generation for both the function and configuration
  • Automated push to OCI registries
  • Version management with Git-based pseudo-versioning
  • NPM scripts for all build operations

Package Information

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.1.0

Function Package

The function is automatically installed as a dependency of the configuration package, and
hasa suffix of -function, i.e., xpkg.upbound.io/upbound/configuration-aws-network-ts-function:v0.1.0

Getting Started

  1. Install the configuration package in your Crossplane cluster
  2. Configure AWS authentication (see README.md)
  3. Create a ProviderConfig for AWS
  4. Apply the example network resource from examples/network/

For detailed installation and usage instructions, see the README.md.

Requirements

  • Crossplane v1.14.0 or later
  • AWS Provider (upjet-aws) v1.0.0 or later
  • Kubernetes cluster with Crossplane installed

Dependencies

The configuration automatically installs the following dependencies:

  • xpkg.upbound.io/upbound/provider-aws-ec2 - AWS EC2 provider for VPC resources
  • xpkg.upbound.io/upbound/provider-family-aws - AWS provider family
  • The TypeScript function package

Example Usage

apiVersion: aws.platform.upbound.io/v1alpha1
kind: Network
metadata:
  name: my-network
  namespace: network-team
spec:
  parameters:
    id: my-network
    region: us-west-2
    providerConfigName: default
    vpcCidrBlock: 192.168.0.0/16
    subnets:
      - availabilityZone: us-west-2a
        type: public
        cidrBlock: 192.168.0.0/18
      - availabilityZone: us-west-2b
        type: public
        cidrBlock: 192.168.64.0/18
      - availabilityZone: us-west-2a
        type: private
        cidrBlock: 192.168.128.0/18
      - availabilityZone: us-west-2b
        type: private
        cidrBlock: 192.168.192.0/18

Technical Details

Technology Stack

  • Runtime: Node.js 24
  • Language: TypeScript 5.9
  • SDK: Crossplane Function SDK TypeScript v0.3.0
  • Models: @crossplane-models/provider-upjet-aws v2.3.0
  • Testing: Jest v30.2.0
  • Container Base: gcr.io/distroless/nodejs24-debian12

CI/CD Pipeline

The GitHub Actions workflow includes:

  • Version computation with Git-based pseudo-versioning
  • Code quality: Linting with ESLint
  • Testing: Unit tests with Jest
  • Type checking: TypeScript compilation validation
  • Multi-architecture builds: Docker images for amd64 and arm64
  • Package creation: Both function and configuration packages
  • Automated publishing: Push to xpkg.upbound.io registry

License

Apache-2.0

Author

Stefano Borrelli steve@borrelli.org

Support

For issues and questions, please use the GitHub issue tracker at:
https://github.com/upbound/configuration-aws-network-ts/issues

What's Changed

Full Changelog: v0.0.22...v0.1.0