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.
- 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)
-
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
-
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
-
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
-
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
- 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
- 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
- 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
- Rename GitHub org from crossplaneio to crossplane
- Docs overhaul (part 1/2) - 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
-
Backup/restore support - e.g. with 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
- Backup and Restore doc crossplane#1353
-
v1beta1 quality conformance doc #933
-
v1beta1 quality for AWS API types
- Networking and VPC crossplane/provider-aws#145
-
AWS Provider: additional 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
-
Basic versioning and upgrade support #1334
-
Resource composition - experimental MVP #1343
-
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/2) - https://crossplane.io/docs
- Documentation (and diagrams) about data model in Crossplane (including both application and infrastructure)
- Updated docs sidebar
-
Versioning and upgrade support #879
-
Integration testing
- Integration testing support #1033
- AWS Stack integration tests
- Azure Stack integration tests
-
Designs for:
-
GCP: DNS, SSL, and Ingress support #1123 #1123
-
More real-world Stacks into multiple clouds
-
UX enhancements for debuggability and observability
- Visible error messages for all error cases surfaced in claims and/or eventing
- Static provisioning examples to highlight simplicity.
-
v1beta1 Services APIs
- Incorporate beta1 feedback
- Upgrade other supported services to v1beta1 (e.g. Buckets, etc.)
- Code generation of API types, controller scaffolding to further streamline additional services
- GCP storage buckets to v1beta1 crossplane/provider-gcp#130
- AWS S3 buckets crossplane/provider-aws#99
-
Expanded Rook support
- Support additional Rook storage providers
- Install & configure Rook into a target cluster
-
GitLab Auto DevOps integration phase 2 - provision managed services from GitLab pipelines
- 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. (GitLab 12.6)
-
Policy-based secure connectivity & environment configuration
- Additional secure connectivity strategies for GCP, AWS, Azure
- Reuse of resource classes across environments
-
Enhanced Workload Scheduling
-
Heterogeneous application support
-
New Stateful managed services across AWS, Azure, and GCP
-
Auto-scaling
-
Ease-of-use and improved experience
- Standalone mode allowing Crossplane to run in a single container or process #274