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 ドキュメントを参照してください。
🔹 アーキテクチャに関する情報
🔹 開発者向けの情報(テンプレートに関する詳細)
 
相关文章
RedHat EX200 本番近い試験問題集
Lazy loaded image
RedHat EX200 本番試験問題集(有料版)
Lazy loaded image
82- 第17章:導入総復習-3:OpenShiftにマルチコンテナデプロイのラボ
Lazy loaded image
81- 第17章:導入総復習-2:docker,KubernetesおよびOpenShiftのラボ
Lazy loaded image
80- 第17章:導入総復習-1:総合レビュー
Lazy loaded image
79- 第16章:OpenShiftの管理と監視-8:ラボ
Lazy loaded image
43- 第10章:OpenShift でのマルチコンテナアプリケーションのデプロイ-2:テンプレートの演習41- 第9章:OpenShift上でのコンテナ化アプリケーションのデプロイ-8:小テストのラボ
Loading...
みなみ
みなみ
一个普通的干饭人🍚
最新发布
TOKYO自習島
2025-5-8
営業保証金-21問
2025-5-6
平成26年秋期 午後問1
2025-5-6
令和5年秋期 午後問1
2025-5-3
令和2年秋期 午後問1
2025-5-2
第1回:オリエンテーション/意思決定と会計情報
2025-4-30
公告

🎉 欢迎访问我的博客 🎉

🙏 感谢您的支持 🙏

📅 本站自 2024年9月1日 建立,致力于分享在 IT・MBA・不动产中介 等领域的学习与实践,并推动 学习会 的自主开展。
📖 博客语言使用比例
🇯🇵 日语 90% 🇨🇳 中文 8% 🇬🇧 英语 2%

📚 主要内容

💻 IT・系统与开发

  • 系统管理:Red Hat 等
  • 容器与编排:Kubernetes、OpenShift
  • 云计算:AWS、IBM Cloud
  • AI 入门:人工智能基础与实践
  • 技术笔记与考证经验

🏠 不动产 × 宅建士

  • 宅建士考试笔记

🎓 MBA 学习笔记

  • 管理学、经济学、财务分析等

🔍 快速查找内容(标签分类)

由于网站目前没有专门的设计,可能会导致查找信息不便。为了更快找到你感兴趣的内容,推荐使用以下标签功能 进行搜索!
📌 定期更新,欢迎常来看看!
📬 有任何建议或想法,也欢迎留言交流!