Skip to content

Latest commit

 

History

History
494 lines (398 loc) · 32.8 KB

ROADMAP.md

File metadata and controls

494 lines (398 loc) · 32.8 KB

Roadmap

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.

Table of Contents

What's Next

v1.0.0 Release Candidate (Dec 2020)

  • Hardening and cleanup for v1.0

    • Prometheus metrics for all binaries #314
    • crossplane-runtime to v1.0
  • Composition

    • Claim update propagation to its underlying composite resource #1649
    • Bi-directional patching for status #1639
    • Revision support for incremental upgrades #1481
    • Support taking values from members to fill a connection secret #1609
    • Validation webhooks
  • Package Manager

    • Basic dependency resolution for packages #1842
      • i.e. automatically install the providers a configuration needs.
  • Providers

  • Open Application Model (OAM)

    • APIs to v1beta1
    • Hardening

Under Consideration

  • General

    • First-class multi-language support for defining Compositions and Configuration packages.
    • 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
    • Enhanced integration testing #1033
  • Composition

    • Additional conversion strategies for XRDs with multiple version of an XR defined
    • CustomComposition support for use with cdk8s sidecar, TYY, and others #1678
  • 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
      • Azure Code Generation of the Crossplane provider-azure
        • auto generate all available types from the Azure metadata.
      • Clouds that don't have code gen pipelines
        • Wrap stateless Terraform providers #262
    • GCP Provider

      • Explore code generation of a native Crossplane provider-gcp
      • GCP: DNS, SSL, and Ingress support #1123 #1123
      • GCP storage buckets to v1beta1 crossplane/provider-gcp#130
    • Expanded Rook support

      • Support additional Rook storage providers
      • Install & configure Rook into a target cluster
    • Additional providers being incubated in https://github.com/crossplane-contrib

  • GitLab Auto DevOps 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.
  • Ease-of-use and improved experience

    • Standalone mode allowing Crossplane to run in a single container or process #274

Released

  • 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
  • Package Manager

    • Streamlined v2 design crossplane#1616
      • Supports installing and managing Crossplane Providers and Configurations
    • Package Manager v2 crossplane#1675
      • Upgrade and rollback support
      • Faster package deploys
      • Paves the way for automatic package dependency resolution
  • RBAC Manager

    • Automatically manages the RBAC roles and bindings required by Providers and Composite resources
    • An optional deployment that uses RBAC privilege escalation
    • Crossplane no longer requires cluster-admin privileges.
  • Providers

    • General

      • Default ProviderConfig supported & migration
      • Removed deprecated claims/classes - you can now create your own claim kinds with Composition
    • AWS Provider: more API types provider-aws#149

      • S3 Bucket to v1beta1 #331
      • S3 Bucket Policy support #289
      • Referencer for SubnetGroup AWS ElasticCache #314
      • Add ARN to AtProvider for SNS Topic #348
      • ECR support #307
    • Helm Provider

      • experimental support - for use in Compositions
    • 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
    • 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
  • Backup/restore compatibility with tools like Velero

  • Composition

    • Experimental MVP #1343
    • Defining your own claim kinds #1106
    • Allowing a claim to be satisfied by multiple resources #1105
  • Providers

  • Open Application Model (OAM)

  • 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 in app.yaml, including: Provider, Stack, Application, and Addon (#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:
    • updates propagated to objects in a remote Kubernetes cluster. #1341
    • scheduling directly to a KubernetesTarget in the same namespace as a KubernetesApplication. #1315
  • Experimental support for OAM (Open Application Model) API types:
  • 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
  • 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
  • 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
  • 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
  • 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
  • Release automation for shorter release cycles and hot fixes #864

  • 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

    • Default resource classes - increases claim portability #151
    • Resource classes can be validated and annotated #613
  • 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

    • General resource controller used for more types #276
    • Controllers use consistent logging #7
    • Consistent testing paradigm #269
  • 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)