type
status
date
slug
summary
tags
category
icon
password

目標

複数のコンテナイメージを使用してコンテナ化されたアプリケーションを OpenShift にデプロイする。

学習目標(Objectives)

  • テンプレート を使用して、OpenShift 上に マルチコンテナアプリケーション をデプロイする。

セクション(Sections)

  • OpenShift でのマルチコンテナアプリケーションのデプロイ(ガイド付き演習を含む)

ラボ(Lab)

  • マルチコンテナアプリケーションのデプロイ演習

この章では、複数のコンテナを組み合わせたアプリケーション のデプロイ方法を学びます。OpenShift では、テンプレート を利用して、データベース + Web アプリなどの複数のコンテナが連携するアプリケーションを効率的に管理・デプロイできます。💡
 

OpenShift におけるマルチコンテナアプリケーションのデプロイ

目標(Objective)

このセクションを完了すると、テンプレート を使用して OpenShift に マルチコンテナアプリケーション をデプロイできるようになります。

テンプレートの基本構造の確認

OpenShift Container Platform では、アプリケーションを テンプレート を使ってデプロイすることが可能です。
テンプレートは、一連の OpenShift リソースの定義 と、それらの パラメータ を記述したものです。

テンプレートの特徴

  • OpenShift クラスタ内のプロジェクトでリソースを作成する権限があれば、どのリソースでも含めることができる
  • アプリケーションの構成をまとめて管理 できる(例:Web アプリ + データベース + 必要なサービス)。
  • 変数(パラメータ)を使用して、デプロイ時に動的に値を設定 できる。
    • 例:データベースのパスワードを自動生成
  • テンプレートを利用することで、環境構築が簡単 になる。

テンプレートの事例:MySQL(永続ストレージ付き)

OpenShift には、デフォルトで openshift 名前空間にいくつかのテンプレートが用意されています。
以下のコマンドで、それらを一覧表示できます。
📌 テンプレートの例(一部)
テンプレート名
説明
cakephp-mysql-persistent
CakePHP + MySQL アプリケーション
django-psql-persistent
Django + PostgreSQL アプリケーション
mysql-persistent
MySQL データベース(永続ストレージ付き)
nodejs-mongo-persistent
Node.js + MongoDB アプリケーション

MySQL テンプレートの構造(例)

📌 ポイント
  • DATABASE_SERVICE_NAME などのパラメータを使用し、デプロイ時にカスタマイズ可能。
  • MYSQL_PASSWORD はランダムに生成される。
  • PersistentVolumeClaim を定義して、データが永続化される。

カスタムテンプレートのアップロード方法

独自のテンプレートを OpenShift に追加するには、以下の oc create -f コマンドを使用します。
デフォルトでは、現在のプロジェクト にテンプレートが作成されます。
  • n openshift オプションを付けると、OpenShift の共通テンプレートとして登録できます。
⚠️ 重要
  • openshift 名前空間に作成したテンプレートは、Web コンソールの 「Add to Project」メニュー から利用可能。
  • 現在のプロジェクト に作成した場合、そのプロジェクト内でのみ利用できる。

パラメーター

テンプレートは、一連の パラメーター(parameters) を定義し、それぞれに値を割り当てます。テンプレート内で定義された OpenShift のリソースは、名前付きパラメーターを参照することで設定値を取得できます。
パラメーターには デフォルト値 を設定できますが、必須ではありません。デフォルト値は、テンプレートを処理するときに別の値に置き換えることができます。
各パラメーターの値は、以下のいずれかの方法で設定できます。
  • oc process コマンドを使用して 明示的に設定する
  • OpenShift によって、パラメーターの設定に基づいて自動生成される

oc process とは?

oc process は、OpenShift のテンプレートを処理するためのコマンド です。
テンプレートには、アプリの設定や環境変数、必要なリソース などが定義されていますが、
そのままではアプリをデプロイできません。
そこで oc process を使って、具体的な Kubernetes リソース定義に変換 する必要があります。

