OpenShift Lab

演習の概要

このモジュールでは、 OpenShiftを利用して簡単なWebサーバをデプロイします。


OpenShift環境へのログインとアプリケーション作成

前の演習では、Podmanを利用した簡単なWebサーバをデプロイしました。本演習ではOpenShiftを利用して同様のことを実施してみます。 OpenShiftでアプリケーションをデプロイする方法は、以下となります。これらの基礎を紹介します。

  • Gitリポジトリにあるソースコードを指定してデプロイ

  • OpenShift内部または外部コンテナレジストリにあるコンテナイメージを指定してデプロイ

OpenShiftのWebコンソールにアクセスして、ログインします。 OpenShiftのWebコンソールのURLとアカウント情報は、インストラクターから案内されます。

本演習を自習する場合、OpenShiftの環境をご自身でご用意ください。
login
first login

最初にアプリケーションの開発やデプロイ場所となる「プロジェクト」を作成する必要があります。 OpenShiftでは「プロジェクト」単位でアプリケーションなどのリソースを分離する、 マルチテナンシー的な利用方法がデフォルトで可能になっています。

「新規プロジェクトを作成します」をクリックして、適当なプロジェクト名(この例では test-project99 )を入力して「作成」をクリックします。

複数人でOpenShiftクラスターを共有している場合、プロジェクト名の重複はできませんので、重複しないような名前を付けてください。
project create

プロジェクトの作成が完了すると、OpenShiftに標準で用意されているサンプルのテンプレートを利用して、 アプリケーションを作成するためのスタートアップリソースが表示されます。

startup resource

今回はこれらのリソースを利用せずに、既存のGitHubのPHPサンプルコードを利用して、Webアプリケーションをデプロイしてみます。 コンソール右上にある「+」アイコンをクリックして、「Gitからのインポート」を選択します。

git import01

続いて、下記のテキストフィールドに以下を入力します。 以下のリポジトリは index.php だけのシンプルなリポジトリです。 「検証済み」の表示を確認したら、「作成」ボタンをクリックします。 これだけでサンプルアプリケーションのデプロイが完了します。

  • GitリポジトリーURL:

https://github.com/h-kojima/php-hello-world
git import02
OpenShiftではGitリポジトリのソースコードURLを指定すると、JavaやPHPなどの主要言語であれば、 OpenShiftに標準で備わっている専用コンテナを利用して、ユーザーアプリのコンテナイメージを自動作成してくれます。

しばらく待つと、以下の画像の例では「php-hello-world-git-app」という名前のアプリケーションが作成されたことが、 トポロジー画面から確認できます。

topology01

トポロジー画面の「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からのカスタムイメージ作成のようなログなどを確認できます。

build log

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アプリケーションのグループと分けることができます。 後述のアプリケーション削除の時に、アプリケーションのグループ単位で別々に自動削除できるようになるので便利です。

これ以外の値は全てデフォルトのままにして、「作成」ボタンをクリックします。

git import03

トポロジー画面の「OpenShift」アイコン(以下の画像の例だと、黒い丸四角のアイコン)をクリックして、 「リソース」タブの「Pods」の右横にある「ログの表示」をクリックすると、 このアプリケーションで実行される app.py によって表示される Hello World メッセージが無限に出力されていることを確認できます。

topology02
pod log

左サイドメニューの「Workloads」の「トポロジー」から、トポロジー画面表示に戻れます。

このPythonアプリケーションの「Routes」で表示されるURLをクリックすると Application is not available といった メッセージが表示されます。このコンテナではWebアプリケーションに該当するソフトウェアを何も実行していないので、これは正常な表示です。

コンテナイメージを利用したアプリケーション作成

OpenShiftではGitリポジトリだけでなく、コンテナイメージを利用してアプリケーションを作成できます。 Webコンソール右上の「+」アイコンをクリックして、「コンテナーイメージ」を選択します。

image import01

続いて、下記のテキストフィールドに以下を入力します。 このコンテナイメージは、前述の手順で指定したGitHubのPHPサンプルコードを含んだイメージです。

  • 外部レジストリーからのイメージ名:

ghcr.io/h-kojima/php-hello-world:latest

また、既存アプリケーショングループとは独立してアプリケーションを作成するために、 「アプリケーション名」と「名前」のテキストフィールドで、以下を指定します。

  • アプリケーション名:

php-hello-world-app-01
  • 名前:

php-hello-world-01

これ以外の値は全てデフォルトのままにして、「作成」ボタンをクリックします。

image import02

前述の手順と同様に、トポロジー画面の「OpenShift」アイコンをクリックして、「リソース」タブの「Routes」にあるURLから、 PHPのサンプルWebアプリケーションにアクセスできます。アクセスすると、前述と同様に以下のようなメッセージが確認できます。

image import03
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」という名前のアプリケーションを指定しています。

app delete01

削除確認メッセージが表示されるので、削除対象のアプリケーション名をテキストフィールドに入力して、 「削除」ボタンをクリックします。

app delete02

これによって、このアプリケーションに関連するリソース全てが自動削除されます。

OpenShiftでのアプリケーション更新

この演習は、ユーザーが編集可能なGitリポジトリが無い場合は実施できません。 インストラクターがGitLabなどのGitリポジトリのURLを提示する場合は、それを利用できます。

Gitリポジトリのソースコードを修正してコミットした場合、 コンテナイメージを再ビルドすることで、コミットしたソースコードが反映されたアプリケーションをデプロイできます。

アプリケーションを削除していた場合は、前述と同様の手順でアプリケーションを作成します。 そして、アプリケーション作成時に参照するGitリポジトリ上のソースコードを編集した後に、 トポロジー画面の対象のアプリケーションの「ビルドの開始」ボタンをクリックします。

topology03
前回のビルドで保存されたコンテナイメージにインクリメンタルビルド(増分ビルド)を行うことで、 前回から変更があったファイルだけがビルド対象となり、ビルドを効率的に実施しています。 これらのイメージは、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
oc image import
OpenShiftの標準機能として、OpenShiftのWeb コンソール上で実行できる OpenShift Web Terminalを利用できます。