OpenShift入門~S2Iを使ったアプリのデプロイ~

9ea422a61c1a69c888786830eee3dbe6?s=47 osonoi
October 06, 2020

 OpenShift入門~S2Iを使ったアプリのデプロイ~

9ea422a61c1a69c888786830eee3dbe6?s=128

osonoi

October 06, 2020
Tweet

Transcript

  1. IBM Developer Dojo OpenShift入門~S2Iを使ったアプリのデプロイ~ Developer Advocate Yasushi Osonoi

  2. 出席の確認にこちらからログインしてください。 IBM Cloud へのアクセスは上記URLから行ってください https://ibm.biz/BdqJzB • IBM Cloud ログイン アカウントをすでにお持ちの方は、

    こちらからログインしてください • IBM Cloud ライトアカウント作成 アカウントをお持ちでない方は、 ご登録をお願いします 【本⽇のお願い】
  3. 質問&ライブ投票参加 はこちら slido.com #dojo1007 質問タブで質問⼊⼒ ⾃分も知りたい質問には 「いいね」をプッシュ! 絵⽂字は表⽰されません スマホでアクセスして ぜひ参加お願いします︕

    https://app.sli.do/event/wfxu6nnj
  4. 1. IBM Cloud ライトアカウントの登録 https://ibm.biz/BdqvrE まだの場合はこちらから登録をお願いします。 2. GitHubへのログイン https://github.com/ (無料で登録できます)

    事前準備の確認(ハンズオンを試す場合)
  5. 本日のハンズオン内容 GitHub:下のソースファイル 参加者の皆様のGitHub Fork S2I Deploy 自動Deploy Webhook ソースコードに 変更を加える

    ① ② ③ 最初のアプリ画面 修正後のアプリ画面 ④ ⑤ ⑤
  6. 本⽇のタイムテーブル 14:00-14:05 (5min) オープニング 資料ダウンロード,出席登録など 14:05-15:00 (55min) コンテナ、OpenShift概要説明 ハンズオン 15:00-15:15

    (15min) Q&A Q
  7. 1. コンテナとは? https://developer.ibm.com/jp/new-builders/containerization/

  8. 「仮想マシン(VM)」と「コンテナ」 コンテナは仮想マシン(VM)に⽐べてリソース効率がよい スケールアウトが簡単

  9. コンテナを使った開発の流れ Dockerfileなど Docker イメージなど コンテナー レジストリ マニフェストで コンテナ⾃体の 詳細を記述 開発者

    コンテナー イメージ作成 イメージの 登録 開発者 アプリ実⾏ アプリ開発 3段階のプロセス
  10. コンテナのまとめ • 仮想マシン(VM)に⽐べてリソース効率がよい • ボータビリティーが⾼い • スケールアウトが容易 • 3段階のプロセスをコンテナのpushに使⽤することで、より アジャイルなDevOpsと継続的インテグレーションおよびデ

    リバリーが可能になる 動画を⾒たい⽅はこちら: • https://developer.ibm.com/jp/new-builders/containerization/ ⽂章での説明もあります
  11. 2. OpenShift(Kubernetes)とは https://developer.ibm.com/jp/new-builders/kubernetes/

  12. Kubernetesとは 12 コンテナーの運⽤実⾏と管理を⾏うオーケストレーションツール • コンテナーが⼤量になってくると管理しきれない部分をカバー • 複数のDockerホストの管理 • 死活監視 •

    スケジューリング • スケーリング • 障害時のリカバリー • アプリ実⾏に必要なインフラリソースを管理 • 永続的なストレージ • ネットワーク • クレデンシャル情報 etc… • 宣⾔的設定モデル • 「あるべき状態」を記述すると、それを実現し続けようとしてくれる • 障害時も⾃動で復旧作業を実施
  13. Kubernetesの代表的な機能 スケールアウト 負荷分散 バージョン管理 (ロールアウト) ネットワーク管理 永続ストレージ管理 死活監視 ⾃⼰復旧 CPU

    / Memory リソース管理
  14. Kubernetesで覚えておきたい概念 Pod Kubernetes における最⼩の管理単位 - Podの中には 1つ以上 の コンテナが含まれる -

    Pod単位でスケールイン・スケールアウトする - PodごとにIPアドレスがアサインされる Pod IP 10.1.206.34 10.1.206.128
  15. Kubernetesで覚えておきたい概念 Deployment Podを管理するための定義 - Podのアップデート、履歴 - Podの必要稼働数を定義(ReplicaSet) - K8Sの Scheduler

    がどのノードにアサイン するかは考慮してくれる Pod IP 10.1.206.34 10.1.206.110 ノード ノード ReplicaSet - 必要数2 - 現⾏ 2
  16. Kubernetesで覚えておきたい概念 Service Kubernetes外から TCP/IPでアク セスするための定義 - K8Sクラスタ内で⼀意となるポートがアサイン される - K8Sクラスタのどのノードからアクセスしても

    - 当該サービスにルーティングされる Pod IP 10.1.206.34 10.1.206.110 ノード ノード 30010 30010
  17. コンテナーのオーケストレーション・ツール 理想状態を宣⾔すると、その状態を維持しようとする 3つの主要コンポーネント Pod Deployment Service Kubernetesのまとめ PodはDeploymentによって作成され、管理されます。 Deploymentによって作成されたPodへのアクセスは、 Serviceを使⽤することで容易になります。

  18. © 2019 IBM Corporation OpenShiftは、Kubernetesとの互換性を維持しながら、CICD機能を強化、開発者 に代わって、ビルド、リポジトリ登録、デプロイを自動実行します。 OPENSHIFT 機能拡張 OpenShift CICD利⽤

    アプリケーション (コンテナ) Kubernetes アプリケーション (コンテナ) Ubuntu / CentOS… Linux Kubernetes アプリケーション (コンテナ) コンテナ ランタイム Linux OS コンテナ オーケストレーション Kubernetesの標準機能 で構築したアプリケーション どちらでも 動作可能 RHEL / RHCOS コンテナ ランタイム OpenShiftとは
  19. Projects vs. Products Production-Grade Open Source Project quarterly minor releases,

    no Long Term Support community support platform certification: (AKS, EKS, GKE, IKS) core framework / limited security platform or user responsible to integrate beyond core Production-Grade Open Source based Product quarterly releases, support for major release 3+ years enterprise support ecosystem certification: platform and app containers k8s core plus abstractions / dashboard / security opinions and integration of common features
  20. © 2019 IBM Corporation お時間あったら後で見てください https://www.youtube.com/watch?v=qdwyPEHaUn8

  21. Red Hat OpenShift on IBM Cloud IBM Cloud™上のRedHat®OpenShift®は、高度にスケーラブルで信頼性の高いIBM Cloudプラットフォームで完全に管理されたOpenShiftクラスターを提供する包括的な サービスです。

    The WeatherCompany®で毎日2,500億のオンデマンド予測を維持す るKubernetesサービスに直接統合されています。
  22. ハンズオンワークショップ 3 OpenShift ワークショップ

  23. K8s Deploy Dockerhub等 Build docker レジストリ Dockerfile ソースコード (Java, js,

    Py..etc) Catalog template (JSON/YAML) s2i Build lOpenShiftへの⼊⼒は様々なパターンがあります OpenShiftへの様々な⼊⼒のパターン Github等 file clipboard (folder) 【Dockerfile,ソース,Templateの置き場所】 公開されているイメージをそのまま取り込む ⾃作イメージを取り込む (OpenShift上でBuild) 既存イメージにソースを注⼊ 直接実⾏ カタログに登録 DevOps Pipeline アプリやミドルウエアといった直接的なソースではなく、 アプリやミドルウエアをOpenShift上どう動かすか、と いう構成/定義類を雛型として記述したものです
  24. Github上にあるコードからアプリをOpenShift上にDeployします。 K8s Deploy Dockerhub等 Build docker レジストリ Dockerfile ソースコード (Node.js)

    Catalog template (JSON/YAML) S2I Build (OpenShift上でBuild) DevOps Pipeline アプリやミドルウエアといった直接的なソー スではなく、アプリやミドルウエアを OpenShift上どう動かすか、という構成/定義 類を雛型として記述したものです 今回のハンズオンで使うS2Iとは Github等
  25. 操作の流れ 1. OpenShift環境の準備 2. ソースコードのFork 3. アプリのDeploy 4. Webhookの設定 5.

    ソースコードの修正及びDeploy(⾃動)
  26. 1. OpenShift環境の準備 (ワークショップ⽤のIBM Cloud環境にご⾃⾝のIBM Cloud IDを関連付ける) 注意事項 ・ブラウザはFirefox, Chromeをご利⽤ください ・本ワークショップ⽤のIBM

    Cloud環境はセミナー開催時から 24時間限定でお使いいただけます ・ローカルでOpenShiftを検証する環境を構築されたい場合は、 Appendix. Minishiftをご利⽤ください
  27. 1.1: 下記URLにFirefoxブラウザでアクセスする https://openshiftdojo.mybluemix.net/ 1.2: [Lab Key] 、[Your IBMid]にご⾃⾝のIDを ⼊⼒し、チェックボックスにチェックを⼊れて [Submit]をクリックする

    Lab Keyは oslab です。 oslab
  28. 1.3: Congratulations! が表⽰されたら [1. Log in IBM Cloud] リンクをクリックする

  29. 1.5: IBM Cloudダッシュボードの右上のアカウント情報の 右横の v をクリックする 1.6:[1840867 – Advowork] をクリックする

  30. 1.7: IBM Cloudダッシュボードの右上のアカウント情報が 変更されたことを確認し、[リソースの要約]の [Clusters]をクリックする

  31. 1.8: Clustersの下のクラスター名をクリックする ※本ワークショップではこちらのクラスタを使⽤します ※クラスター名は⾃動的に割り当てられます クリック

  32. 1.9: [OpenShift Webコンソール]ボタンをクリックします。

  33. OpenShift Webコンソールの画面です。ここで操作を行います。

  34. 2. ソースコードのFork GitHubにサインイン(Sign in)してください まだ登録されていない方は サインアップ(Sign up)

  35. ブラウザーで https://github.com/osonoi/node-build-config-openshift を開いてください Forkをクリックしてください

  36. ご自分のGit リポジトリー にソースコードが入りました。 ご自分のアカウント名に なっているはずです。 URLをクリップボードにコピーしてください

  37. 3.アプリのDeploy OpenShiftの画面に戻ってください

  38. 3.アプリのDeploy Projectを作成してください。Projectの名前は任意でつけてください。ここでは dojo ① ② ③

  39. 左上のメニューを AdministratorからDeveloperに変更。”From Git”をクリックしてくださ い。 ① ②

  40. 先ほどコピーしたGitHubのご自分のソースコードのURLをGit Repo URL に入力。下 の”Show Advanced Git Option”をクリック、”Content Dir”に/site と入力してください。

    ① ② ③
  41. 先ほどコピーしたGitHubのご自分のソースコードのURLをGit Repo URL に入力。下 の”Show Advanced Git Option”をクリック、”Content Dir”に/site と入力してください。

  42. アプリのDeployが始まります。 1分弱お待ちください。中の丸が青くなったら完成です。丸の中をクリックすると右側にメ ニューが出てくるのでRoutesの下のURLをクリックしてください。 ① ②

  43. アプリは個人の医療関連のデータを管理するものです。 ID, Passwordともにtest と入れてください。

  44. 4. Webhookの設定 OpenShiftの画面に戻ってください

  45. OpenShiftの画面に戻ってください 下にスクロールして一番右の”Copy URL with Secret”をクリックしてWebhookのURLとSecretをクリップボード にコピーしてください。

  46. GitHubの画面に戻ってください。”Settings” à “Webhooks”--> “Add webhook” と洗濯してください。 ① ② ③

  47. 先ほどクリップボードにコピーしたURL+secretを “Payload URL”に貼り付けてください。そしてControl type を”application/json”にしてください。

  48. 入力すると下の様に緑のチェックマークがつきます。 これでwebhookの設定は完了です。後はソースコードの修正で自動的にアプリがDeployされます。

  49. 5.ソースコードの修正及びDeploy(⾃動) GitHubの画面に戻ってください。”Site”を選択

  50. ”public”を選択 ”index.html”を選択 ペンのアイコンで編集画面になります。

  51. 23行目のExample Healthを日本語に変えてみましょう OpenShiftの画面でTopologyを見るともう一度 Deployしているのがわかります。 コミットを忘れずに!

  52. 変更できました︕ OpenShiftの画面に戻ってください

  53. 6.その他のアプリ PHP https://github.com/osonoi/php-s2i-openshift

  54. アプリケーションの全体像 https://github.com/IBM/example-health-jee-openshift

  55. こちらも試してみてください https://github.com/osonoi/watson-vr-node-e

  56. 1. OpenShift環境の準備 (ワークショップ⽤のIBM Cloud環境にご⾃⾝のIBM Cloud IDを関連付ける) 注意事項 ・ブラウザはFirefox, Chromeをご利⽤ください ・本ワークショップ⽤のIBM

    Cloud環境はセミナー開催時から 24時間限定でお使いいただけます ・ローカルでOpenShiftを検証する環境を構築されたい場合は、 Appendix. Minishiftをご利⽤ください
  57. IBM Demosサイトでの実⾏⽅法 いつでも使える無料のトレーニングサイト https://www.ibm.com/demos/

  58. ログイン後下にスクロールして“Red Hat OpenShift on IBM Cloud”を選択

  59. Hands on Labs for RedHat OpenShift on IBM Cloudを選択 (下にスクロールしていくと⾒れます)

  60. Launch Labを選択

  61. IBM CloudのIDでsign inログインしてください

  62. 右側のコマンド画⾯でOpenShift CLIの操作ができます。

  63. Exercise 2, Deplying an applicationを選択 リンクをクリックしてください

  64. OpenShift のコンソール画⾯が開いて操作ができるようになります。

  65. アカウントに関するお問い合わせなどはこちらに https://www.ibm.com/jp-ja/cloud/support 65

  66. http://ibm.biz/dojo1007

  67. 免責事項 67 IBM Dojoは、開発者の⽅を対象に、IBM Cloudを主とした技術情報をお伝えする⽬的で開催して います。講師や運営スタッフにより、開催毎に最適と判断した内容でお届けしています。 現在、ハンズオンを伴う講義はお客様の費⽤負担がない環境と⼿順でご案内しています。 講義終了後、想定外の費⽤が発⽣しないよう、不要になりました制作物はお客様ご⾃⾝で削除を お願いいたします。講師陣はみなさまの利⽤状況を確認することはできません。 ご理解とご協⼒をお願いいたします。

    削除⽅法については講義内にご案内いたします。 ご不安な点がございましたら、当⽇確認をお願いいたします。 講義終了後のご請求のお問い合わせにつきましては、弊社サポートセンターまで、次のいづれか の⽅法でお問い合わせください。 IBM Cloudダッシュボードの「サポート」メニューから「Case」を作成してください IBM Cloudサポートセンター「相談する」ボタンからチャットまたは電話でご連絡ください https://www.ibm.com/jp-ja/cloud/support ご参加ありがとうございました。
  68. None