なぜ oc process が必要なのか?

OpenShift のテンプレート(Template)は、再利用可能なアプリの設定ファイルです。
テンプレートには、以下のような情報が含まれています:
デプロイするアプリの種類(例:MySQL、Nginx など)
環境変数(例:データベースのユーザー名、パスワード)
作成するリソース(例:Pod、Service、Persistent Volume)
ただし!
テンプレートには変数(プレースホルダー)が含まれているため、そのままでは使えません。
たとえば、MYSQL_USER=${MYSQL_USER} のような変数が入っています。
この変数を実際の値に置き換えるのが oc process の役割 です。

oc process の基本的な使い方

1️⃣ ローカルのテンプレートを処理する

意味
mysql-template.json のテンプレートを処理して、Kubernetes のリソース定義に変換する。

2️⃣ OpenShift 内のテンプレートを処理する

意味
openshift プロジェクト内の mysql-template を処理し、Kubernetes のリソース定義を生成する。

処理結果のイメージ

例えば、以下のような mysql-template.json があったとします:
このテンプレートを oc process で処理すると:
すると、変数 ${MYSQL_USER}${MYSQL_PASSWORD} が実際の値に置き換わります:
💡 ポイント:
oc processテンプレートを実際のリソース定義に変換するだけ で、まだアプリはデプロイされていません!

oc process でアプリをデプロイする方法

処理結果を oc create に渡せば、アプリを実際にデプロイできます:
処理の流れ:
1️⃣ oc process -f mysql-template.json でテンプレートを処理し、リソース定義を生成
2️⃣ |(パイプ)で結果を oc create -f - に渡す
3️⃣ oc create によって アプリが実際にデプロイされる! 🎉

まとめ

コマンド
説明
oc process -f template.json
ローカルのテンプレートを処理し、リソース定義を生成
oc process template-name -n openshift
OpenShift 内のテンプレートを処理
`oc process -f template.json
oc create -f -`

簡単なイメージ

💡 oc process を「レシピの翻訳」に例えると…
  • テンプレート = 料理のレシピ(でも材料が「${MEAT}」みたいに変数になっている)
  • oc process = レシピの材料を「牛肉」や「豚肉」に置き換える(翻訳)
  • oc create = 実際に料理を作る(アプリをデプロイする)
つまり:
これは…
📖 「レシピを翻訳」 → 🍳 「料理を作る」 → 🍽 「完成!」 🎉
こう考えると分かりやすいですね 😆

テンプレートのパラメーターを確認する方法

テンプレートに含まれるパラメーターの一覧を確認する方法は 2 つ あります。

oc describe コマンドを使用する

以下のコマンドを実行すると、テンプレートに含まれるパラメーターが表示されます。

出力例

💡 補足
  • ${DATABASE_SERVICE_NAME} のように、変数の形で定義された値は、テンプレート処理時に実際の値に置き換えられます。
  • デフォルトの MySQL ユーザー名とパスワードが自動生成される場合がある ので、出力結果を確認することが重要です。

oc process --parameters コマンドを使用する

oc process --parameters コマンドを使用すると、よりシンプルな形式でパラメーターの一覧を取得できます。

出力例

💡 ポイント
  • MYSQL_USERMYSQL_PASSWORD には GENERATOR 列があり、OpenShift によって自動生成 されることがわかります。
  • VALUE 列にデフォルト値が設定されているものもあり、デフォルト値を変更することも可能です。

Persistent Volume (PV) と Persistent Volume Claim (PVC)

