Introduction to OpenStack Kubernetes Operators¶
After the sunset of the TripleO project as a tool to install, upgrade and operate OpenStack clouds, a new project OpenStack Kubernetes Operators has been created based on a new approach which is expected to provide a modernized operational experience to manage OpenStack clouds.
The idea behind this project is that the OpenStack control plane is a Cloud-Native distributed application well suited to be executed as a containerized workload orchestrated in Kubernetes. The OpenStack Kubernetes Operators project delivers the required software to manage OpenStack in Kubernetes and applying the operators pattern in order to automate the installation, upgrades and operation of an OpenStack cluster through the kubernetes API by extending it and leveraging the Kubernetes client and processes and using its native objects.
Following diagram shows a high level architecture of this solution:
The main components are:
- The base orchestration is done by a Kubernetes cluster running the OKD Community Distribution of Kubernetes on top of SCOS (CentOS Stream CoreOS) Operating system.
- A set of low-level operators are responsible of managing each one of the OpenStack services (nova-operator, neutron-operator, cinder-operator, etc…) in the OKD cluster. The controlplane meta-operator provides an unified entry point for cloud amdinistrators to manage the entire control plane and calls the low-level operators as needed under the hood. These operators will create the required kubernetes elements (deployments, pods, services, statefulsets, etc…) that execute the needed infrastructure (mariadb, rabbitmq, memcached, etc…) and OpenStack services.
- The OpenStack External Data Plane is composed by the nova compute nodes that will run the OpenStack instances and other services provided by the cloud. Note that these servers run CentOS Stream and are not part of the kubernetes cluster.
- The dataplane operator runs in the OKD cluster and is responsible of installing and operating the External Data Plane using ansible automation framework.
- Both control and data plane operators are installed from container images provided in the public Quay registry. The operators code is managed in a github project which regularly update the container images.
- The containers running the OpenStack services (the ones managed by the operators) are created using the TCIB tool using the rpm packages provided by the RDO project in the CentOS Cloud SIG. The OpenStack k8s operators project also maintains a set of images based on the RDO Antelope release in the Quay registry.
In this document you will find instructions to create a Proof of Concept style environment that can be used to become familiar with this deployment model. Some specific tools used for this purpose:
- CRC is a tool to deploy a minimal OpenShift, OKD or podman system in a single virtual machine. While it is only intended for development or testing purposes, it provides a fast and light deployment method which is useful for this PoC.
- The install_yamls repo is a set of scripts, configurations and make files used to automate the most common tasks as installing the operators or deploying the control and data planes for development environments. It will be used in this document to deploy a PoC environment
- The ansible-based CI Framework can also be used to deploy testing or development environments.
For simplicity, install_yamls is used in this document, however, it is expected to be replaced by the ci-framework in the near future.