Red Hat社の提供するハンズオン環境を使って、OpenShiftの機能を試してみた

Red Hat社の提供する無料で使えるハンズオン環境、[Red Hat OpenShiftインタラクティブラボ](https://www.redhat.com/ja/explore/interactive-labs/openshift)で、OpenShiftの機能を試してみました。




# インタラクティブラボとは
この環境では、無償でRed Hat OpenShift上でアプリケーションを構築、デプロイ、実行、管理する方法について、理解を深めたり知識を確認したりすることができます。以下の画面の通りセクションに分かれてハンズオンが用意されており、自分の興味のあるところを選んで取り組むことが出来ます。各トピックとも日本語の説明を読みながら操作を進めることが出来るので、私のようなOpenShift初級者にとっては気軽に学び始められる環境です。
![スクリーンショット 2024-05-01 11.30.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3523945/9d1b6954-e9a1-c420-162a-074f7148b253.png)



この記事は、OpenShiftのいくつかの機能について、ハンズオンラボを使って学んだ手順をまとめました。


# はじめてみよう　OpenShift
## 内容
1. ocコマンドを利用してOpenShiftクラスターにログインする
2. Webコンソールを利用してコンテナイメージからアプリケーションをデプロイして公開する
3. OpenShiftのTopologyビューからアプリケーションをスケールする
4. 外部に公開されたアプリケーションのURLにアクセスする

## 環境準備
右下の”Launch”をクリックすると、環境の準備が始まります。
![スクリーンショット 2024-05-13 14.53.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3523945/5bf1ca47-9fe4-5725-fa4f-38fdda30d935.png)

準備が完了したら、右下が”Start”に変わるので、こちらをクリックします。
![スクリーンショット_2024-05-01_11_31_41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3523945/a8ab286e-a114-3e04-9208-b65fe5748aa8.png)

## Topic 1 - Getting started with OpenShift
ハンズオンラボのセッション画面はこのように、左側にターミナル画面とWebコンソールのタブ、右側にOpenShiftの解説が表示されます。使うコマンドはコピーアンドペーストが出来るようになっています。
![スクリーンショット 2024-05-13 15.45.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3523945/f4b18dcc-8c61-a76f-9ace-e58b59af8776.png)

早速説明の通り、ocコマンドを使用してOpenShiftクラスターにログインします。
```
oc login -u admin -p admin https://api.crc.testing: 6443
```
【コマンド内容】
-u：ユーザー名(今回は"admin")
-p：パスワード(今回は"admin")
OpenShiftクラスタのAPIサーバーにログインする


以下のように出力が返ってきたら、ログイン成功です。
```ruby:出力
Login successful. 
You have access to 64 projects, the list has been suppressed. You can list all projects with
'oc projects'
Using project "default".
```

## Topic 2 - Exploring The Webconsole
クラスターへのログインが完了したので、これからOpenShiftの「Webコンソール」を開いて操作します。
![スクリーンショット_2024-05-13_15_47_07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3523945/288e444c-b987-bed4-16c3-b394694c1657.png)

左側のメニューから開発者向けの表示に変更します。
![スクリーンショット 2024-05-13 15.53.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3523945/c50a0d1a-a34c-212d-ba69-795478a02eca.png)

「＋追加」からProjectを作成します。Projectとは、Kubernetesでいうnamespaceに当たります。
![スクリーンショット 2024-05-13 15.59.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3523945/eb17f22f-ad9e-853a-878a-f01390290064.png)

開いているprojectが今作成した”My project”になっていることを確認します。続いてアプリケーションのイメージをデプロイします。Gitリポジドリーからインポートする方法や、ローカルで作ったYAMLファイル等をインポートする方法もありますが、今回は外部レジストリーからのイメージを使ってデプロイします。「コンテナイメージ」をクリックします。
![スクリーンショット 2024-05-13 16.00.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3523945/7a207531-0054-bc69-df8d-25cbfc88334a.png)

この"quay/io"から始まるイメージ名はハンズオンラボの手順の中に示されているので、コピーアンドペースト出来ます。「作成」をクリックします。
![スクリーンショット 2024-05-13 16.01.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3523945/22e93396-0bcc-ca14-2627-e5216b1b5a28.png)

トポロジーから、以下の画面を確認できます。
![スクリーンショット 2024-05-13 16.02.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3523945/bae8bda1-c834-6168-b1ce-7c57a19e2304.png)
"My project"というprojectの中に、"parksmap"というアプリケーションが作成されたことが分かります。

## Topic 3 - Scarling Your Application
クラスタ内のアプリケーションを表すPodのレプリカを作成して、アプリケーションをスケールします。
トポロジーの画面で表示されるparksmap アプリケーションの円の内側をクリックします。アプリケーションの詳細が右側に表示されるので、Podの横にある上の矢印をクリックして、Podの数を2に増やします。
![スクリーンショット_2024-05-13_16_17_48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3523945/abe9eaee-e004-6e6f-5207-f1b48805a811.png)


これでアプリケーションのレプリカが2つ実行されるようになります。
![スクリーンショット 2024-05-13 16.08.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3523945/27aa99e2-9534-cce3-d727-17ea2b88b140.png)

現在の状態を図で表すと下図のようになります。
![スクリーンショット 2024-05-13 16.09.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3523945/f8c63d98-e6d8-b4e4-6180-a785eddcf0c4.png)
Red Hat OpenShiftは、すべてのレプリカを単一のアプリケーションであるように見せます。アクセスの仕組みとしては、インターネットからのアクセスを、RouteとServiceを通して2つのPodに自動的にルーティングしています。Podを複製する利点は、このようにアプリケーションが対応できるインターネットトラフィックの量を増やすことができる点です。

続いて、OpenShiftのセルフヒーリング機能を試してみます。セルフヒーリング機能とは、宣言されている数のPodが実際に実行されているか監視し、宣言した状態を逸脱した場合に自己修復するKubernetesの機能です。


アプリケーションのリソース情報を開き、2つのPodが動いていることを確認します。
![スクリーンショット 2024-05-17 11.05.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3523945/d5d038c7-0778-4253-9aa7-8809f2c49c7f.png)
そのうち片方のPod ```parksmap-5b657455b5-5lrxx```をクリックして開き、右上のアクションから「Podの削除」を選んで削除を実行します。
![IP消す？.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3523945/2ca4bb1e-f0ca-22e8-61ec-6678fc4002f2.png)
削除した後、一瞬で代替のPodが作成されました。セルフヒーリング機能が作動したことがわかります。
![スクリーンショット_2024-05-17_11_09_54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3523945/49e67598-2d03-593f-387a-8d8818e26d1f.png)


最後に、トポロジー画面に戻り、Pod数を1にスケールダウンしてみます。
![スクリーンショット 2024-05-17 11.17.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3523945/7dabf298-651b-7935-72e8-56261ca724a4.png)
OpenShiftのGUIでのスケールアップ、セルフヒーリング機能、スケールダウンを学びました。


## Topic 4 - Routing HTTP Requests
アプリケーションを作成した時点で、OpenShiftは自動的にアプリケーションにアクセスするためのServiceとRouteを作成します。トポロジーでリソース情報を見ると、Podの情報の他にServiceとRouteが公開されていることがわかります。

![スクリーンショット 2024-05-13 16.23.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3523945/b6fd96fb-5132-437f-a505-a24ddd7aa02f.png)
次に、RouteのURLをクリックして、ブラウザからアプリケーションにアクセスします。
![スクリーンショット 2024-05-13 16.22.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3523945/6ede8bbb-5e57-0b1b-5b15-47adcfaf42f8.png)

Parksmapアプリケーションにアクセスすることが出来ました！

# まとめ
OpenShiftの学習にインタラクティブラボを使う利点として、以下の点が挙げられると感じました。
* 無料で環境を使うことができる
* OpenShiftのポータル、インタラクティブラボの説明ともに日本語で、初学者には理解し易い
* インタラクティブラボ環境を利用できる制限時間があるので、短時間で集中してOpenShift機能を学習できる
* トピックが細かく分かれているので一度に学習する内容が多くなく、テンポよく進められる

今回は「はじめてみよう　OpenShift」を取り上げましたが、他にも様々な内容で環境が用意されているので、是非OpenShiftの学習に取り入れてみてください。