Slide 1

Slide 1 text

IBM Developer Dojo OpenShift 101 Kyoko Nishito Developer Advocate Tokyo City Team

Slide 2

Slide 2 text

Kyoko Nishito IBM Developer Advocate 2 KyokoNishito

Slide 3

Slide 3 text

本⽇のタイムテーブル 14:00-14:05 (5min) オープニング 14:05-15:00 (55min) OpenShift概要 ⽇本アイ・ビー・エム株式会社 デベロッパーアドボケイト ⻄⼾ 京⼦ 15:00-17:00 (120min) OpenShiftワークショップ ⽇本アイ・ビー・エム株式会社 デベロッパーアドボケイト ⻄⼾ 京⼦/加藤 典⼦ 17:00-17:30 (30min) クロージング

Slide 4

Slide 4 text

学習の⽬的とゴール ⽬的 OpenShift概要について理解する ゴール Watsonを組み込んだWebアプリをOpenShiftで動かす このコースを学ぶ⽅の想定スキル コンテナ実⾏環境を初めて利⽤する⽅

Slide 5

Slide 5 text

本⽇の資料 本⽇の資料はこちらからPCにダウンロードお願いし ます。URLをクリックしたり、コマンドをコピペしたりでき ますので、サイトでみるのではなく、ダウンロードをお勧めし ます。 http://ibm.biz/dojo20191213doc

Slide 6

Slide 6 text

本イベントでは、 IBM Cloud へのアクセスは上記URLから行ってください • IBM Cloud ログイン アカウントをすでにお持ちの方は、 こちらからログインしてください • IBM Cloud ライトアカウント作成 アカウントをお持ちでない方は、 ご登録をお願いします 【本⽇のお願い】 http://ibm.biz/dojo1213

Slide 7

Slide 7 text

事前準備まだお済みでない⽅ 1. IBM Cloudアカウント(無料)の取得 ☆操作解説動画: https://ibm.biz/action1

Slide 8

Slide 8 text

⽬次 1. コンテナ概要 2. Kubernetesとは 3. Red Hat OpenShiftとは 4. Minishift ワークショップ

Slide 9

Slide 9 text

1. コンテナ概要 なぜ「今」 コンテナ/Docker/Kubernetesなどの テクノロジーが注⽬されているのか

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

Docker ∈ コンテナ コンテナを利⽤するための仕組みを提供するプラットフォーム • 「開発者が簡単にアプリケーションを動かす環境を作る」ことができる • コンテナのデファクトスタンダード Build Ship Run イメージの作成 (アプリの開発) イメージの共有 コンテナの実⾏ Dockerを介してコンテナーのライフサイクルを管理

Slide 12

Slide 12 text

コンテナーのポータビリティ ü アプリケーション稼働に必要な依存ファイルを パッケージングできる ü 物理サーバーに固定されない → 同じアーキテクチャの環境であれば ポータビリティが存在する システム基盤 (クラウド) ホストOS システム基盤 (オンプレミス) ホストOS コ ン テ ナ エ ン ジ ン App1 Bin/Lib s App2 Bin/Lib s App3 Bin/Lib s 「僕の環境では動いた」 問題が発⽣しない コ ン テ ナ エ ン ジ ン App3 Bin/Lib s

Slide 13

Slide 13 text

What is Container (コンテナ)? https://youtu.be/1PPPUPcUkSs

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

2. Kubernetesとは コンテナーの運⽤実⾏と管理を⾏うオーケストレーションツール • コンテナーが⼤量になってくると管理しきれない部分をカバー • 複数のDockerホストの管理 • 死活監視 • スケジューリング • スケーリング • 障害時のリカバリー • アプリ実⾏に必要なインフラリソースを管理 • 永続的なストレージ • ネットワーク • クレデンシャル情報 etc… • 宣⾔的設定モデル • 「あるべき状態」を記述すると、それを実現し続けようとしてくれる • 障害時も⾃動で復旧作業を実施

Slide 16

Slide 16 text

Kubernetesの代表的な機能 スケールアウト 負荷分散 バージョン管理 (ロールアウト) ネットワーク管理 永続ストレージ管理 死活監視 ⾃⼰復旧 CPU / Memory リソース管理

Slide 17

Slide 17 text

