BT

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Topics

Choose your language

InfoQ Homepage News Internal Platform Framework Kratix Releases Community Marketplace

Internal Platform Framework Kratix Releases Community Marketplace

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 resource request workflow

Kratix resource request workflow (Credit: Kratix)

 

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.

About the Author

Rate this Article

Adoption
Style

BT