CloudARK

Platform-as-Code

Kubernetes-native

No new CLI to learn

Composable

Flexibility to choose platform elements

Shareable

Declarative platform YAML definition

Sign-up for your free copy of Platform-as-Code eBook

Learn how Platform-as-Code approach enables teams to compose their platforms with Kubernetes API extensions and build their application workflows declaratively.

Platform-as-Code eBook

Kubernetes API extensions (Operators)

Kubernetes Operator, Kubernetes CRD

One of the key reasons for Kubernetes’s popularity is its extensibility. Kubernetes API extensions (commonly referred as Operators) extend Kubernetes API to manage third-party software as native Kubernetes objects. There are 400+ GitHub repositories with Operator implementations for middleware like databases, queues, loggers, etc. Kubernetes API extensions or Operators form foundation for Platform-as-Code experience. 

API wrappers vs. API extensions

API wrappers: Traditional method of creating platform abstractions

image29

  • Disparate interfaces to learn / manage.
  • Hard to leverage tools and features developed for native interface with new abstractions.

API extensions (Operators): New way of creating platform abstractions

Kubernetes Operators

  • Common interface for native and new abstractions.
  • Can easily leverage tools (e.g. Helm) or features (e.g. auditing) for native interface with new abstractions.

What is Platform-as-Code ?

Platform-as-Code refers to the process that application developers follow to create declarative platform workflows in Kubernetes YAMLs leveraging Custom Resources introduced by Operators along with built-in Resources. This involves discovering relevant information about the Custom Resources and binding the required Resources to define a workflow. 

Kubernetes Operators

- DevOps engineer is responsible for assembling the platform layer by selecting required Kubernetes CRDs/Operators. 

- Application developer then consumes this platform layer by creating custom platform stacks composing various Custom and in-built Resources together through Kubernetes YAMLs. 

Above figure demonstrates this Platform-as-Code approach as a flow diagram. We have developed KubePlus API discovery add-on to further simplify discovery and use Custom Resources introduced by Operators towards building Platforms as-Code.

Guidelines

We are building comprehensive guidelines for curating Operators / API extensions for their enterprise readiness. 

Learn more

Building of a Moodle Platform Stack as-Code

1 - Create Secret

image30

2 - Create MySQL cluster

image31

3 - Create Moodle instance

image32

KubePlus API discovery add-on

We have developed KubePlus API discovery add-on to simplify discovery and use of Kubernetes Custom Resources towards building Platform as Code workflows. Once installed on the Kubernetes cluster, this add-on offers new API endpoints (e.g. ‘man’, ‘composition’) that enable application developers to query static and dynamic information about various Custom Resources available in the cluster. This information is very useful towards using individual Custom Resources as well as binding them together in a workflow. 

This add-on currently focusses on providing required information to build interactions between Kubernetes Custom & built-in Resources manually in Kubernetes YAMLs and ultimately define a Platform-as-Code workflow. In the roadmap, we plan to develop additional automation in this add-on that will help with automatic resolution and binding between Custom Resources within a Platform-as-Code workflow. 

Learn more

For more details on architecture, demo and usage guidance checkout GitHub page.

GitHub

Static information about Custom Resources

- Use ‘man’ endpoint to find out static usage information about Moodle Custom Resource:

# kubectl get --raw "/apis/platform-as-code/v1/man?kind=Moodle"

Runtime information about Custom Resources

Use ‘composition’ endpoint to find out composition information of underlying resources of Moodle Custom Resource's moodle1 instance:

# kubectl get --raw "/apis/platform-as-code/v1/composition?kind=Moodle&instance=moodle1&namespace=ns1"

Platform-as-Code Stakeholders

Extensions Developer

image33

Comprehensive guidelines for Operator interoperability and discoverability in multi-Operator platform stacks. 

DevOps Engineer

image34

Extend Kubernetes without any custom automation using Curated Operators for Platform-as-Code. 

Application Developer

image35

Repeatable and shareable way of creating application platforms as-Code with Kubernetes YAMLs.

How Kubernetes API Extensions enable Platform-as-Code Experience

Learn more

Evolution of PaaSes to Platform-as-Code in Kubernetes world

Learn more

Platform-as-Code: how it relates to Infrastructure-as-Code and what it enables

Learn more

Platform-as-Code — Elevating Kubernetes to next generation PaaS

Learn more

Subscribe to our Platform-as-Code newsletter.

Leverage full power of Kubernetes with KubeGarage.