This document defines a high level roadmap for Crossplane development and upcoming releases. Community and contributor involvement is vital for successfully implementing all desired items for each release. We hope that the items listed below will inspire further engagement from the community to keep Crossplane progressing and shipping exciting and valuable features.
Any dates listed below and the specific issues that will ship in a given milestone are subject to change but should give a general idea of what we are planning. We use the milestone feature in Github so look there for the most up-to-date and issue plan.
-
- v1.1.0 Composition enhancements, provider code gen, security, and rate limiting
- v1.0.0 Stable v1 APIs, package dep resolution, Prom metrics, and more
- v0.14.0 Hardening, robustness, v1beta1 APIs in core
- v0.13.0 Paving the way for a v1.0 release of Crossplane
- v0.12.0 Upgrade claims/classes to a more powerful composition approach
- v0.11.0 Composition v1alpha1, OAM support, backup/restore, docs overhaul
- v0.10.0 Backup/restore, resource composition, Open Application Model
- v0.9.0 Providers, Stacks, Apps, Addons
- v0.8.0 Stacks simplify cloud-native app and infrastructure provisioning
- v0.7.0 Deploy Workloads to any Kubernetes Cluster, including bare-metal!
- v0.6.0 Aggregated Stack Roles, GKECluster to v1beta1, test automation
- v0.5.0 Continuous deployment for GitLab and ArgoCD with v1beta1 APIs
- v0.4.0 Initial Rook support & stable v1beta1 APIs for AWS, GCP
- v0.3.0 Enable Community to Build Providers
- v0.2.0 Workload Scheduling, Expand Supported Resources
- v0.1.0 Proof of Concept
-
General
-
Providers
- AWS Bucket Late Init support provider-aws#536
- Code Generation of Providers (towards 100% coverage)
- AWS ACK Code Generation of the Crossplane provider-aws
- support additional resources from aws-sdk-go/models/apis
- RDS DBCluster provider-aws#546
- SNS services provider-aws#451
- Generate reference and selector fields provider-aws#484
- Generate late-init function provider-aws#491
- Generate is-up-to-date function provider-aws#490
- Azure Code Generation of the Crossplane provider-azure
- auto generate available types from the Azure metadata
- Clouds that don't have code gen pipelines
- Wrap stateless Terraform providers #262
- AWS ACK Code Generation of the Crossplane provider-aws
-
General
- Observe-only Crossplane resources (e.g. VPC, Subnet) for use in Compositions - #1772
- Iterate on and formalize the Crossplane Resource Model (XRM) #2068
- Managed resources can accept an array of resource references for cross-resource references (CRR)
- Per-namespace mapping of IRSA and workload identity for finer grained infra permissions in multi-tenant clusters #2116
- First-class multi-language support for defining
Compositions
andConfiguration
packages #1955
-
Composition
-
Package Manager
- Conversion webhooks to support installing multiple API versions at the same time
-
Providers
-
Code Generation of Providers (100% coverage)
-
AWS ACK Code Generation of the Crossplane provider-aws
- auto generate all available types in the aws-sdk-go/models/apis
-
Azure Code Generation of the Crossplane provider-azure
- auto generate all available types from the Azure metadata.
- Proposal for alignment with ASO's deployment management scheme provider-azure#193
-
GCP Provider
- Explore code generation of a native Crossplane provider-gcp
-
Clouds that don't have code gen pipelines
- Wrap stateless Terraform providers #262
- VMWare vSphere Provider (v1alpha1)
- using codegen & stateless Terraform Providers
- https://github.com/crossplane-contrib/provider-terraform-vsphere
-
GCP: DNS, SSL, and Ingress support #1123 #1123
-
GCP storage buckets to v1beta1 crossplane/provider-gcp#130
-
-
Additional providers being incubated in https://github.com/crossplane-contrib
-
-
GitLab Integration with Crossplane v1.0+
- Currently the auto deploy app only supports PostgreSQL DBs
- Support additional managed services from GitLab ADO pipelines
- Add support for MySQL, Redis, Buckets, and more.
- Upgrade to Crossplane v1.0+ with XRDs & Compositions with default cloud service catalogs
-
Ease-of-use and improved experience
- Standalone mode allowing Crossplane to run in a single container or process #274
-
General
- Support Fs and Env ProviderConfig credential sources crossplane-runtime#236, #2070
- AWS provider-aws#518
- Azure provider-azure#218
- GCP provider-gcp#301
- Guide for using Vault for Provider credentials
- Rate limiting support in the
ManagedReconciler
#40 - see related blog post
- Support Fs and Env ProviderConfig credential sources crossplane-runtime#236, #2070
-
Composition
-
Providers
- AWS networking and VPC resources to v1beta1 provider-aws#145
- AWS tag update support for IAMRoles #2118
- AWS code generation of Crossplane Provider resources using the AWS Go Code Generation Pipeline:
- Code Generation Guide
- Generate Crossplane resources for all services available in ACK - with v1alpha1 support
- AWS Secrets Manager is now code generated from the ACK codegen pipeline
- Replace hooks.go with
Update
functionality provider-aws#483 - Support alternate names for
ReadMany
target.Items
provider-aws#492
- VMWare vSphere Provider (Experimental) - using codegen & stateless Terraform Providers
-
Stable v1 APIs
-
Hardening and cleanup for v1.0
- Prometheus metrics for all binaries #314
-
Composition
- Claim update propagation to its underlying composite resource #1649
- Experimental
CustomComposition
#1995- See example: cdk8s-team/cdk8s-operator#16
-
Package Manager
- Basic dependency resolution for packages #1842
- i.e. automatically install the providers a configuration needs.
- Basic dependency resolution for packages #1842
-
Providers
-
AWS Provider
- more API types crossplane/provider-aws#149
-
Helm Provider
- v1beta1 APIs
-
Code Generation of Providers (work-in-progress)
- AWS ACK Code Generation of the Crossplane provider-aws
- Azure Code Generation of the Crossplane provider-azure
- Clouds that don't have code gen pipelines
- Wrap stateless Terraform providers (work-in-progress) #262
-
-
Experimental cdk8s support: https://github.com/crossplane-contrib/crossplane-cdk8s
-
Hardening and cleanup for v1.0
- Leader election for all controllers #5
-
Composition
-
Package Manager
-
Providers
-
AWS Provider: more API types crossplane/provider-aws#149
-
Helm Provider
- Support installing a Helm
Release
from a CrossplaneComposition
- v1alpha1 APIs crossplane-contrib/provider-helm#38
- Support installing a Helm
-
Code Generation of Providers (work-in-progress)
- AWS ACK Code Generation of the Crossplane provider-aws
- Azure Code Generation of the Crossplane provider-azure
- Clouds that don't have code gen pipelines
- Code gen with stateless Terraform providers #262
- https://github.com/kasey/provider-terraform-aws/tree/master/generated/resources
-
-
Open Application Model (OAM)
-
Remove deprecated
KubernetesApplication
,KubernetesTarget
,KubernetesCluster
- replaced by Composition and provider-helm
-
Composition
- Final type names for XRDs and XRCs:
crossplane#1679
CompositeResourceDefinition
(XRD) replaces InfrastructureDefinition and InfrastructurePublication types.Composite Resource Claims
(XRCs) replace Requirements and they no longer require any specific kind suffix.
- Hardening and robustness enhancements towards v1beta1 quality
- Final type names for XRDs and XRCs:
crossplane#1679
-
Package Manager
- Streamlined v2 design
crossplane#1616
- Supports installing and managing Crossplane
Providers
andConfigurations
- Supports installing and managing Crossplane
- Package Manager v2
crossplane#1675
- Upgrade and rollback support
- Faster package deploys
- Paves the way for automatic package dependency resolution
- Streamlined v2 design
crossplane#1616
-
RBAC Manager
- Automatically manages the RBAC roles and bindings required by
Providers
andComposite
resources - An optional deployment that uses RBAC privilege escalation
- Crossplane no longer requires cluster-admin privileges.
- Automatically manages the RBAC roles and bindings required by
-
Providers
-
General
- Default
ProviderConfig
supported & migration - Removed deprecated claims/classes - you can now create your own claim kinds with Composition
- Default
-
AWS Provider: more API types provider-aws#149
-
Helm Provider
- experimental support - for use in
Compositions
- experimental support - for use in
-
Code generation of Crossplane providers
- Evaluate generating native Crossplane providers with existing code gen pipelines
- Evaluate wrapping stateless Terraform providers (work-in-progress) #262
-
-
Open Application Model (OAM)
- Moved AppConfig controller out of core
- Install via:
helm install crossplane
with the--set alpha.oam.enabled=true
flag
- Install via:
- Enhance health scope with informative health condition #194
- Add component webhook to support workload definition type #198
- Add health check support for containerized.standard.oam.dev in Health #214
- Run with fewer privileges #228
- Hardening and robustness enhancements towards v1beta1 quality
- Moved AppConfig controller out of core
-
Composition
- Default composition for a definition crossplane#1471
- Enforced composition for a definition crossplane#1470
- Enhanced testing crossplane#1474
- Deprecate resource claims and classes crossplane#1479
-
Package Manager
- Passing non-zero fsGroup in package deployments crossplane#1577
-
Providers
-
AWS Provider: additional API types provider-aws#149
- EKSCluster to v1beta1
- ACMPCA Certificate Authority provider-aws#226
- IAMRolePolicyAttachment to refer IAMPolicy
- SQS
- Route53
-
GCP Provider
- GKE DnsCacheConfig, GcePersistentDiskCsiDriverConfig, KalmConfig provider-gcp#229
- PubSub support provider-gcp#241
-
-
Open Application Model (OAM)
- Design: resource dependencies in OAM oam-kubernetes-runtime#24
- Design: versioning mechanism oam-kubernetes-runtime#29
-
Composition
- enhancements for v1alpha1 quality #1343
-
Providers
-
v1beta1 quality conformance doc #933
-
AWS Provider
- Networking and VPC resources to v1beta1 crossplane/provider-aws#145
- more API types crossplane/provider-aws#149
- DynamoDB crossplane/provider-aws#147
- SQS crossplane/provider-aws#170
- Cert Manager crossplane/provider-aws#171
- DNS crossplane/provider-aws#172
-
Azure Provider
- Firewall rules for MySQL and PostgreSQL provider-azure#146
-
-
Open Application Model (OAM)
- Enhanced support for OAM (Open Application Model) API types
-
Docs overhaul (part 3/3) - https://crossplane.io/docs
- Backup / restore docs crossplane#1353
- Documentation (and diagrams) about data model in Crossplane (including both application and infrastructure)
- Updated docs sidebar
-
Backup/restore compatibility with tools like Velero
- Allow a KubernetesApplication to be backed up and restored crossplane#1382
- Allow connection secrets to be backed up and restored crossplane-runtime#140
- Support backup and restore of all GCP managed resources provider-gcp#207
- Support backup and restore of all Azure managed resources provider-azure#128
- Support backup and restore of all AWS managed resources provider-aws#181
- Allow Stack, StackInstall, StackDefinition to be backed up and restored crossplane#1389
-
Composition
-
Providers
- Azure Provider
- CosmosDB Account supports MongoDB and Cassandra provider-azure#138
- Azure Provider
-
Open Application Model (OAM)
- Experimental support for OAM (Open Application Model) API types
- Revised Kubernetes-friendly OAM spec
- OAM App Config Controller support #1268
- Enhance Crossplane to support a choice of local and remote workload scheduling
- OAM sample app: crossplane/app-service-tracker
-
Docs overhaul (part 2/3) - https://crossplane.io/docs
- Documentation (and diagrams) about data model in Crossplane (including both application and infrastructure)
- Updated docs sidebar
- Rename GitHub org from crossplaneio to crossplane
- Docs overhaul (part 1/3) - https://crossplane.io/docs
- New
packageType
options inapp.yaml
, including:Provider
,Stack
,Application
, andAddon
(#1348) plus repo name updates: #1300 - Incorporate versioning and upgrade design feedback #1160
- Support for NoSQL database claims. Providers may now offer managed services that can be bound to this claim type. #1356
KubernetesApplication
now supports:- Experimental support for OAM (Open Application Model) API types:
- Revised Kubernetes-friendly OAM spec
- OAM App Config Controller support #1268
- Enhance Crossplane to support a choice of local and remote workload scheduling
- Security enhanced mode with
stack manage --restrict-core-apigroups
, which restricts packages from being installed with permissions on the core API group. #1333 - Stacks Manager support for private repos and robot account credentials
- Release process and efficiency improvements
- Stacks for ready-to-run cloud environments (GCP, AWS, Azure) #1136
- Spin up secure cloud environments with just a few lines of yaml
- Single CR creates networks, subnets, secure service connectivity, k8s clusters, resource classes, etc.
- PostgreSQL 11 support on the
PostgreSQLInstance
claim- thanks first-time contributor @vasartori! #1245
- Improved logging and eventing
- Observability Developer Guide for logging and eventing in Crossplane controllers
- crossplane/crossplane-runtime#104 instrumentation and updated all cloud provider stacks
- Enable provider-aws to authenticate to the AWS API using IAM Roles for Service Accounts
- when running on EKS provider-aws#126
- Host-aware Stack Manager #1038
- Enables deploying multiple Crossplane instances watching different Kubernetes API servers on a single Host Kubernetes cluster.
- RBAC group and role refinements
- Support default select values in the UI schema for Crossplane resources
- Template Stacks (alpha)
- Kustomize and helm engine support for pluggable rendering
- Ported stack-minimal-gcp and sample-stack-wordpress to use Template Stacks
- Published stack-minimal-gcp and sample-stack-wordpress to https://hub.docker.com/u/crossplane
- KubernetesTarget kind for scheduling KubernetesApplications #859
- Improved the UI schema for resources supported by Crossplane stacks #38
- GCP networking resources to v1beta1 crossplane/provider-gcp#131
- GCP integration tests crossplane/provider-gcp#87
- Template Stacks (experimental): integrate template engine controllers with stack manager #36
- The Stack Manager supports more granular management of permissions for cluster (environment) and namespace (workspace) scoped stacks.
- Default admin, editor, and viewer roles automatically updated as Stacks are installed/uninstalled.
- Admins can create role bindings to these roles, to simplify granting user permissions.
- Details in the design doc.
- GKE cluster support has moved to
v1beta1
with node pool support.- The
v1alpha3
GKE cluster support has been left intact and can run side by side with v1beta1
- The
- Integration test framework in the crossplane-runtime, reducing the burden to provide integration test coverage across all projects and prevent regressions.
- Helm 2 and 3 compatibility, Crossplane and all of its CRDs are supported to be installed by both Helm2 and Helm3
- Design and architecture documents:
- Bug fixes and other closed issues
-
GitLab 12.5 Auto DevOps (ADO) integration phase 1 - provision managed PostgreSQL from GitLab ADO pipelines
- Subset of the overall GitLab Auto DevOps integration
- Crossplane as a GitLab-managed app (phase1) - provision managed PostgreSQL from GitLab ADO pipelines
-
CD integration examples ArgoCD #631
-
Stable v1beta1 Services APIs for managed databases and caches (Azure) #863
- Upgrade Azure stack to v1beta1: Azure Database and Azure Cache for Redis with high-def CRDs & controllers
- crossplane-contrib/provider-azure#28 Azure SQL and Redis resources v1beta1
- Upgrade Azure stack to v1beta1: Azure Database and Azure Cache for Redis with high-def CRDs & controllers
-
Bug fixes and test automation
-
Claim-based provisioning of Rook-managed databases #862
- Support for CockroachDB and Yugabyte DB
-
Stable v1beta1 Services APIs for managed databases and caches (GCP, AWS) #863
- Align on shape of APIs & best practices
- Beta meta model w/ DB & Redis, so users can deploy to dev/test/prod
- Naming scheme for all resources.
- Managed resource name as external name for all resources.
- Upgrade GCP stack to v1beta1: CloudSQL and CloudMemoryInstance with high-def CRDs & controllers
- Upgrade AWS stack to v1beta1: RDS and ReplicationGroup with high-def CRDs & controllers
- Align on shape of APIs & best practices
-
Cross-resource referencing for networks, subnets, and other resources #707
- Support
kubectl apply -f
for a directory of resources to cleanly support GitOps for both infrastructure and apps - Sample infra and app repos you can
kubectl apply -f
and have a working environment quickly- infrastructure (networks, subnets, managed k8s cluster, resource classes for databases, etc.)
- apps (e.g. kubernetes core resources for e.g. a Wordpress app plus the resource claims for managed service dependencies
- Update crossplane.io services guides and stacks guides to use
kubectl apply -f
technique
- Support
-
Release automation for shorter release cycles and hot fixes #864
- Updating pipelines to include automation #6
- SonarCloud checks for cloud provider stacks #875
- crossplane-runtime build pipelines crossplane/crossplane-runtime#14
-
Trace utility for enhanced debugging support. #744
-
Simple Resource Class Selection #952
-
Crossplane supporting work for GitLab 12.5 Auto DevOps #867
-
Real-world applications on-top of Crossplane
- GitLab #284
- More applications to follow
-
Resource Class enhancements: default classes, validation, annotation
-
Infra Stacks (out-of-tree) with single-region secure connectivity between k8s and DBaaS, Redis, Buckets
- Stacks Manager: App vs. Infra Stacks, namespace isolation, annotation support #609
- Move Infra Stacks (GCP, AWS, Azure) into separate repos & upgrade to kubebuilder2 #612
- GCP Infra Stack: single-region secure connectivity: GKE & CloudSQL, CloudMemorystore, Buckets #615
- AWS Infra Stack: single-region secure connectivity: EKS & RDS, ElastiCache, Buckets #616
- Azure Infra Stack: single-region secure connectivity: AKS & AzureSQL, AzureCache, Buckets #617
- Stacks v1 CLI / kubectl plugin: init, build, push commands #614
-
Docs & examples
- Infra Stack Developer Guide #610
- Portable Wordpress App Stack (kubebuilder-based) published to registry #572
- Refresh 0.3 Docs: reflect enhancements, better on-boarding UX, easier to get started #625
- Crossplane.io reflects the updated roadmap / vision crossplane.github.io#22
-
Workload Scheduling
- Design for smart scheduler, optimization, resource placement #278
- Basic workload scheduler with cluster selector #309
- Update workload propagation to avoid collisions on target cluster #308
- Minimize workload deployment kubeconfig settings for AKS to be consistent with GKE, EKS #273
- Update workload deployment docs #239
-
New Stateful managed services across AWS, Azure, and GCP
-
Performance and Efficiency
- Reconciliation requeue pattern #241
-
UX Enhancements
- Enhanced kubectl printer columns #38
-
Engineering
- Resource Claims, Resource Classes, and Resources
- Basic Container Workload
- Support for Deployments / Services
- Resource Usage and Secret management
- Cloud Providers
- Provider CRDs, credentials management, API/SDK consumption
- AWS, GCP, and Azure
- Managed Kubernetes Clusters
- Support for EKS, AKS and GKE
- Generic Kubernetes Cluster Resource Claim
- Status and Conditions for Clusters
- Static and Dynamic Provisioning
- MySQL Support
- Static and Dynamic Provisioning
- Provider specific MySQL CRDs (AWS RDS, GCP CloudSQL, Azure MySQL)
- Connection strings and firewall support
- Resource Controller depth and reliability
- CRUD support and robust lifecycle management
- CRD status Conditions for status of resources
- Event recording
- Normalized logging using single logging solution (with configurable levels)
- Retry/recovery from failure, idempotence, dealing with partial state
- CI builds/tests/releases
- New jenkins instance (similar to Rook's jenkins)
- Developer unit testing with high code coverage
- Integration testing pipeline
- Artifact publishing (container images, crossplane helm chart, etc.)
- Documentation
- User guides, quick-starts, walkthroughs
- Godocs developer docs for source code/packages/libraries
- Open source project management
- Governance
- Contributor License Agreement (CLA) or Developer Certificate of Origin (DCO)