IBM Developer Advocacy team
OpenShift + AI 入門
Yasushi Osonoi
Client Developer Advocate
本⽇のタイムテーブル
14:00-14:05
(5min)
オープニング
資料ダウンロードなど
14:05-15:00
(55min)
What is Container/Kubernetes/OpenShift ?
15:00-16:30
(90min)
OpenShift on IBM Cloud <ワークショップ>
16:30-17:00
(30min)
クロージング
本⽇の資料
本⽇の資料はこちらからダウンロードできます。
https://www.slideshare.net/osonoi1/openshift-20200109
学習の⽬的とゴール
⽬的
Container/Kubernetes/Openshift概要について理解す
る
ゴール
Openshiftを利⽤したアプリケーションを動かせるよう
になる
出席の確認にこちらからログインしてください。
IBM Cloud へのアクセスは上記URLから行ってください
https://ibm.biz/Bdztds
• IBM Cloud ログイン
アカウントをすでにお持ちの方は、
こちらからログインしてください
• IBM Cloud ライトアカウント作成
アカウントをお持ちでない方は、
ご登録をお願いします
【本⽇のお願い】
⽬次
1. What is Containers (コンテナ)?
2. What is Kubernetes?
3. What is OpenShift?
4. KubernetesとOpenShiftの違い
5. ワークショップ: OpenShift⼊⾨
1. What is Containers (コンテナ)?
https://developer.ibm.com/jp/new-builders/containerization/
コンテナ以前の様⼦
コンテナ⾰命以前の港湾荷役
http://military.wikia.com/wiki/Battle_of_Pusan_Perimeter_logistics
⼤勢の作業員
倉庫に⼀時保管
物流の最⼤の
ボトルネック
https://www.jsanet.or.jp/seminar/text/seminar_177.html
物流コンテナによる⾰命
コンテナの発明者は、全⽶有数のトラック
運送会社のオーナーとなったマルコム・
マクリーン(Malcom P. McLean)
国際貨物輸送の分野に
海陸⼀貫輸送という⼤変⾰
1970年代には世界の主要航路のコンテナ
化がほぼ完了した。わずか10年程度でこれ
ほど急激な形態の変化が起こったのは海運
史上でも他に例がない。
https://en.wikipedia.org/wiki/Malcom_McLean
港湾荷役のボトルネックを解消
物流コストの削減とスピードアップ
コンテナ⾰命は業務改⾰
陸海⼀貫輸送
海上輸送
陸送(トラック) 陸送(鉄道)港湾荷役 港湾荷役
コンテナ船
いま、IT業界の
コンテナ⾰命が
始まる
What is Container (コンテナ)?
https://youtu.be/1PPPUPcUkSs
「仮想マシン(VM)」と「コンテナ」
コンテナは仮想マシン(VM)に⽐べてリソース効率がよい
スケールアウトが簡単
コンテナを使った開発の流れ
Dockerfileなど Docker
イメージなど
コンテナー
レジストリ
マニフェストで
コンテナ⾃体の
詳細を記述
開発者
コンテナー
イメージ作成
イメージの
登録
開発者
アプリ実⾏
アプリ開発
3段階のプロセス
コンテナのまとめ
• 仮想マシン(VM)に⽐べてリソース効率がよい
• ボータビリティーが⾼い
• スケールアウトが容易
• 3段階のプロセスをコンテナのpushに使⽤することで、より
アジャイルなDevOpsと継続的インテグレーションおよびデ
リバリーが可能になる
動画をもう⼀度⾒たい⽅はこちら:
• https://developer.ibm.com/jp/new-builders/containerization/
⽂章での説明もあります
2. What is Kubernetes?
https://developer.ibm.com/jp/new-builders/kubernetes/
2. What is Kubernetes?
https://youtu.be/zGXYRQ-8pU0
Kubernetesとは
18
コンテナーの運⽤実⾏と管理を⾏うオーケストレーションツール
• コンテナーが⼤量になってくると管理しきれない部分をカバー
• 複数のDockerホストの管理
• 死活監視
• スケジューリング
• スケーリング
• 障害時のリカバリー
• アプリ実⾏に必要なインフラリソースを管理
• 永続的なストレージ
• ネットワーク
• クレデンシャル情報 etc…
• 宣⾔的設定モデル
• 「あるべき状態」を記述すると、それを実現し続けようとしてくれる
• 障害時も⾃動で復旧作業を実施
Kubernetesの代表的な機能
スケールアウト 負荷分散 バージョン管理
(ロールアウト)
ネットワーク管理
永続ストレージ管理
死活監視
⾃⼰復旧
CPU / Memory リソース管理
Kubernetesのまとめ
動画をもう⼀度⾒たい⽅はこちら:
• https://developer.ibm.com/jp/new-builders/kubernetes/
⽂章での説明もあります
• コンテナーのオーケストレーション・ツール
• 理想状態を宣⾔すると、その状態を維持しようとしてくれる
• 3つの主要コンポーネント
• Pod, Deployment, Service
• PodはDeploymentによって作成され、管理されます。
Deploymentによって作成されたPodへのアクセスは、
Serviceを使⽤することで容易になります。
3. What is OpenShift?
What is OpenShift?
https://youtu.be/KTN_QBuDplo
© 2019 IBM Corporation
OpenShiftは、Kubernetesとの互換性を維持しながら、CICD機能を強化、開発者
に代わって、ビルド、リポジトリ登録、デプロイを⾃動実⾏します。
OPENSHIFT
機能拡張
OpenShift CICD利⽤
アプリケーション
(コンテナ)
Kubernetes
アプリケーション
(コンテナ)
Ubuntu / CentOS… Linux
Kubernetes
アプリケーション
(コンテナ)
コンテナ ランタイム
Linux OS
コンテナ
オーケストレーション
Kubernetesの標準機能
で構築したアプリケーション
どちらでも
動作可能
RHEL / RHCOS
コンテナ ランタイム
OpenShiftのまとめ
Red Hat OpenShift on IBM Cloud
IBM Cloud™上のRedHat®OpenShift®は、⾼度にスケーラブルで信頼性の⾼いIBM
Cloudプラットフォームで完全に管理されたOpenShiftクラスターを提供する包括的な
サービスです。 The WeatherCompany®で毎⽇2,500億のオンデマンド予測を維持す
るKubernetesサービスに直接統合されています。
4. OpenShift ワークショップ
https://www.okd.io/minishift/ より
4. OpenShift ワークショップ
4-1. OpenShift + AI
4-1. OpenShift+AI ワークショップ
IBM Watson Visual Recognitionを使った
node.jsの画像認識Webアプリ
をOpenShift on IBM Cloudで実⾏する
【ワークショップ完了後のアプリ画面イメージ】
本⽇はこちらを
操作してみましょう
今回使⽤する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
Watson Visual Recognition (画像認識)
画像認識「⼀般種別」(General Tagging):
• 事前学習済みの分類器の出⼒を返す
画像認識「カスタム」:
• 識別を⾏いたいクラスのイメージを事前学習させ、
その分類器の出⼒を返す
事前学習
不要
事前学習
必要
https://www.ibm.com/watson/jp-ja/developercloud/visual-recognition.html
画像に写った物体・情景など様々なものを分析・認識するAIサービス
本日の IBM Cloud Lab Key
Lab Key (⼿順1.2)
oslab
Passcode (⼿順2.1)
ikslab
操作の流れ
1. ワークショップ⽤の環境へのIBM Cloud ID関連付け
2. OpenShiftをコマンド実⾏できる環境の準備
3. Visual Recognitionサービスの作成
4. 資格情報のダウンロード
5. 資格情報のアップロード
6. 資格情報の編集
7. OpenShiftアプリの作成
1. ワークショップ⽤のIBM Cloud環境にご⾃⾝の
IBM Cloud IDを関連付ける
注意事項
・ブラウザはFirefoxをご利⽤ください
・本ワークショップ⽤のIBM Cloud環境はセミナー開催⽇を
含めて約3⽇間限定でお使いいただけます
・IBM Cloud上で継続的にOpenShiftを検証する環境が
必要な場合は、5-1. OpenShiftをご利⽤ください
・ローカルでOpenShiftを検証する環境を構築されたい場合
は、
1.1: 下記URLにFirefoxブラウザでアクセスする
https://openshiftworkshop19tokyo.mybluemix.net
1.2: [Lab Key] 、[Your IBMid]にご⾃⾝のIDを
⼊⼒し、チェックボックスにチェックを⼊れて
[Submit]をクリックする
oslab
1.3: Congratulations! が表⽰されたら [1. Log in IBM Cloud]
リンクをクリックする
1.5: IBM Cloudダッシュボードの右上のアカウント情報の
右横の v をクリックする
1.6:[xxxxxxx – IBM] をクリックする
1.7: IBM Cloudダッシュボードの右上のアカウント情報が
変更されたことを確認し、[リソースの要約]の
[Clusters]をクリックする
1.8: [xxxopenshifttokyo xx]をクリックする
※本ワークショップではこちらのクラスタを使⽤します
※数字は⾃動的に割り当てられます
1.9: [OpenShift Webコンソール]ボタンをクリックします。
1.10: [OpenShift Container Platform]画⾯が表⽰されたら
右上のアカウント情報の隣の v をクリックし、
[Copy Login Command]を選択する
※後ほど使⽤する為、必要に応じてメモしておいてください
2. OpenShiftをコマンド実⾏できる環境の準備
2.1: 下記URLに⼿順1で使⽤したものと同じFirefoxブラウザ
でアクセスする
https://workshop.shell.cloud.ibm.com
ikslab
2.2: IBM Cloud Shell for Workshopサイトの右上の
アカウント情報の v をクリックして[xxxxxxx - IBM]
を選択する
2.3: アカウント情報が更新されたことを確認し、左隣の
ターミナルアイコンをクリックする
2.4: しばらくするとターミナルが表⽰される
2.5: 前章1.9でコピーしたコマンドを⼊⼒し実⾏する
2.6: 「Welcome!」が表⽰されればログイン成功です
3. Visual Recognitionサービスの作成
Visual Recognitionを新規に作成する⽅は次のページに進んでください。
既に以前に作成済みの⽅は、作成済みのものが使⽤できます。
作成済みの⽅は以下の⼿順でVisual Recognitionの管理の画⾯を表⽰して
http://ibm.biz/watson-service-screen
「4. Visual Recognitionサービスibm-credentials.env のダウンロード」まで進んでください。
ブラウザー上で、新しいタブを開きます。
https://cloud.ibm.com/ にアクセスして、ダッシュボードを開きます。
1840867-IBMではなく⾃分のアカウントになっていることを確認し、異なって
いる場合はクリックして変更します
3.1 上部のメニューにある「カタログ」をクリックします
3.2 Visual Recognitionサービスの選択
1. 左側のメニューから「AI」をクリック
2. 下にスクロールして表⽰された「Visual Recognition」をクリック
価格プランに「ライト」が選択されていることを確認して、
「作成」をクリック
3.3 Visual Recognitionサービスを作成する
3.4 Visual Recognitionサービスを作成確認、管理画⾯の表⽰
下の画⾯が出たら、作成完了です。
左のメニューから「管理」をクリックして管理画⾯を表⽰します
管理の「ダウンロード」を
クリックし、⾃分のPCに
ibm-credentials.env という
ファイルを保存します。
4. Visual Recognitionサービス
ibm-credentials.env のダウンロード
5. ibm-credentials.env のアップロード
5.1. ブラウザーのIBM Cloud Shell for Workshopのタブ
をクリックして表⽰します。
5. ibm-credentials.env のアップロード
5.2. メニューバーのアップロードアイコンをクリック、
ibm-credentials.envを指定してアップロード
5. ibm-credentials.env のアップロード
5.3 ファイルアップロードを確認
ls
ターミナルに下記コマンドを⼊⼒し、確認します。
出⼒例:
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
ターミナルに下記コマンドを⼊⼒。
出⼒例:
6. ibm-credentials.env コピーと編集
6.3 メニューバーの鉛筆(Edit)アイコンをクリックして、
エディターを⽴ちあげる
上半分にエディターが開きます
6. ibm-credentials.env コピーと編集
6.4 左側のEXPLORERからibm-credentials.env.nodevr
をダブルクリックして開きます。
ダブルクリック
6. ibm-credentials.env コピーと編集
6.5 VISUAL_RECOGNITIONで始まっていない⾏(1〜4
⾏⽬と最後の⾏)を削除します。
削除前
削除後
6. ibm-credentials.env コピーと編集
6.6 「File」メニューをクリックし、「Save」をクリッ
クして保存します。
7.1. プロジェクトを作成する
oc new-project watson-vr --display-name="watson-vr" --
description="Sample Watson Visual Recognition Node.js app"
ターミナルに下記コマンドを⼊⼒し、新しいアプリケーション⽤に新しい
プロジェクトを作成します。
(コマンドは1⾏です)
7. Openshift アプリの作成
出⼒例:
Webコンソールでも確認できます。
プロジェクト名をク
リックするとプロジェ
クト内のリソースを確
認できます
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アプリの作成
7.2. アプリケーションの作成
出⼒例:
7. OpenShiftアプリの作成
Webコンソール
ログを確認できます。
ログを確認できます。
Webコンソール
次のページのターミナルで見るものと同じです。
Push succecefulが出てきたら完了
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アプリの作成
Webコンソール
Application -> Serviceで確認できます
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 にブラウザでアクセスします。
Webコンソール
Application -> Routeで確認できます
クリックするとアプリのサイトに
アクセスできます。
7.6 ブラウザーでアプリケーションにアクセスします
アプリケーションは表⽰できましたか?
ボタンを押して動作確認してみましょう!
「ファイルの選択」から写真を選んだ後、各⻘ボタンを
クリックして、Visual Recognitionの結果を確認します。
• Watsonで認識(Watson学習済みモデルを利⽤):
• Watsonが写真を認識した内容を表⽰します。
• Watsonで認識(カスタムモデルを利⽤):
• IBM提供の⾷品に特化したカスタムモデルFoodで認識し
たクラスを表⽰します。
※スマートフォンでの確認
⼀番下にQRコードが表⽰されているので、それをスマートフォ
ンのカメラで読んでアプリケーションのURLにアクセすると、ス
マートフォンでも結果を確認できます。
スマートフォンでは「ファイルの選択」ボタンでその場で撮った
写真も認識可能です。
5. OpenShift ワークショップ
5-1. コンテナーイメージからのデプロイ
4-2. ソースコードからのデプロイ
4-3. 追加ワークショップ
5-1. コンテナーイメージからのデプロイ
• Web コンソールからアプリのデプロイをしてみましょう。
右上のメニューから Add to Project -> Deploy Image を選択してください。
https://hub.docker.com/r/openshiftkatacoda/blog-django-py/
5-1. コンテナーイメージからのデプロイ
• Web コンソールからアプリのデプロイをしてみましょう。
①openshiftkatacoda/blog-django-py
と入力
② 検索をクリック
② 画像が出たらDeployをクリック
5-1. コンテナーイメージからのデプロイ
左のメニューから overviewをクリックしてください。アプリの概要が見れます。
クリックしてRouteを作成してください(ロードバランサーのサービスを公開)
5-1. コンテナーイメージからのデプロイ
作成後URLをクリックするとアプリの画面に行きます。
5-2. ソースコードからのデプロイ
• Web コンソールからアプリのデプロイをしてみましょう。
右上のメニューから Add to Project -> Brawse Catalog を選択してくださ
い。
https://github.com/openshift-katacoda/blog-django-py
5-2. ソースコードからのデプロイ
• Web コンソールからアプリのデプロイをしてみましょう。
①Language
② Python
③Pythonをクリック
5-2. ソースコードからのデプロイ
• Web コンソールからアプリのデプロイをしてみましょう。
①Django-pyと入力
② https://github.com/openshift-katacoda/blog-django-py
② Createをクリック
5-2. ソースコードからのデプロイ
Routeが自動的に作られます。左のメニューから Application -> Routeをクリックしてください。
5-2. ソースコードからのデプロイ
作成後URLをクリックするとアプリの画面に行きます。
5-2. 追加ハンズオン
• Web UIからアプリのデプロイをしてみましょう。
• https://github.com/osonoi/minishift/tree/master/lab1
• Rubyプロジェクト
• oc new-app https://github.com/sclorg/ruby-ex
• oc expose dc ruby-ex --type=LoadBalancer --name=ruby-ex-ingress
• oc get --export svc ruby-ex-ingress
5-3. 追加ハンズオン
https://github.com/sclorg/rails-ex
http://rails-postgresql-example-myproject.192.168.99.112.nip.io/
• Railsプロジェクト
• git clone https://github.com/osonoi/rails-ex.git
• cd rails-ex/
• oc new-app openshift/templates/rails-postgresql.json -p
SOURCE_REPOSITORY_URL=https://github.com/osonoi/rails-ex
• oc start-build rails-postgresql-example
• oc get pods –w
• (数分待つ)
5-3. 追加ハンズオン
https://github.com/sclorg/ruby-ex
http://rails-postgresql-example-myproject.192.168.99.112.nip.io/
このIPアドレスは環境により異なります。
5-3. 追加ハンズオン
• RedHat Japanのハンズオントレーニング ⽇本語訳
様々なデプロイメント⼿法:
https://github.com/osonoi/minishift/tree/master/lab2
(Blue Green Deployment, Canary Deployment,
Roling Update)
• Node-RED on Minishift
https://github.com/yamachan/node-red-workshop-
starter/blob/japanese-readme/README-ja.md
5-3. 追加ハンズオン
• https://github.com/IBM/openshift-on-ibm-cloud-workshops/tree/master/2-deploying-to-
openshift#deploying-java-microservices-to-openshift-on-ibm-cloud
Yamlファイルを使用したデプロイ
5-3.追加ハンズオン
• OpenShiftによるJava EEアプリケーションのモダナイ
ゼーションをやってみた。
https://qiita.com/daihiraoka/items/23cfaed7662d36ccc7ab
minishift

Openshift 20200109