【IBM Cloud】IBM CloudのOpenShift Virtualizationを使ってnginxを立ち上げてみた

## はじめに
今回はIBM Cloud上のOpenShift Virtualizationを使ってCentOSを構築し、nginxをインストールしてテストページにアクセスしてみたので、その流れを整理しています。
本検証には[IBM Cloudアカウント](https://cloud.ibm.com/docs/account?topic=account-accounts)のほか、以下の前提条件が満たしていることが前提となります。

## 今回記事の前提条件
- [IBM Cloud CLI](https://cloud.ibm.com/docs/cli?topic=cli-getting-started&locale=ja)および[Openshift CLI](https://cloud.ibm.com/docs/openshift?topic=openshift-cli-install&locale=ja)がインストールされている
- 利用するOpenShiftクラスターが作成されている
- 今回の検証にはMacbook（MacOS）を利用しています

## Openshift Virtualizationとは？
Openshift Virtualizationとは、OpenShift環境上でVMを利用することができるデフォルトの機能です。
特徴としては、LinuxのディストリビューションとWindowsのテンプレートが用意されているほか、RedHat Enterprise Linux の仮想マシンは無償・無制限で使用することができる機能です。

VMwareのコンテナ版だと考えるとイメージしやすいですが、さらに仮想マシンとコンテナの両方を統合したインフラとして、運用のしやすさがメリットとして挙げられる機能です。
また、最近のVMware社のライセンス形態が変更されたことによって、VMware（VCF）の代替案としても注目を集めています。

![スクリーンショット 2025-05-26 19.22.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/9c9642d3-3ffd-4436-b935-23ef07bff3e5.png)

また、OpenShift VirtualizationをIBM Cloud上で利用するにあたって[必要な条件](https://cloud.ibm.com/docs/openshift?topic=openshift-oc-virtualization&locale=ja)は以下となります。
- 4.17 以降の Red Hat OpenShift on IBM Cloud クラスター
- ベアメタルワーカーノード
- オペレーティングシステムはRHCOS
- アウトバウンド・トラフィック保護が無効
- OpenShift Data Foundation（ODF）のインストール

## 作業の流れ
#### ① OpenShift Virtualizationのインストール
OpenShift Virtualizationは全てOpenShiftコンソール上でインストールすることができます。
まず、OpenShiftの仮想マシンを立ち上げるため、前提条件に記載した通り作成済みのOpenShiftクラスターにアクセスし、`Openshift Web コンソール`をクリックします。
![スクリーンショット 2025-05-26 19.25.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/a33ca72c-8aa2-4d18-b775-f219280c8544.png)

OpenShift Virtualizationを利用する際の前提の通り、データの永続性のために最初にODFをインストールします。
すでに用意されているクラスターのコンソールにアクセスし、左側のOperatorHubカテゴリーにて`OpenShift Data Foundation`を検索します。
![スクリーンショット 2025-06-11 17.21.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/95f37744-1083-47c1-971e-a9579590151b.png)
![スクリーンショット 2025-06-11 17.21.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/cda59afe-98a0-4fc7-9f82-68d6afd945eb.png)
ODFをインストールします。
![スクリーンショット 2025-06-11 17.21.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/f2284c7b-4700-45cd-a9e6-7896cffc8a33.png)

今度は、同じ方法で`OpenShift Virtualization`をインストールします。
![スクリーンショット 2025-06-11 17.23.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/b0de802f-6b02-4f2a-827f-41fc440e7939.png)
![スクリーンショット 2025-06-11 17.23.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/314a7afa-4b6c-47cc-88a6-01e64155f195.png)

OpenShift Virtualizationがインストールされたら、少し間を空けて`HyperConverged`の作成を要求されます。こちらのHyperConvergedは仮想マシン管理機能のコンポーネントを構成・有効化するため要求されるものであり、作成が必要になります。
![図1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/e4fd1950-13b7-48ea-9473-95d45334baa2.jpeg)
以下のように右上のチェックマークが入り、下の`Create HyperConverged`か活性化されたらをクリックし作成します。
![図2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/adde3546-fc44-4c25-b611-e851ba91cbfe.jpeg)

作成画面が表示されたら、HyperConverged名など適宜設定します。
![3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/bba93408-3899-4c83-ab76-42cec568df60.jpeg)
次はinfraとworkloadsのaffinityに関する設定を行います。ここでKeyを入力する必要がありますが、作成したクラスターのノードラベルに基づいて入力します。
今回はIBM Cloud Kubernetes Service（IKS）に自動で付与される`ibm-cloud.kubernetes.io/machine-type`を入力しました。
またValuesにクラスターのプロファイルも入力します。
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/ed8ada73-2f1b-40ed-a7d3-4e18b2a64285.png)

::: note
もし、クラスターにどんなラベルが付与されているか確認したい場合には、以下のコマンドを試してみてください。
```
oc get nodes --show-labels | grep ibm-cloud.kubernetes.io/machine-type
```
:::

また、OpenShift Virtualizationのためのストレージとして、ODFだけではなくFile Storage for VPCを利用することもできます。もしFile Storage for VPCを利用したい場合には、[こちらの手順](https://cloud.ibm.com/docs/openshift?topic=openshift-storage-file-vpc-install&interface=ui)に沿ってFile Storage for VPCをインストールください。

::: note warn
File Storage for VPCのみの構成でも稼働はしますが、IBM Cloudとしてはサポート外となります。そのため、上記のOpenShift Data Foundationのデプロイも必ず実施ください。
:::

無事全てのインストールが完了したら、コンソール画面の`Operator`→`インストール済みのOperator`に諸々のOperatorが入っていることがわかります。
![スクリーンショット 2025-06-11 18.33.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/fbbfe3f3-59d4-49db-9982-46dd8c353195.png)

#### ② OpenShift VirtualizationでのVM作成
OpenShift Virtualizationが無事インストールされたら、左のカテゴリーに`Virtualization`が表示されるようになります。
`Virtualization`→`VirtualMachines`をクリックします。
なお、こちらの`Virtualization`カテゴリーは前提条件の通りインストールしていない場合には表示されませんのでご注意ください。
![スクリーンショット 2025-05-26 19.26.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/9271f77d-df70-4842-a7c1-147ed13db414.png)

`VirtualMachines`にアクセスし、今回利用する仮想マシンを立ち上げます。
右側の`Create`→`From InstanceType`をクリックします（必要に応じてテンプレートやYAMLファイルにて立ち上げることも可能です）。
![スクリーンショット 2025-05-26 19.26.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/0c60bbbc-d6a7-41b1-85f3-8e91efd4d617.png)

仮想マシンの作成画面にてVMの設定を行います。
OSや仮想マシンのインスタンス名、CPU/Memory/Storageなどのスペックを選択し、設定が終わったら下端の`Create VirtualMachine`をクリックします。
![FireShot Capture 090 - Red Hat OpenShift Container Platform_ - [console-openshift-console.openshiftvirt-417-3df3a843b9bc7236f4afd772b71f2162-0000.ca-tor.containers.appdomain.cloud].png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/08e28adb-493e-46bf-a58c-d94d748312f1.png)

なお、必要に応じてSSH Keyを指定することも可能でして、今回の検証にもSSH Keyを利用しています。
`Public SSH Key`→`Not configured`をクリックし、Public SSH Keyを登録します。
![スクリーンショット 2025-05-26 19.27.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/4476149b-b337-4d23-8ea5-1784fc328110.png)

作成ページにて作成ボタンをクリックすると、仮想マシンはすぐに立ち上がって稼働開始します（Status : Running）。環境にもよるかと思いますが、私の環境では約5秒ぐらいですでに稼働を始めていました。
![スクリーンショット 2025-05-26 19.29.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/12ea7524-4085-459c-a748-5e98d4bc9590.png)

これで仮想マシンの立ち上げは完了です。

#### ③ 仮想マシンにログイン
次は仮想マシンにログインし、テストページを表示させます。
コンソール右上の`アカウント`→`ログインコマンドのコピー`をクリックします。
![スクリーンショット 2025-05-26 19.52.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/0c1b0823-9688-431a-95a8-5af4f10b6a84.png)
`Display Token`をクリックします。
![スクリーンショット 2025-05-26 19.52.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/f6b1f1e1-9fb2-4528-8ca5-24cc309b34f1.png)
ログイントークンをコピーします。
![スクリーンショット 2025-05-26 19.52.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/ba92cd1d-26fd-401b-91e9-a35a6d985506.png)
ターミナルを開き、コピーしたログイントークンを入力します。
```
moonsy@moon ~ % oc login --token=sha256~xxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxx --server=https://xxxxxxxxxxx.xxxxxxxxxxx.xxxxxxxxxxx.cloud.ibm.com:xxxxx

Logged into "https://xxxxxxxxxxx.xxxxxxxxxxx.xxxxxxxxxxx.cloud.ibm.com:xxxxx" as "IAM#xxxxxxx@xxxxx.com" using the token provided.

You have access to 70 projects, the list has been suppressed. You can list all projects with 'oc projects'

Using project "default".
```
次はKubernetes上で仮想マシンを運用できるコマンドである`KubeVirt（virtctl）`をインストールします。
Macの場合以下のコマンドを利用しますが、検証時点での最新版はv1.4.1でした。
```
curl -L -o virtctl https://github.com/kubevirt/kubevirt/releases/download/$1.4.1/virtctl-$1.4.1-darwin-amd64
```
```shell:結果
moonsy@moon ~ % curl -L -o virtctl https://github.com/kubevirt/kubevirt/releases/download/$1.4.1/virtctl-$1.4.1-darwin-amd64
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100     9  100     9    0     0     35      0 --:--:-- --:--:-- --:--:--    35
```
もしくは、コンソール右上の`？`→`コマンドラインツール`からもインストール可能です。
![スクリーンショット 2025-05-26 20.13.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/1318fa6b-f314-4d02-be81-16356361d6b2.png)
![スクリーンショット 2025-05-26 20.14.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/989174ae-9ef6-4caa-bc77-85528ffefa34.png)

:::note
**うまくいかない時のTips**

Macの設定上、以下のようなエラーメッセージが表示されるケースがありますが、その際にはMacの設定を変更することで解決できます。

右上の`？`をクリックします。
![スクリーンショット 2025-05-26 13.31.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/f921b436-46ee-43d8-9d3c-3c82f3532556.png)

手順の記載の通り`システム設定`→`プライバシーとセキュリティ`→`セキュリティ`に進み、virtctlに関して`このまま許可`をクリックすることによって解決できます。
![スクリーンショット 2025-05-26 13.31.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/ec1b8b02-051c-4f6f-af77-371387294f69.png)
![スクリーンショット 2025-05-26 13.33.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/90978f6c-9ab2-42aa-9097-5b1641828637.png)
:::


virtctlコマンドが使えるようになったら、次は以下のコマンドにて仮想マシンにログインします。
```
virtctl ssh --namespace default --username {選択したOS} {仮想マシン名}
```
usernameは基本的に選択したOS名になっているため、そのまま入力したら問題ないかと思います。今回はCentOSにしているので、usernameも`centos`でした。
```shell:結果
moonsy@moon ~ % virtctl ssh --namespace default --username centos moon-test
Enter passphrase for key '/Users/moonsungyun/.ssh/id_rsa': 
Last login: Mon May 26 07:20:57 2025 from xxx.xx.xxx.xxx
[centos@moon-test ~]$ 
```

:::note
もしusernameが間違っている場合、YAMLファイルでusernameを確認することができます。
`仮想マシン`→`YAML`→`user`でソートすると、`cloudInitNoCloud`のLOCに`user:`が表示されますのでご確認ください。
![スクリーンショット 2025-05-26 20.17.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/16f85055-4a9f-449d-95ac-5cb6e17148d3.png)
:::

仮想マシンへのSSHログインは以上です。

#### ④ nginxのインストール
仮想マシンにログイン後、以下のコマンドでnginxをインストールします。
```
sudo yum install -y nginx
```
```shell:結果
[centos@moon-test ~]$ sudo yum install -y nginx
CentOS Stream 10 - BaseOS                                                                                                                   7.7 MB/s | 6.6 MB     00:00    
CentOS Stream 10 - AppStream                                                                                                                8.0 MB/s | 3.2 MB     00:00    
CentOS Stream 10 - Extras packages                                                                                                           30 kB/s | 6.1 kB     00:00    
Dependencies resolved.
============================================================================================================================================================================
 Package                                        Architecture                       Version                                      Repository                             Size
============================================================================================================================================================================
Installing:
 nginx                                          x86_64                             2:1.26.3-1.el10                              appstream                              33 k
Installing dependencies:
 centos-logos-httpd                             noarch                             100.2-3.el10                                 appstream                             855 k
 nginx-core                                     x86_64                             2:1.26.3-1.el10                              appstream                             662 k
 nginx-filesystem                               noarch                             2:1.26.3-1.el10                              appstream                              12 k

Transaction Summary
============================================================================================================================================================================
Install  4 Packages

Total download size: 1.5 M
Installed size: 3.2 M
Downloading Packages:
(1/4): nginx-1.26.3-1.el10.x86_64.rpm                                                                                                       230 kB/s |  33 kB     00:00    
(2/4): nginx-filesystem-1.26.3-1.el10.noarch.rpm                                                                                            694 kB/s |  12 kB     00:00    
(3/4): nginx-core-1.26.3-1.el10.x86_64.rpm                                                                                                  2.8 MB/s | 662 kB     00:00    
(4/4): centos-logos-httpd-100.2-3.el10.noarch.rpm                                                                                           2.8 MB/s | 855 kB     00:00    
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                       3.6 MB/s | 1.5 MB     00:00     
CentOS Stream 10 - AppStream                                                                                                                959 kB/s | 1.6 kB     00:00    
Importing GPG key 0x8483C65D:
 Userid     : "CentOS (CentOS Official Signing Key) <security@centos.org>"
 Fingerprint: 99DB 70FA E1D7 CE22 7FB6 4882 05B5 55B3 8483 C65D
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial-SHA256
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                                                    1/1 
  Running scriptlet: nginx-filesystem-2:1.26.3-1.el10.noarch                                                                                                            1/4 
  Installing       : nginx-filesystem-2:1.26.3-1.el10.noarch                                                                                                            1/4 
  Installing       : nginx-core-2:1.26.3-1.el10.x86_64                                                                                                                  2/4 
  Installing       : centos-logos-httpd-100.2-3.el10.noarch                                                                                                             3/4 
  Installing       : nginx-2:1.26.3-1.el10.x86_64                                                                                                                       4/4 
  Running scriptlet: nginx-2:1.26.3-1.el10.x86_64                                                                                                                       4/4 

Installed:
  centos-logos-httpd-100.2-3.el10.noarch        nginx-2:1.26.3-1.el10.x86_64        nginx-core-2:1.26.3-1.el10.x86_64        nginx-filesystem-2:1.26.3-1.el10.noarch       

Complete!
```
インストールが完了したら、次は以下のコマンドにてnginxを起動します。
```
sudo systemctl enable --now nginx
```
```shell:結果
[centos@moon-test ~]$ sudo systemctl enable --now nginx
Created symlink '/etc/systemd/system/multi-user.target.wants/nginx.service' → '/usr/lib/systemd/system/nginx.service'.
```
最後にnginxの状態を確認するために、以下のコマンドを入力します。
```
sudo systemctl status nginx
```
```shell:結果
[centos@moon-test ~]$ sudo systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
     Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: disabled)
     Active: active (running) since Mon 2025-05-26 07:31:32 EDT; 7s ago
 Invocation: d6e41f5de0d346c18dfb263ff295a89a
    Process: 4572 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
    Process: 4574 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
    Process: 4576 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
   Main PID: 4577 (nginx)
      Tasks: 2 (limit: 22860)
     Memory: 2.4M (peak: 2.9M)
        CPU: 25ms
     CGroup: /system.slice/nginx.service
             ├─4577 "nginx: master process /usr/sbin/nginx"
             └─4579 "nginx: worker process"

May 26 07:31:32 moon-test systemd[1]: Starting nginx.service - The nginx HTTP and reverse proxy server...
May 26 07:31:32 moon-test nginx[4574]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
May 26 07:31:32 moon-test nginx[4574]: nginx: configuration file /etc/nginx/nginx.conf test is successful
May 26 07:31:32 moon-test systemd[1]: Started nginx.service - The nginx HTTP and reverse proxy server.
```
これで無事nginxがインストールされ、問題なく起動されていることがわかります。
次の操作のため`exit`コマンドにて仮想マシンから出てローカルに戻ります。
```
[centos@moon-test ~]$ exit
logout
Connection to vmi/moon-test.default closed.
moonsy@moon ~ % 
```
#### ⑤ ServiceとRouteの作成
nginxのインストールが完了したら、次は以下のコマンドにてnginxにアクセスするためのServiceとRouteを作成します。今回サービス名は任意で`nginx`、ポート番号は`27017`、ターゲットポート番号は`80`にしています。
```
virtctl expose vmi {仮想マシン名} --name {Service名} --port {ポート番号} --target-port {ターゲットポート番号}
```
```shell:結果
moonsy@moon ~ % virtctl expose vmi moon-test --name nginx --port 27017 --target-port 80 
Service nginx successfully exposed for vmi moon-test
```
以下のコマンドにて、Serviceが作成されていることを確認します。
Cluster IPは後ほどページ確認の際に利用するため、メモしておいてください。
```shell:Service確認
oc get svc
```
```shell:結果
moonsy@moon ~ % oc get svc

NAME                        TYPE           CLUSTER-IP      EXTERNAL-IP                            PORT(S)     AGE
nginx                       ClusterIP      172.xxx.xxx.xx   <none>                                 27017/TCP   2m
```
```shell:Route確認
oc get route {Service名}
```
```shell:結果
moonsy@moon ~ % oc get route nginx

NAME    HOST/PORT                                                                                                 PATH   SERVICES   PORT   TERMINATION   WILDCARD
nginx   nginx-default.openshiftvirt-417-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-0000.ca-tor.containers.appdomain.cloud          nginx      80                   None
```
Serviceが問題なく作成されたら、次は以下のコマンドを使ってRouteを作成し、HTTPベースで外部に公開します。
```
oc expose svc/{Service名}
```
```shell:結果
moonsy@moon ~ % oc expose svc/nginx 
route.route.openshift.io/nginx exposed
```

#### ⑥ 結果確認
最後に外部公開したnginxを確認しますが、以下三つの方法で確認します。

まずは上でRouteを作成して外部向けのエンドポイントを作成しているので、直接そちらにアクセスすることができます。
`oc get route nginx`で取得したHOST/PORTの内容を確認し、前方に`http://`をつけてアクセスします。
```
http://nginx-default.openshiftvirt-417-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-0000.ca-tor.containers.appdomain.cloud
```

次の方法は仮想マシンにログインしてnginxを確認します。
仮想マシンにログイン後、ServiceとRoute作成後に取得したCluster IPの`172.xxx.xxx.xx`と任意のポート番号`27017`を使います。
以下のコマンドを入力すると、HTTP形式でページが表示されることがわかります。
```
curl {Cluster IP}:{ポート番号}
```
```shell:結果
curl http://172.xxx.xxx.xx:27017
<!DOCTYPE html>
<html lang="en-US" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
<head>
  <meta name="generator" content="HTML Tidy for HTML5 for Linux version 5.8.0" />
  <title>HTTP Server Test Page</title>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
  <link rel="shortcut icon" type="image/png" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAB2lBMVEVHcEyhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4yhT4z///+mWJKgTouhTozZuNDr2eb//v/ImLyfTIr17fO+ha/vpyT+/f6gTYukVZCmWZKlU4fYt9ClVpGlV5HHl7v2zIHlzt/7683++O779/rvpiLelDupX5bq2Obu4Ovs2+f0wmbwqCOgTYrTrMn9/P3AirP99un0wmf9+/zYts/8+vy7f6z69vnUr8ueSYi0c6OeSoijUo7vpSDvpiDytkr38PXJmr2fS4qybqHt3env4OvKnL6uZ5ufS4nq1+Xp1uTbu9KkUoilVIepXI6lU4X0wmjekznflTnvqCXxrS/wqCLfmEf63aX31pjrzLn///2kVI/+/P3+/v+/hrD58/fHlrqhTov99uj0w2nwqy348fb87dLs2+j++O/87NC+hrD0wWX48vbRhUzxqSH69fmqYZfxsDr++/bP99evAAAANXRSTlMAAvJs9o3mb8v84eALums0oF0l6HzjFTfk4ix4XDrzvyu7JhNtvKQM6RJ3/jsUwPS9MjMq5z2a768AAAAJcEhZcwAALz4AAC8+AZ80I6wAAANMSURBVEjHlZZnV+JAFIYD0gTFrtjWsqvb++aCIt0Gogg2EHvD3nXtvfe6bv2vO8kEkhDgHO4XMjfvk8PMvHPvEERYJH1WpypkEpKUyBTlCSkvidhRKk/+lkiGIvFViTw9hjxPqiQFoZIWR5FnZ2aREUOZ/zyS/t0HMmqU5QjkojQNV6GrrtZxx7kFojD9CzFPX1NXV8MjxAkivv4jT6+tBKjU8ohnPKJAHKavAqgKI8RprD4nF+cq6LDReiGhKQzq33/CmXotFXYP0vcNDPQhYnWtFsXKd/y+KJsB8hn9cpseRUurFWBweHgQ4ORgd8Ptdm/+ZIhMrC/G21uhbYNQOEZGHOjncG97p6Pj1+YKBrLyaEDKTECrRxLXGQ0YjEYD/bC/ZbF0uGuZaUgpfbqKA/w+PzVxga51CxdQliJATrKA65y0mU0s0NXdbLFs7YQAUo78n8wBzk5tpI4i5qam5gAukb55fX97IwQkJxFfMoKAvQXAZNaRtscnmJmenoH7K6Tv7oK93bUgkJFCJATPi83TChRh09WjyczOAjxcN1N6ODxYDe5gopooZ/1gpaZpeqz/c4fX9vbv9dUl9XDC7nkqoeD6h4on/Z0LGpuaGuHf7cM9zrEuURCyMD2Ohh/tDdxxiJAREux/yj+DDoPBMDcD0NgwPjo63tAIsDSJUo5eKyLw+ZAQNFddh74yMDxiNBqnpmehqX3MYhlrb4LF+QWUGurvQa/rqmlp/EDcfynuSQuWdcLpvMHLeuN0TgiXNTV848wBuxPLnPYA7USwcjdOHW4N3UUAAYuLCAhc0E6EVo+NtUaKwHw68wQszc8vwQQ9QESLvYI1H8/eLr8XSyYXFiYx7vW7QK+tYO3NO0CdviMv9wCZzN4jXycHkFMtQck5osc+P++Imvy+Y2ABVbqgCHS6+EXA1QkcQIrbSFaEMjM05GBHbQygZFpLprCQ9fb396L1b22hMm3L9ViRH2w9RYJSae3pofzjsdMpRl8WakSFmijF2IYzTFPhtKG0OMs9IUp4Fl9DQUR8LQsRBbmxmqImTSToozklb6O23aLCSI369RtVZHlWZnaUu8BXqSrS1SEvxm0jXZ6cEcflhL7+pLDXn1S18PrzH6q3ssF28EqqAAAAAElFTkSuQmCC" />
  <style type="text/css">
  /*<![CDATA[*/
  /*!
  * The CentOS HTTP Server Test Page
  * Copyright 2021 Alain Reguera Delgado
  * Licensed under CC BY-SA 4.0 (https://creativecommons.org/licenses/by-sa/4.0/)
  */
  @charset "UTF-8";
  /*!
  * Bootstrap  v5.3.3 (https://getbootstrap.com/)
  * Copyright 2011-2024 The Bootstrap Authors
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
  */
.
.
.
(省略)
.
.
.
  <footer class="footer small bg-dark bg-image text-light">
    <div class="container border-5 border-top border-primary">
      <div class="row mt-4">
        <div class="lead">
          HTTP Server Test Page
        </div>
      </div>
    </div>
    <div class="container py-1">
      <div class="row my-3">
        <div class="col">
          <span>Copyright ©</span> <span>2024</span> <span>The CentOS Project</span> <span class="border-start ms-2 ps-2"><a class="link-light link-offset-3 link-underline-opacity-25 link-underline-opacity-100-hover link-underline-light" href="https://www.centos.org/legal">Legal</a></span> <span class="border-start ms-2 ps-2"><a class="link-light link-offset-3 link-underline-opacity-25 link-underline-opacity-100-hover link-underline-light" href="https://www.centos.org/legal/privacy">Privacy</a></span> <span class="border-start ms-2 ps-2"><a class="link-light link-offset-3 link-underline-opacity-25 link-underline-opacity-100-hover link-underline-light" href="https://git.centos.org/centos/centos.org">Site source</a></span>
        </div>
      </div>
    </div>
  </footer>
</body>
</html>
[centos@moon-test ~]$ exit
logout
Connection to vmi/moon-test.default closed.

```

最後の方法は、ローカルポートフォワードをしてブラウザGUIで確認する方法です。
上記の通りアカウント制限上直接ブラウザにて確認することはできないですが、ポートフォワード機能を利用することで一時的にテストページにアクセスすることが可能となります。

ローカルマシンにて以下のコマンドを入力します。
```
oc port-forward svc/{Service名} 21017:27017
```
```shell:結果
moonsy@moon ~ % oc port-forward svc/nginx 21017:27017
Forwarding from 127.0.0.1:21017 -> 80
Forwarding from [::1]:21017 -> 80
```
このままlocalhostでURLにてアクセスすると、ターミナルでは`Forwarding`に次いで`Handling`メッセージが追加され、ブラウザではテストページが表示されます。
```
http://localhost:21017
```
```shell:結果
moonsy@moon ~ % oc port-forward svc/nginx 21017:27017
Forwarding from 127.0.0.1:21017 -> 80
Forwarding from [::1]:21017 -> 80
Handling connection for 21017
Handling connection for 21017
```
以下、テストページ
![スクリーンショット 2025-05-26 21.35.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/608a9915-d009-41d7-8a63-d38266eba13c.png)

## 参考
IBM Cloud Docs - [Red Hat OpenShift on IBM Cloud クラスタに OpenShift Virtualization Operator をインストールする](https://cloud.ibm.com/docs/openshift?topic=openshift-oc-virtualization&locale=ja)