OpenStackを中心にCloud製品を担当しているソリューションアーキテクトの輿水です。
「Red Hat OpenShift 4 Ops基礎編」に続いて「Red Hat OpenShift Container Storage編」についてざっくり紹介いたします。OpenShiftでは、OpenShiftクラスターが動かすアプリケーション(ロギングやモニタリングなどのクラスターサービス)やユーザーが動かすアプリケーション(データベースなどのstatefulなアプリケーション)のために永続的なストレージが必要になります。
- Persistent Volume(PV):KubernetesのPodが利用できる永続ストレージ
- Persistent Volume Claim (PVC):ユーザーが、PVを必要とする時にPVの要求を行うもの
- StorageClass:バックエンドのストレージシステムを定義
演習ではRed Hat OpenShift Container Storage(以降OSC)用に新たなworker nodeの追加を行い、OSC Operatorを利用してOpenShiftクラスターにOCSをデプロイし、アプリケーションからOCSのPVを利用するための設定方法などを学ぶことができます。
Red Hat OpenShift Container Storage編 内容のざっくり紹介
演習で実施する項目
- Red Hat OpenShift Container Storageをデプロイするためのnodeを準備する
- OCS Operatorを使用してOCPクラスター上にOCSクラスターを作成する
- OCSが提供するRWO PVとRWX PVを使用して動作を確認する
1.Red Hat OpenShift Container Storageをデプロイするためのnodeを準備する
演習開始時にはあらかじめOCPクラスターにmaster nodeとworker nodeが用意されています。OCSはworker nodeで共存して稼働することも可能ですが、新たにOCS専用のworker nodeを3台、OCPクラスターに追加します。インフラ管理者の観点では、こういったクラスターマシンの追加や保守作業が必要になりますので、その操作方法も学んでいただけると思います。IPI(Installer Provisioned Infrastructure)方式でインストールしたOCPクラスターではMachine Setを使用することで簡単に新しいnodeを追加することが可能です。UPI方式の場合はMachine Setは利用できないため、手動でのnode追加が必要になります。
参照:マシン管理 4.6 | Red Hat Customer Portal
- 新しいMachine Setを作成
- worker nodeの追加
- 追加したworker nodeにOCSで使用するためのラベルを付与
OCSクラスターを構成するには、3つの異なるAvailability Zoneのworker nodeを選択することが必要です。異なるAvailability Zoneではないworker nodeを選択することはサポートされません。そのため、Availability ZoneごとのMachine Setを作成します。そのMachine Setを作った状態ではMachineは作成されないので、oc scaleコマンドを利用してreplica数を1にセットすることでMachineを作成します。また、OCSを稼働させるnodeには「cluster.ocs.openshift.io/openshift-storage」というラベルが必要なため、oc labelコマンドでラベルを付与します。後述のOCS OperatorはOCSを構成する様々なPodをデプロイしますが、これらのPodはこのラベルが付いているnodeで稼働するようになっています。
Machine Set作成 replicas数に1を指定してMachine作成 ラベルが付いていることを確認
2.OCS Operatorを使用してOCPクラスター上にOCSクラスターを作成する
OCS Operatorをインストールし、OCS Operatorを利用してOCSクラスターを作成します。これらの操作はCLIでも行うことができますが、演習ではWebコンソールを使って行います。Ops基礎編で行った操作と同様に、Webコンソールの「Operators」から「OperatorHub」を選択し「OpenShift Container Storage Operator」を手順に従ってインストールします。OCS Operatorのインストールが終わると、openshift-storageネームスペースにいくつかのPodが作成されていることが確認できます。
- OpenShift Container Storage Operator
- インストール時に設定する項目
- インストールされたOperator
- Podの一覧(一部)
インストールしたOCS Operatorを利用して、OCSクラスターを作成します。クラスターを構成するnodeを選択し、Storage Class、OCS Service Capacityを設定して作成します。nodeの選択については、1.で準備した「cluster.ocs.openshift.io/openshift-storage」のラベルが付いているnodeが自動的に選択されていることが確認できます。
クラスター作成後は、クラスターの状態をOCPのWebコンソールの「Persistent Storage」で確認することがでできます。また、Rook-Ceph toolboxを利用してCephクラスターを確認することも行います。
3.OCSが提供するRWO PVとRWX PVを使用してPVの動作を確認する
OCSクラスターが作成できたところで、RWO PVとRWX PVを作成してアプリケーションから利用します。RWO PVは、ひとつのworker node上で稼働するアプリケーションPodにバインドされ、PodがマウントすることでアプリケーションはPVにRead/Writeすることができます。RWX PVは、複数のworker nodeで稼働する複数のアプリケーションPodが共有してRead-Writeすることができます。
- PVC(Persistent Volume Claim)を発行し、PVが作られることを確認する
- RWO(ReadWriteOnce) PVCを使ったアプリケーションをデプロイする
- 作成したPVの実体であるCeph RBDボリュームを確認する
- CephFSが提供するRWX PVを作成し、アプリケーションから使用する
まずは、シンプルに、OCSをバックエンドとするStorageClassに対してボリュームサイズを指定するPVCを発行してみます。PVCをに記載した内容に応じたPVが作成されることが確認できます。これはOCSがDynamic Provisioning に対応しているため、PVCの発行後自動的にOCSにボリュームを作るよう命令し、そのボリュームがPVとして登録されるからです。
RWO PVの演習ではRailsアプリケーションとPVを利用するPostgreSQLデータベースをデプロイして、PVC発行・PV作成の動きと、アプリケーションによって書き込まれたデータが、アプリケーションを削除しても永続的に残っていることを確認します。RWX PVではfile-uploaderアプリケーションをデプロイして、複数のアプリケショーンが同一のRWX PVをどのように利用するかを確認します。
OpenShiftを利用する際に、ストレージバックエンドが何であるかを意識することはあまりないとは思いますが、このワークショップではOCSとOCPが統合されていて、運用面も含めて最適であるかを実感していただけると思います。OCP+OCS合わせてのハンズオンは他ではあまりないので、是非、体験していただければと思います。