type
status
date
slug
summary
tags
category
icon
password
书籍

ソリューション

アプリケーションのデプロイ

このレビューでは、OpenShiftにマルチコンテナアプリケーションをデプロイし、問題を修正して正常にデプロイされるようにします。

結果

  • ユーザーがプロジェクト内で新しいアプリケーションを作成できるようにします。ユーザーが新しいプロジェクトを作成できるのは、クラスター管理者のみとします。リソース使用量を制限するため、プロジェクトにリソースクォータを適用します。
  • クォータ設定を検証するために、シンプルなSource-to-Image(S2I)ベースのアプリケーションをデプロイします。
  • アプリケーションデプロイ中の問題をトラブルシューティングし、修正します。
  • アプリケーションで使用するMySQLデータベースの永続ストレージを設定します。
  • OpenShiftでテンプレートを使用してマルチコンテナアプリケーションをデプロイします。このテンプレートはWebコンソールからユーザーに提供されます。
  • マルチコンテナアプリケーションで使用するカスタムコンテナイメージをビルドします。

始める前に

もし、マスターと2つのノードを持つOpenShiftクラスタが稼働していない場合は、前のセクションでの「OpenShiftのインストール」に関する包括的なレビューラボのいずれかを完了する必要があります。
以下のコマンドを実行して、このレビューラボを開始する準備が整っているかを確認し、また、このラボに必要なファイルをダウンロードします:
/home/student/DO285/labs/review-deploy フォルダには、このラボで使用するサンプル設定ファイルとスクリプトが含まれています。このフォルダには永続ボリュームなどのリソースのためのサンプルYAMLファイルも提供されています。
OpenShift Container Platformの製品ドキュメントは、ワークステーションホストのデスクトップに提供されています。このドキュメントを参照して、このラボで必要なコマンドを確認してください。

TODOリストアプリケーション構成

TODOリストアプリケーションは、以下の3つのコンテナから成ります:
  • MySQLデータベースコンテナ:TODOリストのタスクに関するデータを保存。
  • Apache httpdウェブサーバーフロントエンドコンテナ(todoui):静的HTML、CSS、およびJavaScriptアセットを提供。ユーザーインターフェイスはAngular.jsフレームワークを使用。
  • Node.jsバックエンドAPIコンテナ(todoapi):RESTfulインターフェイスを提供し、MySQLデータベースと連携してデータを管理。

指示

  1. 管理者ユーザーでのログイン
      • ワークステーションVMから、クラスター管理者ユーザーadminとしてログインし、ユーザーが新しいプロジェクトを作成できないようにします。
  1. 新しいプロジェクトの作成
      • todoappという名前の新しいプロジェクトを作成し、開発者ユーザーにこのプロジェクトへのアクセスを許可します。
      • プロジェクトにクォータを設定します:
        • クォータ名:todoapp-quota
        • ポッドのハードリミットを1に設定します。
  1. 開発者ユーザーでのログインとアプリケーションデプロイ
      • 開発者ユーザーとしてログインし、php-helloworldアプリケーションをデプロイしてクォータ設定を検証します。
      • アプリケーションが正常にデプロイされていることを確認し、デプロイが失敗した場合は問題をトラブルシューティングして修正します。
  1. リソース削除
      • php-helloworldアプリケーションのすべてのリソースを削除しますが、todoappプロジェクトは削除しません。
  1. MySQLデータベース用永続ストレージのプロビジョニング
      • NFS共有を作成し、MySQLデータベースのための永続ボリュームを作成します。
      • NFS共有が複数のクライアントで読み書きできることを確認します。
  1. 永続ボリュームの作成
      • mysqlpvという名前の永続ボリュームを作成します。2GBサイズで、複数のクライアントが同時に読み書きできるアクセスモードに設定します。
  1. OpenShiftテンプレートのインポート
      • nodejs-mysql-template.yamlをOpenShiftにインポートし、WebコンソールでJavaScriptカテゴリに表示されることを確認します。
  1. カスタムコンテナイメージのビルドとプッシュ
      • todouiのDockerfileを使ってイメージをビルドし、プライベートレジストリにプッシュします。
      • OpenShiftでイメージをインポートし、todoapp名前空間にtodouiというイメージストリームが作成されることを確認します。
  1. 新しいアプリケーションの作成
      • 開発者ユーザーとして、インポートしたテンプレートを使ってtodoapiアプリケーションを作成します。必要な値は以下の通りです:
        • アプリケーション名: todoapi
        • GitリポジトリURL: http://services.lab.example.com/todoapi
        • アプリケーションのホスト名: todoapi.apps.lab.example.com
        • MySQLユーザー名: todoapp
        • MySQLパスワード: todoapp
        • データベース名: todoappdb
        • データベース管理者パスワード: redhat
  1. データインポート
      • SQLファイルを使用して、TODOリストのサンプルデータをMySQLデータベースにインポートします。
  1. バックエンドAPIの動作確認
      • curlを使ってhttp://todoapi.apps.lab.example.com/todo/api/hostにアクセスし、APIが正常に動作していることを確認します。
  1. データの取得確認
      • curlを使用して、http://todoapi.apps.lab.example.com/todo/api/itemsにアクセスし、データベースから取得されたTODOアイテムのリストを確認します。
  1. フロントエンドアプリケーションのデプロイ
      • 開発者ユーザーとして、todouiイメージを使って新しいアプリケーションtodouiを作成します。
  1. ルートの作成と動作確認
      • todouiサービスの新しいルートを作成し、todo.apps.lab.example.comを設定します。
      • ブラウザでhttp://todo.apps.lab.example.comを開き、アプリケーションが正しく動作していることを確認します。

