Today IBM is pleased to announce that it is joining the Crossplane community and releasing an experimental release of a Crossplane provider for IBM Cloud. This enables IBM Cloud managed resources to be exploited from Crossplane.
What is Crossplane?
Crossplane is a Cloud Native Computing Foundation (CNCF) Sandbox project that provides the ability to manage infrastructure and resources, including cloud managed services using Kubernetes CRDs, and has contributions and support from a number of major vendors. These include Microsoft, Alibaba, GitLab, and Red Hat, as well as Upbound, which founded the Crossplane project two years ago.
One unique feature is the capability to define compositions to represent resources such as databases, and back those compositions with one of more pluggable providers that deploy and manage an instance of the resource.
This makes it possible to create applications that are portable across cloud providers and still use cloud-managed resources: an application defines the deployment of a resource such as for a PostgreSQL database using a Crossplane composition CRD, and the database is then created and controlled by the configured provider.
This capability extends the hybrid, multi-cloud portability that already comes from Kubernetes and OpenShift. You can deploy the same application to Amazon AWS and to IBM Cloud, using the Amazon Relational Database Service in the first case, and the Databases for PostgreSQL service in the second. This concept also extends to hybrid-cloud scenarios, using an in-cluster provider to deploy a containerised instance of PostgreSQL.
Hybrid multicloud applications
Hybrid, multi-cloud strategies have the potential to reduce vendor lock-in, reduce service disruption risks and enable better disaster recovery, as well as providing the core cloud benefits of agility, scalability and elasticity. Enterprises are widely taking this approach, with 35% of IT infrastructure spend on private clouds, and 21% on public clouds (IDC, 2020), and 81% of enterprises working with two or more providers (Gartner, 2019).
Reaching the full potential of a hybrid multi-cloud strategy however requires application portability:
- deploying workloads to multiple clouds to avoid service disruption and enable disaster recovery
- placing workloads to meet locality, security, compliance or data governance requirements
- migrating workloads as part of a cloud adoption roadmap
Current application portability issues means that “few applications ever move once they have been deployed in production and adopted by the business” (Gartner, 2020).
While Kubernetes is increasingly seen as the ubiquitous application portability layer for containerized, cloud-native applications, additional application portability challenges persist. This is driven because any given cloud platform extends beyond Kubernetes itself. Each managed Kubernetes service provides a subtly different flavor due to the infrastructure implementation on which it runs and the vendor specific capabilities, services and APIs, it provides. The use of capabilities such as serverless functions, managed services (eg, databases, datastores and messaging services), load-balancing and proxy services, identity and access management, and observability all add friction and barriers to application portability.
The use of Red Hat OpenShift resolves a number of these issues by providing a consistent layer across hybrid multi-cloud deployments for Kubernetes and a number of other services such as Service Mesh and Serverless. Crossplane extends this to a wider set of resources.
Improving application portability
Crossplane “supercharges your Kubernetes clusters enabling you to provision and manage infrastructure, services, and applications from kubectl” (Crossplane.io). Essentially, Crossplane provides a framework for publishing Kubernetes CRDs to manage infrastructure and resources.
For managed services, this makes it possible to publish a composed resource type, for example a PostgreSQLInstance CRD, that can be used by applications to create, configure and manage an instance of a PostgreSQL database. That PostgreSQLInstance resource is an interface layer, composed from one or more providers that can manage infrastructure resources that provide the concrete implementation of the PostgreSQL database. Those concrete implementations could be managed services running in-cluster, on Amazon AWS, Microsoft Azure, Google Cloud Platform, Alibaba Cloud, and now IBM Cloud.
While managed services are key for improving application portability, Crossplane can be used to deploy and manage a wide range of resources including being used to provision clusters themselves, for example in hybrid multi-cloud management scenarios.
The IBM Cloud Provider for Crossplane
IBM has just released an experimental release of an IBM Cloud provider for Crossplane. This provides a set of Custom Resource Definitions (CRDs) and Controllers to provision and manage IBM Cloud infrastructure and services from the Crossplane control plane.
The provider currently provides the following features:
- Provision and manage 85+ hosted services and their credentials from the IBM Cloud Catalog
- Import existing IBM Cloud services into the provider
- Use Go templating to shape credentials for the requirements of applications.
Over the coming weeks, we’ll be looking to enhance the provider with additional IBM Cloud APIs including IBM Cloud Databases and IAM, and maintaining API compatibility of the provider using code generation against the OpenAPI specs from the IBM Cloud Services.
Visit GitHub to find the IBM Cloud Provider in the Crossplane Contributions organization.