Red Hat OpenShift Platform 4 ハンズオンワークショップ紹介 〜Ops基礎編〜

OpenStackを中心にCloud製品を担当しているソリューションアーキテクトの輿水です。今回はOpenStackではなくてOpenShiftについてです。

Red Hat では「 Container and Cloud Native Roadshow 」というイベントを不定期に開催しています。Red Hat OpenShift 4のハンズオンワークショップを通して、コンテナを利用したクラウドネイティブなインフラストラクチャの運用管理に関する基礎知識やプラクティスを学ぶイベントです。内容は開発者向けトラックと運用管理者向けトラックに分かれており、ここでは運用者向けトラックについてご紹介いたします。最近では11月末に開催しましたが、今後はハンズオンワークショップを積極的に開催してゆく予定です。

f:id:mkoshimizu:20201224113641p:plain
ハンズオンワークショップ画面

ハンズオンワークショップのポイント

  • 利用者はひとつのRed Hat OpenShift 4 クラスター環境を専有してハンズオンを行う
  • ガイドに従って自分のペースで実施
  • オンライン・ワークショップ
  • Etherpadなどの共有ツールでインストラクターと質疑応答可能

運用者向けトラックは「Red Hat OpenShift 4 Ops基礎編」と「Red Hat OpenShift Container Storage編」+「オプション:基礎より少し踏み込んだ項目」で構成されています。Red Hat OpenShiftとKubernetesとの違いや、Red Hat OpenShiftが独自に持つ概念(例えばプロジェクトやImageStreamとは何か?)などはワークショップ中では改めては説明いたしませんので、それらの内容はワークショップの前に、あらかじめ座学で学んでおくことをおすすめします。また、Red Hat OpenShift自体をインストールする事はワークショップに含まれていない点と、この環境で使用するRed Hat OpenShift 4のバージョンは4.5以上ですがバージョンによる差異を感じる内容ではない点はご了承ください。

Red Hat OpenShift 4 Ops基礎編

OpenShiftのコンセプトと基本的なクラスター管理方法を学びます。コンテナやKubernetesの経験がある方には違いを感じて頂きやすい内容です。UIを使ったアプリケーションのデプロイや、Prometheusを使用したモニタリング、Operator Lifecycle Manager を利用したOperatorによる機能追加などを学ぶことができます。

Red Hat OpenShift Container Storage編

OpenShiftに最適なクラウドネイティブストレージであるOpenShift Container Storage(以降OCS)の利用方法を学びます。 Operatorを利用してOpenShiftクラスターにOCSをデプロイし、アプリケーションからOCSの永続ストレージ(PV)を利用するための設定方法などを学ぶことができます。

Red Hat OpenShift 4 Ops基礎編 内容のざっくり紹介

演習で実施する項目

  • OpenShiftクラスターへのログインと動作確認
  • コンテナイメージのビルドとデプロイ
  • Prometheus Operatorのデプロイとアプリケーションの監視

1.OpenShift4クラスターへのログインと動作確認

この演習では、CLI(ocコマンド)およびWebコンソールを利用してOpenShiftクラスターへのログインを行い、環境やリソースの動作確認を行います。

OpenShiftでは各プロジェクトに属するあらゆるリソースのメトリクスを取得できるようになっており、PrometheusやGrafanaなどを使うことでモニタリングおよび描画を実現しています。PrometheusはOpenShiftのUIに組み込まれており、WebコンソールからプロジェクトのCPUやメモリなどのリソース利用状況をグラフなどで確認できます。Webコンソールでは、クラスターを構成するNodeの情報、例えばmaster / worker のRole、そのNodeのCPUやメモリなどのリソース利用状況、そのNode上で動作するPod一覧を確認できます。Nodeの変更操作も可能ですが、演習では行いません。また、ocコマンドでのプロジェクトのワークロードの確認などを行います。この辺の内容は、一度でもOpenShiftを触ったことがある方には超基本かもしれません。

f:id:mkoshimizu:20201206122533p:plain

2.コンテナイメージのビルドとデプロイ