Pod nKubernetes における最⼩の管理単位 –Podの中には 1つ以上 の コンテナが含まれる –Pod単位でスケールイン・スケールアウトする –PodごとにIPアドレスがアサインされる Pod IP 10.1.206.34 10.1.206.128

Slide 18

Slide 18 text

ReplicaSet nPodを管理するための定義 –Podの必要稼働数を定義 –K8Sの Scheduler がどのノードにアサインするかは 考慮してくれる Pod IP 10.1.206.34 10.1.206.110 ReplicaSet - 必要数2 - 現⾏ 2 ノード ノード

Slide 19

Slide 19 text

Node Port nKubernetes外から TCP/IPでアクセスする ための定義 –K8Sクラスタ内で⼀意となるポートがアサインされる –K8Sクラスタのどのノードからアクセスしても 当該サービスにルーティングされる Pod IP 10.1.206.34 10.1.206.110 ノード ノード 30010 30010

Slide 20

Slide 20 text

Deployment nワークロード定義体 –Pod –ReplicaSet –ClusterIPs –NodePort – (Ingress) Pod IP 10.1.206.34 10.1.206.110 Cluster IP 10.0.0.142 169.56.42.73 Ingress IP Deployment

Slide 21

Slide 21 text

What is Kubernetes? https://youtu.be/zGXYRQ-8pU0

Slide 22

Slide 22 text

Kubernetesのまとめ • コンテナーのオーケストレーション・ツール • 理想状態を宣⾔すると、その状態を維持しようとしてくれる • 3つの主要コンポーネント • Pod, Deployment, Service • PodはDeploymentによって作成され、管理されます。 Deploymentによって作成されたPodへのアクセスは、 Serviceを使⽤することで容易になります。

Slide 23

Slide 23 text

3. Red Hat OpenShiftとは

Slide 24

Slide 24 text

What is OpenShift? https://youtu.be/KTN_QBuDplo

Slide 25

Slide 25 text

© 2019 IBM Corporation OpenShiftは、Kubernetesとの互換性を維持しながら、CICD機能を強化、開発者 に代わって、ビルド、リポジトリ登録、デプロイを⾃動実⾏します。 OPENSHIFT 機能拡張 OpenShift CICD利⽤ アプリケーション (コンテナ) Kubernetes アプリケーション (コンテナ) Ubuntu / CentOS… Linux Kubernetes アプリケーション (コンテナ) コンテナ ランタイム Linux OS コンテナ オーケストレーション Kubernetesの標準機能 で構築したアプリケーション どちらでも 動作可能 RHEL / RHCOS コンテナ ランタイム OpenShiftのまとめ

Slide 26

Slide 26 text

Red Hat OpenShift on IBM Cloud IBM Cloud™上のRedHat®OpenShift®は、⾼度にスケーラブルで信頼性の⾼いIBM Cloudプラットフォームで完全に管理されたOpenShiftクラスターを提供する包括的な サービスです。 The WeatherCompany®で毎⽇2,500億のオンデマンド予測を維持す るKubernetesサービスに直接統合されています。

Slide 27

Slide 27 text

KubernetesとOpenShiftの違い

Slide 28

Slide 28 text

KubernetesとOpenShiftの違い まとめ • Deploy: ソースコードからコンテナ作成とデプロイまでの⾃動化 • Manage: Webコンソールとコマンドラインの両⽅から操作可能。 実⾏状態のメトリックス監視とログ分析も提供 • 運⽤: Ansible Playbookを使ってオートスケーリングが可能 • Security: Project単位で簡単に管理可能

Slide 29

Slide 29 text

Kubernetes and OpenShift: What's the Difference? https://youtu.be/cTPFwXsM2po

Slide 30

Slide 30 text

ワークショップ 5-1. IBM CloudでOpenShiftを使う 5-2. Minishift とは 5-3. OpenShift ワークショップ

Slide 31

Slide 31 text

5-1. IBM CloudでOpenShiftを使う 1. IBM Cloud にログイン 本⽇は http://ibm.biz/dojo1213 にアクセスして 右上の「ログイン」から ログインしてください 通常は https://cloud.ibm.com/ からログイン可能です ライトアカウント対象外です PAYGアカウントでお使い頂けます

Slide 32

Slide 32 text

5-1. IBM CloudでOpenShiftを使う 2. ダッシュボードから「カタログ」をクリック

Slide 33