このラボの手順に従って、アプリケーションのデプロイと確認を行い、必要な設定を検証してください。

Let’s go

  1. ワークステーションから、クラスター管理者としてログインします。通常のユーザーがOpenShiftで新しいプロジェクトを作成できないように制限します。 1.1. ワークステーションVMでターミナルウィンドウを開き、adminユーザーとしてredhatのパスワードでログインします。
1.2. プロジェクトの作成をクラスター管理者の役割のみに制限します。通常のユーザーは新しいプロジェクトを作成できません。
  1. 新しいプロジェクトを作成し、開発者ユーザーがこのプロジェクトにアクセスできるようにし、リソースクォータを設定します。 2.1. todoappという名前の新しいプロジェクトを作成します:
todoappプロジェクトに開発者ユーザーがアクセスできるようにします。現在のプロジェクトがtodoappであることを確認します:
2.2. ワークステーションVMの/home/student/DO285/labs/review-deploy/set-quotas.shスクリプトを実行して、todoappプロジェクトにクォータを設定します:
  1. php-helloworldアプリケーションをSource-to-Image (S2I) を使ってデプロイし、プロジェクトのクォータ設定が適用されていることを検証します。ソースコードはGitリポジトリhttp://services.lab.example.com/php-helloworldにあります。 3.1. ワークステーションVMで新しいターミナルを開き、developerユーザーとしてredhatのパスワードでOpenShiftにログインします。不正な証明書を承認するように求められた場合、yを入力します:
3.2. helloという名前の新しいアプリケーションを作成します:
3.3. アプリケーションが正常にビルドされたことを確認します:
3.4. アプリケーションが正常にビルドされることを確認しますが、ポッドは作成されていないことを確認します。
  1. php-helloworldアプリケーションがデプロイされない理由をトラブルシュートし、問題を修正します。 4.1. プロジェクトのイベントログを確認します:
イベントログには、アプリケーションが要求したポッドの数が、プロジェクトで許可されているポッド数を超えていることが記録されています。デプロイメント設定の状態を確認します:
CURRENT列が0を示していることに注意してください。
4.2. プロジェクトのクォータ設定を確認します:
コマンドの出力には、ポッド数の上限が1に設定されていることが示されています。この設定では、アプリケーションのビルド、デプロイ、実行には十分ではありません。ステップ2.2でプロジェクトのクォータを設定するスクリプトを実行したことを思い出してください。ワークステーションVMで/home/student/DO285/labs/review-deploy/set-quotas.shファイルを確認すると、クラスター管理者がtodoappプロジェクト用のクォータを設定する際にコマンドに誤字を入力していたことがわかります。ポッド数が1ではなく10であるべきです。
4.3. アプリケーションの既存のデプロイメントをキャンセルします:
4.4. クラスター管理者としてワークステーションVMで以下のコマンドを実行して、クォータ設定を修正します。todoappが現在のアクティブなプロジェクトであることを確認します。コマンドは/home/student/DO285/labs/review-deploy/fix-quotas.shというスクリプトとしても提供されています。
oc edit resourcequota todoapp-quotaコマンドを使用してクォータを変更することもできます。
4.5. ワークステーションで再度OpenShiftの開発者ユーザーに切り替え、ポッド数のクォータが10に増加したことを確認します:
4.6. アプリケーションを再デプロイします:
4.7. プロジェクト内のポッドの状態を確認します:
アプリケーションのデプロイメントが成功し、ポッドがRunning状態であることを確認できます。
4.8. サンプルのS2Iアプリケーションを削除します:
  1. TODOリストアプリケーションのデプロイメントを進めることができます。最初のステップとして、アプリケーションで使用されるMySQLデータベースのために永続ストレージをプロビジョニングします。
