OpenShift入門~Watsonを使ったWebアプリを試そう~

9ea422a61c1a69c888786830eee3dbe6?s=47 osonoi
June 15, 2020
320

 OpenShift入門~Watsonを使ったWebアプリを試そう~

9ea422a61c1a69c888786830eee3dbe6?s=128

osonoi

June 15, 2020
Tweet

Transcript

  1. IBM Extra Dojo #3 OpenShift入門~Watsonを使ったWebアプリを試そう~ Developer Advocate Yasushi Osonoi

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

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

    https://app.sli.do/event/ue7xq8gk
  4. 1. IBM Cloud ライトアカウントの登録 https://ibm.biz/BdqvrE まだの場合はこちらから登録をお願いします。 2. IBM DEMOサイトへのログイン https://www.ibm.com/demos/

    (IBM Cloudのアカウントでログインできます) 事前準備の確認(ハンズオンを試す場合)
  5. https://www.ibm.com/demos/ 無料でいつでも使えるOpenShift環境(ただし4時間限定) https://cloud.ibm.com/ 無料のライトアカウント API Node.jsアプリ on OpenShift

  6. 新しい取り組み“バッジ取得プログラム”のご案内 IBM Cloud & AI develop Basic Online Developer Dojo

    ” IBM Cloud & AI develop Basic Online Developer badge“について - 2020年6⽉1⽇より開始のIBM Developer Dojo 12回シリーズと同様の内容のIBM Developer Dojoのクラスが対象 https://www.ibm.com/jp-ja/partnerworld/events/developer-dojo - スキルアップのため全クラスの受講をお奨めします。 - 12回のクラスのうちPAYGアカウントまたはサブスクリプションが必要としない8つのクラスの課題を実施 - 8クラスのうち5クラスの課題について指定された結果を⾃分のアカウントが⾒えるようにスクリーンショットを撮影 - 5クラス分の課題のスクリーンショットをPDFにして以下の宛先に送付 - 提出した課題が承認されるとAcclaimからバッジが発⾏されます。 ※バッジ発⾏のためにこれ以外の処理が発⽣する場合、別途ご連絡させていただきます 2020年6⽉1⽇ お問い合わせは、Online Developer Dojo バッジ事務局 (ビジネス・パートナープログラム ヘルプデスク pprogram@jp.ibm.com )
  7. 本⽇のタイムテーブル 14:00-14:05 (5min) オープニング 資料ダウンロード,出席登録など 14:05-15:00 (55min) コンテナ、OpenShift概要説明 ハンズオン説明 15:00-15:15

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

  9. コンテナ以前の様⼦ コンテナ⾰命以前の港湾荷役 http://military.wikia.com/wiki/Battle_of_Pusan_Perimeter_logistics ⼤勢の作業員 倉庫に⼀時保管 物流の最⼤の ボトルネック

  10. https://www.jsanet.or.jp/seminar/text/seminar_177.html 物流コンテナによる⾰命 コンテナの発明者は、全⽶有数のトラック 運送会社のオーナーとなったマルコム・ マクリーン(Malcom P. McLean) 国際貨物輸送の分野に 海陸⼀貫輸送という⼤変⾰ 1970年代には世界の主要航路のコンテナ

    化がほぼ完了した。わずか10年程度でこれ ほど急激な形態の変化が起こったのは海運 史上でも他に例がない。 https://en.wikipedia.org/wiki/Malcom_McLean
  11. 港湾荷役のボトルネックを解消 物流コストの削減とスピードアップ コンテナ⾰命は業務改⾰ 陸海⼀貫輸送 海上輸送 陸送(トラック) 陸送(鉄道) 港湾荷役 港湾荷役 コンテナ船

  12. いま、IT業界の コンテナ⾰命が 始まる

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

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

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

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

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

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

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

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

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

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

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

    アプリケーション (コンテナ) Kubernetes アプリケーション (コンテナ) Ubuntu / CentOS… Linux Kubernetes アプリケーション (コンテナ) コンテナ ランタイム Linux OS コンテナ オーケストレーション Kubernetesの標準機能 で構築したアプリケーション どちらでも 動作可能 RHEL / RHCOS コンテナ ランタイム OpenShiftとは
  24. 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
  25. © 2019 IBM Corporation お時間あったら後で見てください https://www.youtube.com/watch?v=qdwyPEHaUn8

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

    The WeatherCompany®で毎日2,500億のオンデマンド予測を維持す るKubernetesサービスに直接統合されています。
  27. 質問&ライブ投票参加 はこちら slido.com #dojo615 質問タブで質問⼊⼒ ⾃分も知りたい質問には 「いいね」をプッシュ! 絵⽂字は表⽰されません スマホでアクセスして ぜひ参加お願いします︕

    https://app.sli.do/event/ue7xq8gk
  28. ハンズオンワークショップ 3 OpenShift ワークショップ

  29. 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上どう動かすか、と いう構成/定義類を雛型として記述したものです
  30. 今回はGithub上にあるコードからアプリをOpenShift上にDeployします。① このアプリはIBM Cloud のWatson Visual Recognition(画像認識)を利⽤しています。② K8s Deploy Dockerhub等 Build

    docker レジストリ Dockerfile ソースコード (Node.js) Catalog template (JSON/YAML) S2I Build (OpenShift上でBuild) DevOps Pipeline アプリやミドルウエアといった直接的なソー スではなく、アプリやミドルウエアを OpenShift上どう動かすか、という構成/定義 類を雛型として記述したものです 今回のハンズオンで⾏うこと Github等 Visual Recognition (画像認識) API ① ②
  31. 3. OpenShift ワークショップ IBM Watson Visual Recognitionを使った node.jsの画像認識Webアプリ をOpenShift on

    IBM Cloudで実⾏する 【ワークショップ完了後のアプリ画⾯イメージ】 https://github.com/kyokonishito/watson- vr-node ソースはこちら︓
  32. 今回使⽤するIBM Watson API – Visual Recognition 2019年3⽉現在 Watson Assistant アプリケーションに⾃然⾔語インターフェースを追加して

    エンドユーザとのやり取りを⾃動化 Text to Speech テキスト⽂章を⾳声に変換する Speech to Text ⾳声をテキスト⽂章に変換する Visual Recognition 画像コンテンツに含まれる意味を検出する Discovery 先進的な洞察エンジンを利⽤して、デー タの隠れた価値を解明し、回答やトレン ドを発⾒する Discovery News Discovery上に実装され、エンリッチ情報 も付加されたニュースに関する公開デー タセット Personality Insights テキストから筆者の性格を推定する Language Translator テキストを他⾔語へ翻訳を⾏う Natural Language Understanding ⾃然⾔語処理を通じてキーワード抽出、エン ティティー抽出、概念タグ付け、関係抽出な どを⾏う Natural Language Classifier テキスト⽂章の分類を⾏う(質問の意図推定など) Tone Analyzer(⽇本語未対応) テキストから筆者の感情、社交性、⽂体を解析 Knowledge Studio コーディングなしに、業務知識から⽣成した 機械学習モデルで、⾮構造テキストデータか ら洞察を取得(学習⽀援ツール) ⼼理系 ⾔語系 照会応答系 知識探索系 ⾳声系 画像系 https://www.ibm.com/watson/jp-ja/developercloud/services-catalog.html
  33. Watson Visual Recognition (画像認識) 画像認識「⼀般種別」(General Tagging): • 事前学習済みの分類器の出⼒を返す 画像認識「カスタム」: •

    識別を⾏いたいクラスのイメージを事前学習させ、 その分類器の出⼒を返す 事前学習 不要 事前学習 必要 https://www.ibm.com/watson/jp-ja/developercloud/visual-recognition.html 画像に写った物体・情景など様々なものを分析・認識するAIサービス
  34. 操作の流れ 1. デモサイトの準備 2. Visual Recognitionサービスの作成 3. OpenShiftアプリの作成

  35. 1.デモサイトの準備 https://www.ibm.com/demos/

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

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

  38. Hands on Labs for RedHat OpenShift on IBM Cloudを選択

  39. Launch Labを選択

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

  41. OpenShiftへのログイン:下にスクロールし て”Launch the OpenShift web console”をクリック

  42. 右上の”Copy Login Command”をクリック

  43. ログインコマンドをコピー

  44. 先ほどの画⾯でコマンドを貼り付け

  45. 2. Visual Recognitionサービスの作成 Visual Recognitionを新規に作成する⽅は次のページに進んでください。 既に以前に作成済みの⽅は、作成済みのものが使⽤できます。 作成済みの⽅は以下の⼿順を参照しVisual Recognitionの管理の画⾯を表⽰後、 http://ibm.biz/watson-service-screen 当資料「4.

    Visual Recognitionサービスibm-credentials.env のダウンロード」まで進んでく ださい。 ブラウザー上で、新しいタブを開きます。 https://cloud.ibm.com/ にアクセスして、ダッシュボードを開きます。 XXXXXXX – IBM ではなく⾃分のアカウントになっていることを確認し、異なっ ている場合はクリックして変更します
  46. 2.1 上部のメニューにある「カタログ」をクリックします 次に左側のメニューから“サービス”を選択してください。

  47. 2.2 Visual Recognitionサービスの選択 1. 左側のメニューから「AI」をクリック 2. 下にスクロールして表⽰された「Visual Recognition」をクリック

  48. 地域の選択は「ダラス」、価格プランに「ライト」が選択されていることを確認して、 「作成」をクリック 2.3 Visual Recognitionサービスを作成する

  49. 2.4 Visual Recognitionサービスを作成確認、管理画⾯の表⽰ 下の画⾯が出たら、作成完了です。 左のメニューから「管理」をクリックして次に進んでください。

  50. 2.5. Visual Recognitionサービス API鍵をコピー(クリップボードに)してください。

  51. 3.1. プロジェクトを作成する oc new-project watson-vr --display-name="watson-vr" -- description="Sample Watson Visual

    Recognition Node.js app" ターミナルに下記コマンドを⼊⼒し、新しいアプリケーション⽤に新しい プロジェクトを作成します。 3. Openshift アプリの作成 出⼒例: コマンドは以下からコピペできます。 (https://bit.ly/oc0615IBM)
  52. 3.2. アプリケーションの作成 ターミナルに下記のコマンドを⼊⼒し、 githubのソースコードから、アプ リケーションを作成します。 oc new-app https://github.com/kyokonishito/watson-vr-node.git -e CLASSIFIER_ID=food

    -e WATSON_VISION_COMBINED_APIKEY=<APIKEY> <APIKEY>に先ほどコピーしたAPI鍵を入れてください。<>は削除 してください
  53. 3.2. アプリケーションの作成 出⼒例:

  54. 3.3 ビルドログを表⽰します oc logs -f bc/watson-vr-node ターミナルに下記のコマンドを⼊⼒しビルドログを表⽰し、 「 Push successful

    」で終わるまで待ちます。 3.4 ロードバランサーのサービスを作成します oc expose dc watson-vr-node --port=3000 --type=LoadBalancer -- name=watson-vr-node-ingress ターミナルに下記のコマンドを⼊⼒し実⾏します。 (コマンドは1⾏です。コマンドは以下からコピペできます。 (https://bit.ly/occommand0615)
  55. 3.5. ロードバランサーのサービスを公開します oc expose service watson-vr-node-ingress ターミナルに下記のコマンドを⼊⼒し実⾏します。 これで完了です!ターミナルに下記のコマンドを⼊⼒し実⾏し、その結果を 参照して、OpenShift で実⾏されているアプリケーションにアクセスでき

    ます。 oc get route/watson-vr-node-ingress NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD watson-vr-node-ingress watson-vr-node-ingress-watson-vr.openshifttokyo17-0e3e0ef4c9c6d831e8aa6fe01f33bfc4-0002.jp- tok.containers.appdomain.cloud watson-vr-node-ingress 3000 None 以下のような出⼒があった場合は、 watson-vr-node-ingress-watson-vr.openshifttokyo17-0e3e0ef4c9c6d831e8aa6fe01f33bfc4-0002.jp- tok.containers.appdomain.cloud にブラウザでアクセスします。
  56. 3.6 ブラウザーでアプリケーションにアクセスします アプリケーションは表⽰できましたか? ボタンを押して動作確認してみましょう! 「ファイルの選択」から写真を選んだ後、各⻘ボタンを クリックして、Visual Recognitionの結果を確認します。 • Watsonで認識(Watson学習済みモデルを利⽤): •

    Watsonが写真を認識した内容を表⽰します。 • Watsonで認識(カスタムモデルを利⽤): • IBM提供の⾷品に特化したカスタムモデルFoodで認識し たクラスを表⽰します。 ※スマートフォンでの確認 ⼀番下にQRコードが表⽰されているので、それをスマートフォ ンのカメラで読んでアプリケーションのURLにアクセすると、ス マートフォンでも結果を確認できます。 スマートフォンでは「ファイルの選択」ボタンでその場で撮った 写真も認識可能です。
  57. [オプション] ブラウザーでOpenShift Web Consoleに アクセスして作成したアプリを確認 1/2(1.10で開いたWeb画⾯ です) ←Projectsをクリック 下にスクロールすると watson-vr

    プロジェクト があるので、クリックし ます。
  58. [オプション] ブラウザーでOpenShift Web Consoleに アクセスして作成したアプリを確認 2/2 ↑このあたりをクリックするといろいろ情報が⾒れます 下にスクロール

  59. アプリケーション⼀式の削除 oc delete all -lapp= watson-vr-node ターミナルに下記のコマンドを⼊⼒し実⾏します。 プロジェクトの削除 oc delete

    project watson-vr ターミナルに下記のコマンドを⼊⼒し実⾏します。 [オプション]作成したアプリ・プロジェクトの削除 作成したものを削除したい場合のみ下記のコマンドを実⾏してください
  60. アカウントに関するお問い合わせなどはこちらに https://www.ibm.com/jp-ja/cloud/support 60

  61. 質問&ライブ投票参加 はこちら slido.com #dojo615 質問タブで質問⼊⼒ ⾃分も知りたい質問には 「いいね」をプッシュ! 絵⽂字は表⽰されません スマホでアクセスして ぜひ参加お願いします︕

    https://app.sli.do/event/ue7xq8gk
  62. #CallforCode

  63. 2020 Call for Code グローバル・チャレンジ 今回のテーマは「気候変動」と「COVID-19」 • IBM Cloudを活⽤したアプリ開発コンテスト •

    「⼀般向け*」と「IBMer向け」に開催 4/27 (⽉) ⼀般 COVID19 早期締切 3/22 (⽇) 応募受付 開始 審査期間 8〜9⽉ 10⽉ 最優秀賞 チーム発表 6/30 (⽕) IBMer 応募受付 最終締切 7/31 (⾦) ⼀般 応募受付 最終締切 * IBM Corporationとその法⼈、それらが所有する⼦会社の51%以上および、 Red Hat Inc.とそのすべての⼦会社は「⼀般向け」Call for Code 2020には 参加できませんのでご注意ください。IBM社員は詳しくは社内w3サイトで。 #CallforCode
  64. callforcode.org ⽇本語情報 https://ibm.biz/c4cjapan ⽇本語 English #CallforCode オンライン説明会 4⽉17⽇(⾦) 12:15-13:00 19:15-20:00

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

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