Skip to content

Latest commit

 

History

History
365 lines (296 loc) · 25.8 KB

ROADMAP.md

File metadata and controls

365 lines (296 loc) · 25.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.

  • 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

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

  • 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
  • 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
  • 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
  • Backup/restore compatability with tools like Velero

  • Resource composition - experimental MVP #1343

    • Defining your own claim kinds #1106
    • Allowing a claim to be satisfied by multiple resources #1105
  • Experimental support for OAM (Open Application Model) API types

  • 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

v0.13

  • Infrastructure Composition

    • Progress towards v1beta1 quality
    • Select random Composition when multiple match
  • Package Manager

  • Provider Acceleration

    • Evaluate code generation and use of Terraform providers
  • AWS Provider: additional API types crossplane/provider-aws#149

    • ACMPCA Certificate Authority provider-aws#226
    • IAMRolePolicyAttachment to refer IAMPolicy
    • SQS
    • Route53
    • EKSCluster to v1beta1
  • GCP Provider

    • Add GKE DnsCacheConfig, GcePersistentDiskCsiDriverConfig, KalmConfig provider-gcp#229
  • Crossplane Agent - k8s-native infra API consumer UX

  • OAM - Applications

    • Move out of core into separate package
    • Updates the runtime to the latest tagged version (includes HealthScope)
    • Support for Scope in AppConfig controller

Roadmap

  • Versioning and upgrade support #879

  • Integration testing

    • Integration testing support #1033
    • AWS Stack integration tests
    • Azure Stack integration tests
  • Versioning and upgrade support #879, #435

  • GCP: DNS, SSL, and Ingress support #1123 #1123

  • More real-world Stacks into multiple clouds

    • Refresh existing GitLab Stack to use latest Crossplane #866
    • Additional real-world apps and scenarios #868
    • Stacks Manager support for private repos and robot account credentials
  • 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

    • Region and cloud provider aware scheduling #279
    • Delayed binding of resources to support co-location in same region #156
    • Workloads declare their resource usage #115
    • Optimization for many resource attributes #287
    • Extensibility points to allow external scheduler integration #288
  • Heterogeneous application support

    • Serverless (functions) #285
    • Containers and other Kubernetes deployment types (e.g., Helm charts) #158
    • Virtual Machines #286
  • New Stateful managed services across AWS, Azure, and GCP

  • Auto-scaling

    • Cluster auto-scaler #159
    • Node pools and worker nodes #152
  • Ease-of-use and improved experience

    • Standalone mode allowing Crossplane to run in a single container or process #274
  • Reliability and production quality

    • Controllers recover failure conditions #56
    • Controller High availability (HA) #5
    • Core Infrastructure Initiative (CII) best practices #58
  • Performance and Efficiency

    • 2-way reconciliation with external resources #290
    • Events/notifications from cloud provider on changes to external resources to trigger reconciliation #289