Crossplane v0.7 - Schedule Workloads to any Kubernetes Cluster, including bare-metal!

Scheduling into on-premise environments is included in Crossplane’s first release of 2020 with the ability to schedule workloads to pre-existing Kubernetes clusters or clusters that have been provisioned without using Crossplane. In addition, automated tests have been implemented for stack-gcp with a focus on increased reliability and API compatibility as we move towards a production-ready release later in 2020.

More flexible workload scheduling with KubernetesTarget

Crossplane is now able to schedule workloads to pre-existing Kubernetes clusters and clusters that have been provisioned without using Crossplane. This allows Crossplane to be integrated with on-premises environments without having to build individual stacks to communicate with custom infrastructure.

Previously, KubernetesApplication was scheduled to KubernetesCluster claim objects which were bound to an instance of a managed Kubernetes service (such as GKE, AKS, or EKS) object that was provisioned by Crossplane. This was restricting for users for several reasons:

  • Existing clusters could not be used as scheduling targets.
  • KubernetesApplication resources had to be created in the same namespace as the KubernetesCluster claim (to be scheduled to that cluster).

With the v0.7 release, Crossplane supports a new KubernetesTarget API type which serves as a scheduling target for a KubernetesApplication. The KubernetesTarget alleviates the issues above by:

  • Multiple KubernetesTarget resources can be created across namespaces that reference the same Kubernetes cluster.
  • Support for manually created secrets that contain kubeconfig information for any Kubernetes cluster.

To learn more about this functionality, check out the most recent episode of our biweekly livestream show, The Binding Status.

Automated end-to-end integration tests for the GCP stack

Previously with each release, we’ve verified basic stack installs and have run a set of ad-hoc tests to ensure quality and are happy to announce that v0.7 adds a regression test suite for stack-gcp using the new integration testing framework added to the crossplane-runtime in the 0.6 release.

This moves us towards our goal to have automated end-to-end integration tests for all the stacks we maintain and starting to enforce that all new commits include appropriate unit test and integration tests to ensure the Crossplane project is sustainable and healthy in the long-term on our road towards production-ready.

These tests run on a nightly basis and involve spinning up real infrastructure and checking for stable behavior before clean-up. As our efforts in this area continue to expand, we hope to implement a policy for adding and refining integration tests, as well as a regular cadence based on the behavior of each test. We’ll be adding automated integration tests to stack-aws and stack-azure in the near future.

Beyond 0.7

  • Versioning and upgrade support for all aspects of Crossplane
  • Template Stacks - kustomize support
  • More v1beta1 APIs:
    • GCP storage buckets
    • GCP networking resources
    • AWS and Azure to follow
    • Improved logging and eventing
  • Automated integration tests for GCP, AWS, Azure
  • Improved error messages surfaced in claims and/or eventing
  • Additional real-world App Stacks
  • Expanded Rook support for additional in-cluster stateful storage types
  • Policy-based secure connectivity strategies
  • Enhanced application scheduling (cost, weight)

Get involved!

We are excited to see the continual growth of the Crossplane community and would love for you to get involved. Whether you are a developer, user, or just interested in what we are up to, feel free to join us via one of the following methods:

Join the open cloud movement to help level the playing field for everyone!

Keep up with Upbound

* indicates required