5.1. サービスVM上に新しいNFS共有を作成します。 /home/student/DO285/labs/review-deployフォルダにあるconfig-nfs.shスクリプトをサービスVMにコピーして実行します。
5.2. node1とnode2ホストが、OpenShiftマスタVMからNFSでエクスポートされたボリュームにアクセスできることを確認します。 ワークステーションで新しいターミナルウィンドウを開き、node1ホストにログインして、rootユーザーとしてNFS共有にアクセスできることを確認します。
5.3. node1で、ファイルシステムに正しいパーミッションが設定されているかを確認します:
5.4. NFS共有をアンマウントします:
5.5. 同様に、node2 VMにログインして、rootユーザーとしてNFS共有にアクセスできることを確認します:
5.6. node2で、ファイルシステムに正しいパーミッションが設定されているかを確認します:
5.7. NFS共有をアンマウントします:
5.8. MySQLデータベース用の新しいPersistentVolumeを作成します。 ワークステーションVMで/home/student/DO285/labs/review-deploy/todoapi/openshift/mysql-pv.yamlにあるYAMLリソースファイルを編集します。ラボの指示に従って属性を変更し、最終的な内容が次のようになるようにします:
5.9. OpenShiftにクラスター管理者ユーザーとしてログインし、提供されたYAMLリソース定義ファイルを使用してPersistentVolumeを作成します:
5.10. PersistentVolumeがプロジェクトによって要求される準備が整ったことを確認します:
  1. OpenShiftにnodejs-mysql-persistentテンプレートをインポートします。 todoapimysqlポッド、およびそれらに関連するサービスを組み合わせたOpenShiftテンプレートがワークステーションVMの/home/student/DO285/labs/review-deploy/todoapi/openshift/nodejs-mysql-template.yamlファイルに提供されています。
6.1. テンプレートファイルの内容を簡単に確認します。ファイルを編集したり変更を加えたりしないでください。
6.2. テンプレートをopenshift名前空間にインポートして、ユーザーがアプリケーションを作成できるようにします:
  1. ワークステーションVMでtodoui Dockerイメージをビルドし、タグを付けてワークステーションのプライベートレジストリにプッシュします。 todouiアプリケーションのDockerfileとその関連ビルドアーティファクトは、ワークステーションVMの/home/student/DO285/labs/review-deploy/todoui/フォルダにあります。提供されたDockerfileを簡単に確認します。
7.1. 提供されたbuild.shスクリプトを実行して、ワークステーションVMでtodoui Dockerイメージをビルドします:
7.2. 新しくビルドされたtodoui Dockerイメージにタグを付けます:
7.3. 新しくタグ付けされたtodoui DockerイメージをサービスVM上のクラスルームプライベートDockerレジストリにプッシュします:
  1. OpenShiftにtodoui Dockerイメージをインポートし、イメージストリームが作成されたことを確認します。
8.1. ワークステーションからtodoui Dockerイメージをプライベートレジストリからインポートします:
インポートは正常に完了しました。
8.2. todouiイメージストリームが作成されたことを確認します:
8.3. todouiイメージストリームを詳細に確認し、最新のtodoui Dockerイメージが参照されていることを確認します:
  1. OpenShiftウェブコンソールを使用して、nodejs-mysql-persistentテンプレートを使って新しいアプリケーションを作成します。
