Kratix, an open-source framework for building internal platforms, has released a marketplace of community-provided Promises. Within Kratix, Promises represent components curated by the platform team that application teams can request. The Kratix Marketplace is open for submissions from the community.
Kratix, created and maintained by Syntasso, is built upon Kubernetes. The Promise framework provides a contract between the platform and application teams defining what is available and how it will be created. A Promise is composed of three main components. The first is a Custom Resource Definition (CRD) (xaasCRD
) that lists what required and optional configuration is required from the requesting application team. The Worker Cluster Resources (workerClusterResources
) defines what dependencies are required for the created workloads. Finally, the Request Pipeline (xaasRequestPipeline
) is a list of Docker images that represent the instance of the created service combined with the provided business configuration.
The Kratix Marketplace provides a repository for Promises created by Syntasso and the community. It contains a number of Promises covering a wide range of tools including Knative, Redis, PostgreSQL, Vault, Istio, and ArgoCD. Submitting a promise involves a pull request to the Kratix Docs repository. All requests are reviewed and tested by the Kratix team.
For example, the ArgoCD Promise installs an ArgoCD server and creates a new ArgoCD Application for each resource request. The resource request allows for configuring the repository URL, the source path within that repo to sync, and the target revision.
The Promise specification is a YAML-based document. The three main components are located within the spec header:
apiVersion: platform.kratix.io/v1alpha1
kind: Promise
metadata:
name: jenkins-promise
spec:
workerClusterResources:
xaasRequestPipeline:
xaasCrd:
Kratix supports requesting configuration data from users. For example, when creating a PostgreSQL instance, a label can be added indicating the costCenter
for internal cost allocation purposes. This is done by adding the appropriate YAML within the xaasCrd
key:
costCentre:
pattern: "^[a-zA-Z0-9_.-]*$"
type: string
When a user needs a particular instance, they submit a resource request referencing the Promise they want:
---
apiVersion: example.promise.syntasso.io/v1
kind: paved-path-demo
metadata:
name: my-paved-path
namespace: default
spec:
name: example
Kratix will start the request pipeline as defined in the Promise's xaasRequestPipeline
passing the resource request as input. The pipeline will output Kubernetes documents that combine together the user's request with the defined configuration in the Promise. The worker cluster will use that along with the workerClusterResources data to create the requested instance.
Kratix is open-source and available under the Apache License 2.0. More details about the release of the Kratix Marketplace can be found on the Syntasso blog.