sapcc / kubernetes-operators

Operators that automate common tasks for managing Openstack on Kubernetes.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Kubernetes Openstack Operators

This repository holds operators that automate common tasks for managing Openstack on Kubernetes.

We define an operator as piece of software that uses Kubernetes primitives to model domain specific operational tasks. It extends Kubernetes using best practices and controller concepts to remote control the system through the API on behalf of a Kubernetes user. Using the third party resource mechanismm, this allows us to detangle configuration changes and offloads the burden of generating and reconfiguring the system into a dynamic runtime component.

See also: CoreOS - Introducing Operators

Example

As an example, a ThirdPartyResource BuildingBlock drives the creation of a set of Nova-Agents through a DeploymentSpec. The operator will watch for changes on BuildingBlock events and create/update the specs for the nova agents. Additionally, it could remote control auxiliary systems, like sending a status notification when a builing block goes into maintenance mode.

Now that building block configuration can be manages as Kubernetes spec, we have a standarized way of changing the system's configuration - through Kubernetes. This decoupling reduces the churn on the redeployment of the whole system and makes changes easy and documentable.

Additionally, "change" is now easy to compose even across system boundaries. A new building block can be onboarded with an automated process, directly from a build pipeline, triggered by a Git commit. Even auto-registration is a thinkable scenario now. The building block could come with an agent that talks directly to Kubernetes.

Design Principles

Operators are build in Go. They use kubernetes/client-go to interface with the Kubernetes API. They follow the Kubernetes controller best practices and programatically manage resources.

Operators have one job and do that job well. They are easy to reason about.

Prior Art

About

Operators that automate common tasks for managing Openstack on Kubernetes.

License:Apache License 2.0


Languages

Language:Go 74.4%Language:Python 20.9%Language:Makefile 3.2%Language:Dockerfile 1.1%Language:Shell 0.4%