Kubernetes Cluster Requirements

This document describes the requirements Yaook imposes on a Kubernetes Cluster. In contrast to Kubernetes API Requirements, this document is focused on the services and resources which need to be defined inside a cluster. For requirements on the Kubernetes deployment itself, such as feature flags or Kubernetes versions, please see Kubernetes API Requirements instead.

Storage Classes

The Kubernetes cluster MUST have a default storage class set. This storage class MUST allow moving volumes between nodes.

Note

In an upcoming release, the requirements will change to:

  • There MUST be a storage class which is host local (e.g. provided by the local-storage controller).

  • There MUST be a storage class which is not host local and can be moved between different nodes.

Networking

CNI

The networking SHOULD be provided by Calico. Other network layers may work, but are not officially supported and you are on your own.

Ingress

The networking.k8s.io/v1 API MUST be implemented by a proper Ingress controller.

Load Balancer

Yaook itself does not require an external load balancer, but it is likely that your ingress controller (see above) will.

Certificates

The cert-manager.io/v1 API MUST be implemented.

Block storage provider

As of March 2021, Yaook supports Ceph and Netapp as block storage backend for Cinder. However glance and gnocchi are currently only supporting Ceph as a backend.

Thus, to successfully deploy Yaook, a Ceph cluster MUST be provided. It is RECOMMENDED to deploy the ceph cluster using Rook.io. It is OPTIONAL to run it in the same Kubernetes cluster as Yaook itself.

Note

A future release will include support for interfacing to other storage providers and to support multiple Storage backends.