Slide 33 text

5-1. IBM CloudでOpenShiftを使う 3. 右上の検索フィールドからlabel: ライトを削除 ↑label: ライトを削除

Slide 34

Slide 34 text

5-1. IBM CloudでOpenShiftを使う 4. 左側のカテゴリーから「コンテナ」をクリック、 「Red Hat OpenShift Cluster」をクリック

Slide 35

Slide 35 text

5-1. IBM CloudでOpenShiftを使う 5. Red Hat OpenShift Cluster作成画⾯が表⽰されます。 ただしライトアカウントでは作成できないため、 ライトアカウントの場合は「アップグレード」ボタンが表⽰されます。

Slide 36

Slide 36 text

5-1. IBM CloudでOpenShiftを使う 6. 「 Red Hat OpenShift Cluster 」を作成します。動画で⾒てみましょう: https://youtu.be/UJ2frartWFk

Slide 37

Slide 37 text

5-1. IBM CloudでOpenShiftを使う 補⾜情報: 3分でわかるIBM Cloudシリーズ(動画) • OpenShiftクラスターに対してocコマンドでアクセスする • OpenShiftクラスターにHelloWorldアプリをデプロイしてみよう IBM Demos (デモ動画サイト、英語): • Red Hat OpenShift on IBM Cloud

Slide 38

Slide 38 text

5-2. Minishift とは • OpenShiftは、Kubernetesに、Red Hat社独⾃の拡張を加え、さらに、 Red Hatのソフトウェア保守とウェブや電話での問い合わせ対応 サービスを提供する企業向けKubernetesのプラットフォーム • OpenShiftは、Red Hat社が提供する有償サービス(サブスクリプション) のもとで利⽤できるソフトウェア • OpenShiftの学習やローカルの開発環境⽤に無償で提供されるのが、 Minishift (OpenShift 3.11に相当) 「MiniShiftに関する疑問の整理、「 Dockerから⼊るKubernetes」執筆打明け話とか、OKDやCRCとの整理など」 https://qiita.com/MahoTakara/items/3c1c208640518e832660 より抜粋

Slide 39

Slide 39 text

5-2. Minishift ワークショップ 101(オプション) Setup 1 「仮想化環境を構成する」の⽇本語版はこちら」 • Windows: ibm.biz/Bdz39H • Mac: ibm.biz/Bdz39E Setup 2 MinishiftのインストールおよびOpenShiftサーバーを開始 し、 Lab1から順番に進める。 ibm.biz/openshift1

Slide 40

Slide 40 text

5-3. OpenShift ワークショップ IBM Watson Visual Recognitionを使った node.jsの画像認識Webアプリ をOpenShift on IBM Cloudで実⾏する 【ワークショップ完了後のアプリ画⾯イメージ】 本⽇はこちらを 操作してみましょう https://github.com/kyokonishito/watson- vr-node ソースはこちら︓

Slide 41

Slide 41 text

今回使⽤する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

Slide 42

Slide 42 text

Watson Visual Recognition (画像認識) 画像認識「⼀般種別」(General Tagging): • 事前学習済みの分類器の出⼒を返す 画像認識「カスタム」: • 識別を⾏いたいクラスのイメージを事前学習させ、 その分類器の出⼒を返す 事前学習 不要 事前学習 必要 https://www.ibm.com/watson/jp-ja/developercloud/visual-recognition.html 画像に写った物体・情景など様々なものを分析・認識するAIサービス

Slide 43

Slide 43 text

操作の流れ 1. ワークショップ⽤の環境へのIBM Cloud ID関連付け 2. OpenShiftをコマンド実⾏できる環境の準備 3. Visual Recognitionサービスの作成 4. 資格情報のダウンロード 5. 資格情報のアップロード 6. 資格情報の編集 7. OpenShiftアプリの作成

Slide 44

Slide 44 text

1. ワークショップ⽤のIBM Cloud環境にご⾃⾝の IBM Cloud IDを関連付ける 注意事項 ・ブラウザはFirefoxをご利⽤ください ・本ワークショップ⽤のIBM Cloud環境はセミナー開催⽇を 含めて約3⽇間限定でお使いいただけます ・IBM Cloud上で継続的にOpenShiftを検証する環境が 必要な場合は、5-1. OpenShiftをご利⽤ください ・ローカルでOpenShiftを検証する環境を構築されたい場合は、 5-2. Minishiftをご利⽤ください

