After completing this section, you should be able to describe Red Hat OpenShift Container Platform storage requirements, and compare the architecture choices for using Red Hat Ceph Storage as an RHOCP storage back end.
Kubernetes is an orchestration service that deploys, manages, and scales containerized applications. Developers can use Kubernetes to iterate on application building and automate administrative tasks. Kubernetes wraps containers and other resources into pods, and enables abstracting an application into a single deployment unit.
Red Hat OpenShift Container Platform (RHOCP) is a collection of modular components and services that are built on top of a Kubernetes container infrastructure. OpenShift Container Platform provides remote management, multitenancy, monitoring, auditing, and application lifecycle management. It features enhanced security capabilities and self-service interfaces. It also integrates with major Red Hat products, that extend the capabilities of the platform.
OpenShift Container Platform is available in most clouds, whether as a managed cloud service in public clouds or as self-managed software in your data center. These implementations offer different levels of platform automation, update strategies, and operation customization. This training material references RHOCP 4.8.
OpenShift Container Platform assigns the responsibilities of each node within the cluster by using different roles. The machine config pools (MCP) are sets of hosts where a role is assigned. Each MCP manages the hosts and their configuration. The control plane and the compute MCPs are created by defualt.
Compute nodes are responsible for running the scheduled workloads of the control plane. Compute nodes contain services such as CRI-O (Container Runtime Interface with Open Container Initiative compatibility), to run, stop or restart containers, and kubelet, which acts as an agent to accept a request to operate the containers.
Control plane nodes are responsible for running the main OpenShift services, such as the following ones:
OpenShift API server. It validates and configures the data for OpenShift resources, such as projects, routes, and templates.
OpenShift controller manager.
It watches the etcd service for changes to resources and uses the API to enforce the specified state.
OpenShift OAuth API server. It validates and configures the data to authenticate to the OpenShift Container Platform, such as users, groups, and OAuth tokens.
Operators are applications that invoke the OpenShift controller API to manage resources. Operators provide a repeatable way to package, deploy, and manage a containerized application.
The operator container image defines the requirements for deployment, such as dependent services and hardware resources. Because operators require resource access, they typically use custom security settings. Operators provide an API for resource management and service configuration, and deliver levels of automated management and upgrade strategies.
OpenShift Container Platform uses the Operator Lifecycle Manager (OLM) to manage operators. OLM orchestrates the deployment, update, resource utilization, and deletion of other operators from the operator catalog. Every operator has a Cluster Service Version (CSV) that describes the required technical information to run the operator, such as the RBAC rules that it requires and the resources that it manages or depends on. OLM is itself an operator.
Custom Resource Definition (CRD) objects define unique object types in the cluster. Custom Resource (CR) objects are created from CRDs. Only cluster administrators can create CRDs. Developers with CRD read permission can add defined CR object types into their project.
Operators use CRDs by packaging them with any required RBAC policy and other software-specific logic. Cluster administrators can add CRDs manually to a cluster independently from an Operator lifecycle, to be available to all users.
Red Hat OpenShift Data Foundation (formerly Red Hat OpenShift Container Storage) is a highly integrated collection of cloud storage and data services that acts as the storage control plane for OpenShift Container Platform. OpenShift Data Foundation is available as an operator in the Red Hat OpenShift Container Platform Service Catalog. OpenShift Data Foundation 4.8 uses Red Hat Ceph Storage 4.2.
The OpenShift Container Storage operator integrates three operators as an operator bundle to initialize and manage OpenShift Data Foundation services. The three operators are OpenShift Container Storage (ocs-operator), Rook-Ceph, and Multicloud Object Gateway (NooBaa). The operator bundle includes a converged CSV and all the needed CRDs to deploy ocs-operator, Rook-Ceph, and NooBaa operators.
The operator ocs-operator initializes tasks for the OpenShift Data Foundation service and acts as a configuration gateway for Rook-Ceph and NooBaa.
The operator ocs-operator depends on the configuration that is defined in the OCSInitilization and StorageCluster CRDs in the CSV bundle.
When the operator bundle is installed, the ocs-operator starts and creates an OCSInitialization resource if it does not already exist.
The OCSInitialization resource performs basic setup and initializes services.
It creates the openshift-storage namespace in which other bundle operators will create resources.
You can edit this resource to adjust the tools that are included in the OpenShift Data Foundation operator.
If the OCSInitialization resource is in a failed state, further start requests are ignored until the resource is deleted.
The StorageCluster resource manages the creation and reconciliation of CRDs for the Rook-Ceph and NooBaa operators.
These CRDs are defined by known best practices and policies that Red Hat supports.
You can create a StorageCluster resource with an installation wizard in OpenShift Container Platform.
Unlike the OCSInitialization resource, the StorageCluster resource creation or deletion operates outside ocs-operator control.
Only one StorageCluster resource per OpenShift Container Platform cluster is supported.
Rook is a cloud-native storage orchestrator that provides the platform to abstract the complexity of Ceph layout and configuration. Rook-Ceph is the primary component for the ocs-operator. It incorporates the Ceph cluster into the operator bundle.
Rook-Ceph is responsible for the initial storage cluster bootstrap, administrative tasks, and the creation of the pods and other dependent resources in the openshift-storage namespace.
Many advanced Ceph features, such as Placement Groups and CRUSH maps, are reserved for Rook management.
Rook-Ceph facilitates a seamless storage consumption experience and minimizes the required cluster administration.
Monitoring is an important Rook-Ceph duty. Rook-Ceph watches the storage cluster state to ensure that it is available and healthy. Rook-Ceph monitors Ceph Placement Groups and automatically adjusts their configuration based on pool sizing, and monitors Ceph daemons. Rook-Ceph communicates with OpenShift APIs to request the necessary resources when the cluster scales.
Rook-Ceph provides two Container Storage Interface (CSI) drivers to create volumes, the RBD driver and the CephFS driver.
These drivers provide the channel for OpenShift Container Platform to consume storage.
The OpenShift Container Storage operator does not create Persistent Volume resources, but tracks resources that Ceph-CSI drivers created.
SectionFigure 13.3: Rook Architecture visualizes the Rook-Ceph operator interaction with OpenShift Container Platform.
You can update the configuration of Rook-Ceph components via CRD updates. Rook-Ceph looks for configuration changes that the service API requested and applies them to the cluster. The cluster state reflects whether the cluster is in the desired state or is approaching it. Important CRDs for the cluster configuration are CephCluster, CephObjectStore, CephFilesystem, and CephBlockPool.
NooBaa is a multicloud object storage service that delivers an S3-compatible API in the OpenShift container storage operator bundle. NooBaa provides data placement policies that enable hybrid and multicloud interconnectivity, allowing active/active reads and writes across different clouds.
The NooBaa operator creates and reconciles changes for the NooBaa service and creates the following resources:
Backing store
Namespace store
Bucket class
Object bucket claims (OBCs)
Prometheus rules and service monitoring
Horizontal pod autoscaler (HPA)
NooBaa requires a backing store resource to save objects. A default backing store is created in an OpenShift Data Foundation deployment, but depends on the platform that OpenShift Container Platform is running on. For example, when OpenShift Container Platform or OpenShift Data Foundation is deployed on Amazon Web Services (AWS), it creates the backing store as an AWS::S3 bucket. For Microsoft Azure, the default backing store is a blob container. NooBaa can define multiple, concurrent backing stores.
Red Hat OpenShift Data Foundation can be deployed in a cloud (AWS, Azure, IBM), or as a virtualized (RHV, VMware vSphere) or bare-metal environment.
OpenShift Data Foundation uses the underlying provider's infrastructure to obtain the required resources for the storage cluster.
When installing OpenShift Data Foundation, either install the storage cluster in Internal mode or use an existing Ceph Storage cluster for External mode.
Both modes require the installation of the OpenShift Container Storage operator.
Differences exist between installing the operator in Internal mode and External node.
Internal Installation Mode
The OpenShift Container Storage operator Internal mode installation provisions the base services and makes available additional storage classes to applications.
OpenShift Data Foundation pods can be scheduled on the same nodes as application pods or on separate nodes.
When using the same nodes, compute and storage resources must be scaled together.
When using separate nodes, compute and storage resources scale independently.
One Internal installation mode benefit is that the OpenShift Container Platform dashboard integrates cluster lifecycle management and monitoring.
The Internal installation mode uses the back-end infrastructure to provide storage resources by default.
An alternative configuration is to choose the Internal - Attached Devices option, which uses the available local storage.
Use of the Internal - Attached Devices option has the following requirements:
The Local Storage operator must be installed in the OpenShift cluster.
The target nodes are scanned for disks to match specific criteria.
The default namespace for the Local Storage operator is openshift-local-storage.
The Internal installation mode has the following advantages:
Automated deployment of the Ceph cluster.
Automated administrative tasks and monitoring.
Integrated Dashboard with OpenShift Container Platform.
Straightforward deployment with the OpenShift Container Platform back-end infrastructure.
Hyperconvered infrastructure (with worker nodes).
Lifecycle management and auto-update strategies.
In an Internal storage installation, the integrated Ceph Storage cluster can be used only by the OpenShift Container Platform cluster where it is installed.
External installation mode
The External installation mode uses an existing Ceph Storage cluster that is expected to be in a healthy state.
The OpenShift Container Platform cluster operates the resources that are created inside the storage cluster, but it does not monitor, update, or manage the cluster daemons or configuration.
The OpenShift Container Platform and the Ceph Storage cluster must meet certain conditions to correctly integrate the storage cluster.
The OpenShift Container Platform version is 4.8 or above.
OpenShift Container Storage 4.8 is installed.
Ceph Storage 4.2z1 or later is installed. Ceph Storage 5 is not yet supported.
The Ceph Storage dashboard is installed and configured.
The external Ceph Storage cluster enables the PG Autoscaler with target_size_ratio of 0.49, as Red Hat recommends.
The external Ceph cluster has an existing preconfigured RBD pool for use.
The External installation mode has the following advantages:
The Ceph Storage cluster can use advanced customization.
Storage can scale independently from the OpenShift Container Platform infrastructure.
The external Ceph Storage cluster can support multiple OpenShift Container Platform clusters by creating separate pools.
Object devices can be accessed and isolated between different OpenShift Container Platform clusters.
OpenShift Container Platform Compute resource consumption is less than in Internal mode.
For more information, refer to the _Red Hat OpenShift Container Storage 4.8 Documentation. Red Hat OpenShift Container Storage
For more information, refer to the _Red Hat OpenShift Container Platform 4.8 Documentation. Red Hat OpenShift Container Platform