OpenShiftクラスターに対するコンテナイメージのビルドやデプロイ操作をOpenShiftの機能を使用して行います。演習では S2I(Source-to-Image)というツールを使って「リポジトリURL : GitHubなどソースコード格納場所 」「S2I Builder Image : S2Iスクリプトが含まれているDockerイメージ」を指定してコンテナイメージを生成し、コンテナアプリケーションをデプロイします。OpenShiftは、カタログ機能 (Developer Catalog)を備えており、JavaやPython、nginxなどのS2I Builder Imageをカタログ上で選択することがきます。これらを利用してアプリケーションを簡単にOpenShiftクラスター上にデプロイできます。

演習での大まかな流れは「プロジェクトの作成→Developer Catalogからソースを指定してビルド&デプロイ→作成されたアプリケーションを外部に公開するためのRoute作成」となってます。演習ではblogアプリケーションをデプロイしています。

f:id:mkoshimizu:20201206140245p:plain

デプロイされたアプリケーションの情報

f:id:mkoshimizu:20201224120828p:plain

3.Prometheus Operatorのデプロイとアプリケーションの監視

OpenShiftのざっくりとした操作方法とアプリケーションのデプロイを理解したところで、Operatorの導入、Operatorとアプリケーションの連携やOperatorに対する操作を学びつつOpenShiftの理解を深めます。この演習ではPrometheus Operatorを利用します。

Prometheus Operatorは、Kubernetesサービスのシンプルな監視定義およびPrometheusインスタンスのデプロイと管理を提供します。

  • Kubernetesネームスペース、特定のアプリケーション、またはチーム用のPrometheusインスタンスをOperatorを使って簡単に起動できます。
  • CRD(Custom Resource Definition)を通してPrometheusのバージョンや永続性、保存ポリシー、レプリカなどの基本設定ができます。
  • Kubernetesラベルクエリに基づいて、監視構成を自動的に生成します。

ステップ

  • 監視対象となるJBoss EAPのアプリケーションを立ち上げる
  • Prometheus JMX Exporterを利用してJMXからメトリクスを収集する
  • Prometheus Operatorを活用して、JMXメトリクスの情報を可視化する

f:id:mkoshimizu:20201219120426j:plain

監視対象となるアプリケーション用の「jmx」というプロジェクトを作成し、アプリケーションをレポジトリから「jboss-eap-prometheus」イメージをビルドします。ビルドされたイメージはImageStreamに登録されます。登録された「jboss-eap-prometheus」を利用してアプリケーションをデプロイします。デプロイ後はアプリケーションを外部に公開し、アクセスできれば完了です。一連の操作の流れとしては「2.」と同じですが、Webコンソールではなく、ocコマンドで実施し、ビルド状況のログの確認なども行います。

Prometheus Operator用のプロジェクト「jmx-monitor」を作成します。OpenShiftクラスターに付随しているOperatorHubには様々なOperatorが登録されています。その中からPrometheusを検索し、特定のネームスペースに対してインストールするように指定して(デフォルトはAll namespaces on the clusterなので、A specific namespace on the clusterに変更する)、プロジェクト「jmx-monitor」にインストールします。インストール後の時点では、CRD(Custom Resource Definition)の登録やPod上へのPrometheus Operatorのデプロイが行われるだけで起動していません。これらの動作や設定内容をWebコンソールおよびocコマンドで確認しながら実施します。

先の処理で、Prometheus Operatorをデプロイした「jmx-monitor」プロジェクトと、アプリケーションをデプロイした「jmx」プロジェクトが存在しています。Prometheus Operatorがjmxを監視対象にするためにPrometheus Operatorのカスタムリソースを設定します。

f:id:mkoshimizu:20201217185825p:plain 参照: OpenShift Monitoring - 自律化したPrometheus運用 - - Speaker Deck

「Kind: Prometheus」でjmx-monitorを指定し設定すると、Prometheusに必要なコンテナがレプリカの数だけ起動します。起動したprometheus-operaterに対してRouterを設定し、外部からのアクセスを可能にします。「jmx-monitor」Podと「jmx」Pod間が通信可能になるようPodネットワーク許可設定を行います。「Kind: ServiceMonitor」を設定し、jmxを監視対象として設定します。


文章だけ見ると短く感じるかもしれませんが、実際に演習を行うとそれなりなボリュームです。演習ガイドに従って進めればプロジェクト作成、ビルド&デプロイ、Route設定の一連の流れとOperator設定を理解できると思います。ワークショップにご興味があればご連絡ください。

* 各記事は著者の見解によるものでありその所属組織を代表する公式なものではありません。その内容については非公式見解を含みます。