Slide 45

Slide 45 text

1.1: 下記URLにFirefoxブラウザでアクセスする https://dec13openshifttokyo.mybluemix.net 1.2: [Lab Key] 、[Your IBMid]にご⾃⾝のIDを ⼊⼒し、チェックボックスにチェックを⼊れて [Submit]をクリックする Lab Keyは 講師にお尋ねください

Slide 46

Slide 46 text

1.3: Congratulations! が表⽰されたら [1. Log in IBM Cloud] リンクをクリックする

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

1.8: [xxxopenshifttokyo xx]をクリックする ※本ワークショップではこちらのクラスタを使⽤します ※数字は⾃動的に割り当てられます

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

1.10: [OpenShift Container Platform]画⾯が表⽰されたら 右上のアカウント情報の隣の v をクリックし、 [Copy Login Command]を選択する ※後ほど使⽤する為、必要に応じてメモしておいてください

Slide 52

Slide 52 text

2. OpenShiftをコマンド実⾏できる環境の準備 2.1: 下記URLに⼿順1で使⽤したものと同じFirefoxブラウザ でアクセスする https://workshop.shell.cloud.ibm.com passcodeは 講師にお尋ねください

Slide 53

Slide 53 text

2.2: IBM Cloud Shell for Workshopサイトの右上の アカウント情報の v をクリックして[xxxxxxx - IBM] を選択する

Slide 54

Slide 54 text

2.3: アカウント情報が更新されたことを確認し、左隣の ターミナルアイコンをクリックする 2.4: しばらくするとターミナルが表⽰される

Slide 55

Slide 55 text

2.5: 前章1.9でコピーしたコマンドを⼊⼒し実⾏する 2.6: 「Welcome!」が表⽰されればログイン成功です

Slide 56

Slide 56 text

3. Visual Recognitionサービスの作成 Visual Recognitionを新規に作成する⽅は次のページに進んでください。 既に以前に作成済みの⽅は、作成済みのものが使⽤できます。 作成済みの⽅は以下の⼿順でVisual Recognitionの管理の画⾯を表⽰して http://ibm.biz/watson-service-screen 「4. Visual Recognitionサービスibm-credentials.env のダウンロード」まで進んでください。 ブラウザー上で、新しいタブを開きます。 https://cloud.ibm.com/ にアクセスして、ダッシュボードを開きます。 XXXXXXX – IBM ではなく⾃分のアカウントになっていることを確認し、異なっ ている場合はクリックして変更します

Slide 57

Slide 57 text

3.1 上部のメニューにある「カタログ」をクリックします

Slide 58

Slide 58 text

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

Slide 59

Slide 59 text

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

Slide 60

Slide 60 text

3.4 Visual Recognitionサービスを作成確認、管理画⾯の表⽰ 下の画⾯が出たら、作成完了です。 左のメニューから「管理」をクリックして管理画⾯を表⽰します

Slide 61

Slide 61 text

資格情報の「ダウンロード」を クリックし、⾃分のPCに ibm-credentials.env という ファイルを保存します。 4. Visual Recognitionサービス ibm-credentials.env のダウンロード

Slide 62

Slide 62 text

5. ibm-credentials.env のアップロード 5.1. ブラウザーのIBM Cloud Shell for Workshopのタブ をクリックして表⽰します。

Slide 63

Slide 63 text

5. ibm-credentials.env のアップロード 5.2. メニューバーのアップロードアイコンをクリック、 ibm-credentials.envを指定してアップロード

Slide 64

Slide 64 text

5. ibm-credentials.env のアップロード 5.3 ファイルアップロードを確認 ls ターミナルに下記コマンドを⼊⼒し、確認します。 出⼒例:

Slide 65

Slide 65 text

6. ibm-credentials.env コピーと編集 6.1. ibm-credentials.env をコピー cp ibm-credentials.env ibm-credentials.env.nodevr ターミナルに下記コマンドを⼊⼒。 出⼒例: 6.2. ibm-credentials.env.nodevr の権限変更 chmod o+r ibm-credentials.env.nodevr ターミナルに下記コマンドを⼊⼒。 出⼒例:

Slide 66

Slide 66 text

