OpenShift Lab
演習の概要
このモジュールでは、 OpenShiftを利用して簡単なWebサーバをデプロイします。
OpenShift環境へのログインとアプリケーション作成
前の演習では、Podmanを利用した簡単なWebサーバをデプロイしました。本演習ではOpenShiftを利用して同様のことを実施してみます。 OpenShiftでアプリケーションをデプロイする方法は、以下となります。これらの基礎を紹介します。
-
Gitリポジトリにあるソースコードを指定してデプロイ
-
OpenShift内部または外部コンテナレジストリにあるコンテナイメージを指定してデプロイ
OpenShiftのWebコンソールにアクセスして、ログインします。 OpenShiftのWebコンソールのURLとアカウント情報は、インストラクターから案内されます。
| 本演習を自習する場合、OpenShiftの環境をご自身でご用意ください。 |
最初にアプリケーションの開発やデプロイ場所となる「プロジェクト」を作成する必要があります。 OpenShiftでは「プロジェクト」単位でアプリケーションなどのリソースを分離する、 マルチテナンシー的な利用方法がデフォルトで可能になっています。
「新規プロジェクトを作成します」をクリックして、適当なプロジェクト名(この例では test-project99 )を入力して「作成」をクリックします。
| 複数人でOpenShiftクラスターを共有している場合、プロジェクト名の重複はできませんので、重複しないような名前を付けてください。 |
プロジェクトの作成が完了すると、OpenShiftに標準で用意されているサンプルのテンプレートを利用して、 アプリケーションを作成するためのスタートアップリソースが表示されます。
今回はこれらのリソースを利用せずに、既存のGitHubのPHPサンプルコードを利用して、Webアプリケーションをデプロイしてみます。 コンソール右上にある「+」アイコンをクリックして、「Gitからのインポート」を選択します。
続いて、下記のテキストフィールドに以下を入力します。
以下のリポジトリは index.php だけのシンプルなリポジトリです。
「検証済み」の表示を確認したら、「作成」ボタンをクリックします。
これだけでサンプルアプリケーションのデプロイが完了します。
-
GitリポジトリーURL:
https://github.com/h-kojima/php-hello-world
| OpenShiftではGitリポジトリのソースコードURLを指定すると、JavaやPHPなどの主要言語であれば、 OpenShiftに標準で備わっている専用コンテナを利用して、ユーザーアプリのコンテナイメージを自動作成してくれます。 |
しばらく待つと、以下の画像の例では「php-hello-world-git-app」という名前のアプリケーションが作成されたことが、 トポロジー画面から確認できます。
トポロジー画面の「php」アイコンをクリックして、「リソース」タブの「Routes」にあるURLから、 PHPのサンプルWebアプリケーションにアクセスできます。アクセスすると、以下のようなメッセージが確認できます。
Hello Podman 2025-12-25
Host Name: php-hello-world-6db8695b55-q24wl
Host IP: 10.128.0.236
| ここで表示されているIPアドレスは、OpenShift上のコンテナ( Kubernetes Pod)に、動的に割り当てられたIPアドレスとなります。 OpenShiftでは、コンテナ間通信を行うためのネットワークが自動作成されて利用されます。 |
「リソース」タブの ビルド 1 は完了しました の右横にある ログの表示 をクリックすると、
「php-hello-wold」コンテナを作成した時のログを確認できます。
Podman Labの時に確認できた、Containerfileからのカスタムイメージ作成のようなログなどを確認できます。
Containerfileを含んだGitリポジトリの利用
Podman Labで紹介した Containerfileを含んだGitリポジトリのソースコードからも、前述と同様の手順でアプリケーションが作成できます。
| OpenShiftでContainerfileやDockerfileを含んだGitリポジトリを指定する場合、ソースコードからのコンテナイメージ自動作成の際に、 ContainerfileやDockerfileに記載されたイメージ作成手順が自動利用されるようにデフォルトで指定されます。 |
OpenShiftの「Gitからのインポート」メニューから次のリポジトリを指定します。
このリポジトリのContainerfileでは Hello World メッセージを出力するだけの app.py を、
無限実行するように指定しています。
-
GitリポジトリーURL:
https://github.com/h-kojima/python-hello-world
以下の画像の例では、このGitリポジトリから作成されるOpenShiftのリソースが、 前述の手順で作成したpythonアプリケーションのグループに含まれないようにします。 「アプリケーション」から「アプリケーションの作成」メニューを選択して、アプリケーション名として以下を指定します。
python-hello-world-app
| こうすることで、以前に作成したPHPアプリケーションのグループと分けることができます。 後述のアプリケーション削除の時に、アプリケーションのグループ単位で別々に自動削除できるようになるので便利です。 |
これ以外の値は全てデフォルトのままにして、「作成」ボタンをクリックします。
トポロジー画面の「OpenShift」アイコン(以下の画像の例だと、黒い丸四角のアイコン)をクリックして、
「リソース」タブの「Pods」の右横にある「ログの表示」をクリックすると、
このアプリケーションで実行される app.py によって表示される Hello World メッセージが無限に出力されていることを確認できます。
左サイドメニューの「Workloads」の「トポロジー」から、トポロジー画面表示に戻れます。
このPythonアプリケーションの「Routes」で表示されるURLをクリックすると Application is not available といった
メッセージが表示されます。このコンテナではWebアプリケーションに該当するソフトウェアを何も実行していないので、これは正常な表示です。
|
コンテナイメージを利用したアプリケーション作成
OpenShiftではGitリポジトリだけでなく、コンテナイメージを利用してアプリケーションを作成できます。 Webコンソール右上の「+」アイコンをクリックして、「コンテナーイメージ」を選択します。
続いて、下記のテキストフィールドに以下を入力します。 このコンテナイメージは、前述の手順で指定したGitHubのPHPサンプルコードを含んだイメージです。
-
外部レジストリーからのイメージ名:
ghcr.io/h-kojima/php-hello-world:latest
また、既存アプリケーショングループとは独立してアプリケーションを作成するために、 「アプリケーション名」と「名前」のテキストフィールドで、以下を指定します。
-
アプリケーション名:
php-hello-world-app-01
-
名前:
php-hello-world-01
これ以外の値は全てデフォルトのままにして、「作成」ボタンをクリックします。
前述の手順と同様に、トポロジー画面の「OpenShift」アイコンをクリックして、「リソース」タブの「Routes」にあるURLから、 PHPのサンプルWebアプリケーションにアクセスできます。アクセスすると、前述と同様に以下のようなメッセージが確認できます。
Hello Podman 2025-12-25
Host Name: php-hello-world-01-7488b9c45b-w7n4b
Host IP: 10.128.0.104
OpenShiftでのアプリケーション削除
OpenShiftのWebコンソールから、作成したアプリケーションを削除できます。アプリケーションの名前の右横にある縦3点リーダーをクリックして、 「アプリケーションの削除」を選択します。以下の画像の例では、「php-hellow-world-git-app」という名前のアプリケーションを指定しています。
削除確認メッセージが表示されるので、削除対象のアプリケーション名をテキストフィールドに入力して、 「削除」ボタンをクリックします。
これによって、このアプリケーションに関連するリソース全てが自動削除されます。
OpenShiftでのアプリケーション更新
| この演習は、ユーザーが編集可能なGitリポジトリが無い場合は実施できません。 インストラクターがGitLabなどのGitリポジトリのURLを提示する場合は、それを利用できます。 |
Gitリポジトリのソースコードを修正してコミットした場合、 コンテナイメージを再ビルドすることで、コミットしたソースコードが反映されたアプリケーションをデプロイできます。
アプリケーションを削除していた場合は、前述と同様の手順でアプリケーションを作成します。 そして、アプリケーション作成時に参照するGitリポジトリ上のソースコードを編集した後に、 トポロジー画面の対象のアプリケーションの「ビルドの開始」ボタンをクリックします。
| 前回のビルドで保存されたコンテナイメージにインクリメンタルビルド(増分ビルド)を行うことで、 前回から変更があったファイルだけがビルド対象となり、ビルドを効率的に実施しています。 これらのイメージは、OpenShift標準機能の1つである 内部コンテナレジストリに保存されます。 |
再び「リソース」タブの「Routes」にあるURLから、PHPのサンプルWebアプリケーションにアクセスすると、 次の例のような変更後のメッセージ出力を確認できます。 この時、イメージの再ビルドに伴ってコンテナも再起動されているので、コンテナのIPアドレスも変更されています。
Hello Podman 2025-12-25 Changed
Host Name: php-hello-world-6f678646-jvwc7
Host IP: 10.128.0.253
コンテナレジストリのコンテナイメージを指定してアプリケーションを作成した場合、
コンテナレジストリのコンテナイメージ更新後に、
公式ガイド
にある OpenShift CLIの oc import-image コマンドを利用して、アプリケーションを手動更新できます。
以下のようなコマンド例を実行することで、更新後のコンテナイメージをインポートしてアプリケーションが再作成されます。
|
oc import-image image-registry.openshift-image-registry.svc:5000/<プロジェクト名>/php-hello-world-01 --from=ghcr.io/h-kojima/php-hello-world:latest --confirm
| OpenShiftの標準機能として、OpenShiftのWeb コンソール上で実行できる OpenShift Web Terminalを利用できます。 |