Skip to content

Latest commit

 

History

History
28 lines (18 loc) · 1.78 KB

extensions.md

File metadata and controls

28 lines (18 loc) · 1.78 KB

Onix API extensions

Onix API extensions are micro services that extend the use of the Web API for a specific use case or integration.

The Onix Web API is completely generic and therefore, it does not have any knowledge of use for a particular purpose; for example, Kubernetes applications configuration, Terraform state, Ansible Inventories, etc.

Thus, there is a need to create an extensible system that allows for encapsulation of knwoledge required to fullfil a concrete use case. This is where extensions and micro-service architecture come in place.

Take for example the case of automatically recording Kubernetes application configuration changes in real time in Onix. The Onix Kubernetes Extension service (OxKube), extends the Web API with knowledge of the Kubernetes meta model, i.e. namespaces, services, pods, etc. and the logic to record their changes in Onix.

This can be seen in the model below:

extensions

A source system, for example Kubernetes container orchestration, schedules the deployment of pods and their connectivity. Other examples of source systems could be a cloud computing platform such as Amazon EC2.

An event source system, watches the source system for changes and publishes the changes as events. For example, sentinel watches the Kubernetes API for changes and publish them to either webhooks or a message queue.

An Onix Extension, such as ox-kube, consumes events from the event source and records them in the Onix database following the format of a specific meta-model, in this case, the Kubernetes meta model.

The Onix Web API provides a set of RESTful endpoints, that allow the agents to record configuration data.