6. ibm-credentials.env コピーと編集 6.3 メニューバーの鉛筆(Edit)アイコンをクリックして、 エディターを⽴ちあげる 上半分にエディターが開きます

Slide 67

Slide 67 text

6. ibm-credentials.env コピーと編集 6.4 左側のEXPLORERからibm-credentials.env.nodevr をダブルクリックして開きます。 ダブルクリック

Slide 68

Slide 68 text

6. ibm-credentials.env コピーと編集 6.5 VISUAL_RECOGNITIONで始まっていない⾏(1〜4 ⾏⽬と最後の⾏)を削除します。 削除前 削除後

Slide 69

Slide 69 text

6. ibm-credentials.env コピーと編集 6.6 「File」メニューをクリックし、「Save」をクリッ クして保存します。

Slide 70

Slide 70 text

7.1. プロジェクトを作成する oc new-project watson-vr --display-name="watson-vr" -- description="Sample Watson Visual Recognition Node.js app" ターミナルに下記コマンドを⼊⼒し、新しいアプリケーション⽤に新しい プロジェクトを作成します。 (コマンドは1⾏です) 7. Openshift アプリの作成 出⼒例:

Slide 71

Slide 71 text

7.2. アプリケーションの作成 ターミナルに下記のコマンドを⼊⼒し、 githubのソースコードから、アプ リケーションを作成します。 (コマンドは1⾏です) oc new-app https://github.com/kyokonishito/watson-vr-node.git --build-env-file=./ibm-credentials.env.nodevr --build-env CLASSIFIER_ID=food 7. OpenShiftアプリの作成

Slide 72

Slide 72 text

7.2. アプリケーションの作成 出⼒例: 7. OpenShiftアプリの作成

Slide 73

Slide 73 text

7.3 ビルドログを表⽰します oc logs -f bc/watson-vr-node ターミナルに下記のコマンドを⼊⼒しビルドログを表⽰し、「 Push successful 」で終わるまで待ちます。 7.4 ロードバランサーのサービスを作成します oc expose dc watson-vr-node --port=3000 --type=LoadBalancer -- name=watson-vr-node-ingress ターミナルに下記のコマンドを⼊⼒し実⾏します。(コマンドは1⾏です) 7. OpenShiftアプリの作成

Slide 74

Slide 74 text

7.5. ロードバランサーのサービスを公開します oc expose service watson-vr-node-ingress ターミナルに下記のコマンドを⼊⼒し実⾏します。 7. OpenShiftアプリの作成 これで完了です!ターミナルに下記のコマンドを⼊⼒し実⾏し、その結果を 参照して、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 にブラウザでアクセスします。

Slide 75

Slide 75 text

7.6 ブラウザーでアプリケーションにアクセスします アプリケーションは表⽰できましたか? ボタンを押して動作確認してみましょう! 「ファイルの選択」から写真を選んだ後、各⻘ボタンを クリックして、Visual Recognitionの結果を確認します。 • Watsonで認識(Watson学習済みモデルを利⽤): • Watsonが写真を認識した内容を表⽰します。 • Watsonで認識(カスタムモデルを利⽤): • IBM提供の⾷品に特化したカスタムモデルFoodで認識し たクラスを表⽰します。 ※スマートフォンでの確認 ⼀番下にQRコードが表⽰されているので、それをスマートフォ ンのカメラで読んでアプリケーションのURLにアクセすると、ス マートフォンでも結果を確認できます。 スマートフォンでは「ファイルの選択」ボタンでその場で撮った 写真も認識可能です。

Slide 76

Slide 76 text

追加ワークショップ (オプション) • Node-RED on OpenShift Workshop starter (日本語版) https://qiita.com/yamachan360/items/786f70cb532443 f38c16 • RedHat Japanのハンズオントレーニング ⽇本語訳 複数コンテナの連携: https://github.com/osonoi/minishift/tree/master/lab1 様々なデプロイメント⼿法: https://github.com/osonoi/minishift/tree/master/lab2

Slide 77

Slide 77 text

IBM Code Patterns https://ibm.biz/ibmcodejp 解説 + デモ動画 + ソースコードが揃ったアプリ開発パターン集

Slide 78

Slide 78 text

開発者向けサイト IBM Developer ibm.biz/IBMDevJP 最新情報やスキルアップに役⽴つ6,000を超える技術記事を提供

Slide 79

Slide 79 text

No content