9.1. ワークステーションのVMからウェブブラウザを開き、OpenShiftウェブコンソール(https://master.lab.example.com)
にdeveloperユーザーとしてログインします。todoappという名前の単一のプロジェクトが表示されていることを確認します。必要に応じて自己署名証明書を受け入れる例外を作成します。
9.2. todoappをクリックし、「プロジェクトに追加」をクリックします。その後、「カタログを参照」をクリックします。カタログ参照ページで、「言語」から「JavaScript」をクリックし、JavaScriptベースのテンプレートのリストを表示します。Node.js + MySQL (Persistent)というテンプレートが表示されるはずです。
notion image
注意
このラボのテスト中、時々テンプレートがdeveloperユーザーには表示されないことがありました。その場合、adminユーザーとしてログインして再試行してください。以下のラボのステップはadminとして進めても安全です。
9.3. Node.js + MySQL (Persistent)テンプレートを選択し、次の値を使用して新しいアプリケーション「todoapi」を作成します:
パラメータ
名前
todoapi
GitリポジトリURL
アプリケーションホスト名
todoapi.apps.lab.example.com
MySQLユーザー名
todoapp
MySQLパスワード
todoapp
データベース名
todoappdb
データベース管理者パスワード
redhat
notion image
「次へ」をクリックします。バインディングページの値は無視して、「作成」をクリックします。確認ページが表示されたら、「閉じる」をクリックします。
9.4. 「概要」リンクをクリックして、アプリケーションがビルドされてデプロイされていることを確認します。
  1. TODOリストアプリケーションのSQLデータをMySQLデータベースにインポートし、todoapiバックエンドサービスのAPIが正常に動作していることを確認します。
10.1. ワークステーションのVMから新しいターミナルを開き、OpenShiftにdeveloperとしてログインします。単一のプロジェクト「todoapp」にアクセスできることを確認します。
10.2. TODOリストアプリケーションのサンプルデータがワークステーションのVM上にある「/home/student/DO285/labs/review-deploy/todoapi/sql/db.sql」ファイルに提供されています。「oc port-forward」コマンドを使用してMySQLデータベースのPodに直接接続します。データベースPodの名前は「oc get pods」コマンドで確認できます:
このコマンドはシェルのプロンプトに戻りません。ターミナルウィンドウをそのままにしておき、新しいターミナルウィンドウを開いて次のステップを実行します。
10.3. db.sqlファイルのSQLデータをtodoappdbデータベースにインポートします。「/home/student/DO285/labs/review-deploy/todoapi/sql/import-data.sh」スクリプトを実行してデータをインポートします。スクリプトが正常に実行されると、データベースにインポートされたレコードのリストが表示されます:
notion image
10.6. oc port-forwardコマンドを実行しているターミナルウィンドウで、Ctrl+Cを押してポートフォワーディングを停止します。
  1. todouiイメージストリームを使用して新しいアプリケーションを作成します。
11.1. todouiイメージストリームに基づいて、新しいアプリケーション「todoui」を作成します:
11.2. プロジェクト内のPodの状態を確認します:
OpenShiftウェブコンソールでは、プロジェクトの「概要」ページに新しいtodoui Podが表示されているはずです。
  1. todouiアプリケーションのルートを作成します。
12.1. サービスを外部ユーザーに公開します:
出力:
12.2. ルートから提供されるURLを使って、todouiアプリケーションにアクセスします:
出力例:
  1. 最後に、ワークステーションVMのブラウザを使用して、TODOリストアプリケーションのホームページ(http://todo.apps.lab.example.com)にアクセスします。データベースに保存されたアイテムのリストが表示されるはずです。タスクを追加、編集、削除して、アプリケーションが正しく動作していることを確認してください。
notion image
注意
最初にデータベースからロードされた最初の2つのタスクは削除しないでください。これらは、ラボが正しく完了したかどうかを確認するために採点スクリプトで使用されます。
評価を行うには、次のコマンドを実行します:
notion image
コマンドを実行した後、全体的なPASS評価が表示されない場合は、作業を再確認して、再度評価コマンドを実行してください。
相关文章
RedHat EX200 本番近い試験問題集
Lazy loaded image
RedHat EX200 本番試験問題集(有料版)
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
78- 第16章:OpenShiftの管理と監視-8:ウェブコンソールでリソースの監視の演習
Lazy loaded image
RHCSA 考前辅导课件81- 第17章:導入総復習-2:docker,KubernetesおよびOpenShiftのラボ
Loading...
みなみ
みなみ
一个普通的干饭人🍚
最新发布
35条書面-64問-1
2025年6月13日
TOKYO自習島
2025年6月10日
平成26年秋期 午後問1
2025年6月6日
令和5年秋期 午後問1
2025年6月6日
令和2年秋期 午後問1
2025年6月6日
業務上の規制-87問-1
2025年6月4日
公告

🎉 欢迎访问我的博客 🎉

🙏 感谢您的支持 🙏

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

📚 主要内容

💻 IT・系统与开发

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

🏠 不动产 × 宅建士

  • 宅建士考试笔记

🎓 MBA 学习笔记

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

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

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