コンテナが実行中にデータを保存しても、コンテナが削除されるとそのデータは失われます。これは、コンテナが揮発性のストレージ空間で動作しているためです。
多くの場合、データの損失を防ぐために永続的なストレージが求められます。例えば、データベースコンテナを実行する際に、データベースのエントリーをコンテナの寿命とは独立して保持することは非常に重要です。
Docker と OpenShift Container Platform は、このストレージの問題に対してそれぞれ異なる解決策を提供しています。
  • Docker では、バインドマウント(bind mount) 機能を使用して、コンテナのための永続的なストレージを定義します。バインドマウントには以下の 2 つの方法があります:
    • Docker ホスト上に新しい空のディレクトリを作成し、それをコンテナにマウントする。
    • 既存のディレクトリをコンテナにマウントする(この場合、svirt_sandbox_file_t の SELinux コンテキストを設定する必要があります)。
  • OpenShift Container Platform では、Persistent Volume(PV)Persistent Volume Claim(PVC) を実装し、Pod コンテナに永続的なストレージを提供します。
    • Persistent Volume(PV) は、OpenShift クラスタ全体で使用できるリソースであり、通常は外部のストレージアレイをバックエンドとして使用します。
    • PV は、NFS、iSCSI、Red Hat Gluster Storage、Red Hat Ceph Storage などのさまざまなストレージバックエンドをサポートしています(プラグイン経由で対応)。
    • Persistent Volume Claim(PVC) は、OpenShift のプロジェクト(または Kubernetes の名前空間)内で、ユーザーが PV を利用するために発行するリクエストです。
    • PVC を通じて PV を Pod にバインドすることで、永続的なストレージを利用できます。
    • なお、PV はクラスタ全体のリソースであるため、管理できるのは cluster-admin 権限を持つユーザーのみです。

テンプレートの処理(CLI を使用)

新しいアプリケーションを作成する際には、テンプレートを処理してリソースのリストを生成する必要があります。
テンプレートの処理には oc process コマンドを使用します:
このコマンドは、JSON または YAML 形式のテンプレートを処理し、リソースのリストを標準出力に出力します。
また、現在のプロジェクトや openshift プロジェクトにあるテンプレートを直接処理することも可能です:
注意点
oc process コマンドの出力は、ファイルにリダイレクトして保存することができます:
テンプレートは パラメータを利用して異なる値を生成 できます。パラメータを上書きするには、-p オプションを使用し、<name>=<value> 形式で指定します:
上記のコマンドは、指定されたパラメータを使用してテンプレートを処理し、結果を mysqlProcessed.json に保存します。
次に、この JSON ファイルを使ってアプリケーションを作成できます:
または、ファイルを保存せずに直接処理して適用することも可能です:

openshift プロジェクト内のテンプレートを処理する際の制約

通常のユーザー (regularUser) は、oc process コマンドを使って openshift プロジェクト内のテンプレートを直接処理することはできません:
この場合、以下のエラーが発生します:
解決策:
  1. テンプレートをエクスポートしてローカルファイルとして処理する
  1. openshift// をプレフィックスとして指定する
  1. oc new-app コマンドを使用して、テンプレートから直接アプリケーションを作成する

参考情報

さらに詳しい情報は、以下の OpenShift Container Platform ドキュメントを参照してください。
🔹 アーキテクチャに関する情報
🔹 開発者向けの情報(テンプレートに関する詳細)
 
41- 第9章:OpenShift上でのコンテナ化アプリケーションのデプロイ-8:小テストのラボ43- 第10章:OpenShift でのマルチコンテナアプリケーションのデプロイ-2:テンプレートの演習
Loading...
minami
minami
一个普通的干饭人🍚
Announcement

🎉 ブログへようこそ 🎉

notion image
名前:みなみ独立事務所
性別:男
国籍:China
完全独学だけで基本情報をはじめ31個の資格を仕事をしながら合格。 現在はIT会社の技術担当や、ブログの執筆や学習支援などを手掛けています。 独学で合格できる学習法、勉強法、試験対策を配信します!

📚 主な内容

💻 IT・システム開発
🏠 不動産 × 宅建士
🎓 MBA 学習記録

🔍 コンテンツの探し方

現在、サイトのデザインはシンプルなため、情報がやや探しにくいかもしれません。
気になるテーマを探す際は、タグ検索の利用をおすすめします。