Slide 1

Slide 1 text

IBM Dojo 追加コース OpenShift(Minishift) 101 Noriko Kato Developer Advocate Tokyo City Team

Slide 2

Slide 2 text

IBMInternet 無線LAN アクセス お配りしたユーザ名とパスワードを⼊⼒して 「利⽤条件に同意」いただき、サインオン してください ログインページが表⽰されない場合は、 Webブラウザで http://www.research.ibm.com サイトにアクセスしてください iPhone での表⽰例

Slide 3

Slide 3 text

8階 TN フロア図 (801) 受付で受け取った ೖؗόοδは、最後に同じ 受付にお戻しください。 (受付不在の場合はポスト に投⼊お願いします) ⾮常⼝とトイレをご確認 お願いします。 ⾃動販売機 休憩スペース 2つ⽬のEVを ご利⽤下さい

Slide 4

Slide 4 text

本⽇のタイムテーブル 14:00-14:05 (5min) オープニング 14:05-14:30 (25min) セットアップガイド ⽇本アイ・ビー・エム株式会社 プログラムマネージャー ⼭下 利夫 14:30-15:30 (60min) OpenShift概要 ⽇本アイ・ビー・エム株式会社 デベロッパーアドボケイト 加藤 典⼦ 15:30-16:30 (60min) Minishift 101 ワークショップ ⽇本アイ・ビー・エム株式会社 デベロッパーアドボケイト 加藤 典⼦ プログラムマネージャー ⼭下 利夫 16:30-17:00 (30min) クロージング

Slide 5

Slide 5 text

学習の⽬的とゴール ⽬的 OpenShift概要について理解する ゴール Minishiftを利⽤したアプリケーションを動かす このコースを学ぶ⽅の想定スキル コンテナ実⾏環境を初めて利⽤する⽅

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

事前準備まだお済みでない⽅ 1. IBM Cloudアカウント(無料)の取得 ☆操作解説動画: https://ibm.biz/action1 2. IBM Cloud 従量課⾦アカウントへのアップグレード ☆操作解説動画: https://ibm.biz/action2 ※ ワークショップでは有償アカウントを使⽤しますが、無料枠内で作業します。 従って、今回の有償アカウントへのアップグレードや、ワークショップ参加によって 利⽤料⾦が請求されることはありません

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

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

Slide 11

Slide 11 text

https://www.jsanet.or.jp/seminar/text/seminar_177.html 物流コンテナによる⾰命 コンテナの発明者は、全⽶有数のトラック 運送会社のオーナーとなったマルコム・ マクリーン(Malcom P. McLean) 国際貨物輸送の分野に 海陸⼀貫輸送という⼤変⾰ 1970年代には世界の主要航路のコンテナ 化がほぼ完了した。わずか10年程度でこれ ほど急激な形態の変化が起こったのは海運 史上でも他に例がない。 https://en.wikipedia.org/wiki/Malcom_McLean

Slide 12

Slide 12 text

港湾荷役のボトルネックを解消 物流コストの削減とスピードアップ コンテナ⾰命は業務改⾰ 陸海⼀貫輸送 海上輸送 陸送(トラック) 陸送(鉄道) 港湾荷役 港湾荷役 コンテナ船

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

コンテナを使った開発の流れ Dockerfileなど Docker イメージなど コンテナー レジストリ マニフェストで コンテナ⾃体の 詳細を記述 開発者 コンテナー イメージ作成 イメージの 登録 開発者 アプリ実⾏ アプリ開発 3段階のプロセス

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

コンテナのはじめ⽅ n CNCFの Cloud Native Trail Map を参照 1. コンテナ化 • ⼀般的には Docker コンテナで実施 • いかなるサイズのアプリケーションも依存性もコンテナ化可能 • 時間が経つにつれ、アプリケーションを分割し マイクロサービス化したくなるだろう 2. CI/CD(継続デリバリの仕組み) • 継続インテグレーション・継続デリバリの仕組みをセットアップ • コード変更が 新しいコンテナ・イメージとして、 ⾃動的にビルドされ、テストされ、デプロイされるように 3. オーケストレーション&アプリ定義 • 互換性試験に合格している Certified Kubernetes 環境を選択 • もっとも複雑なアプリケーションであっても HELMで 定義して、導⼊して更新していくことが可能

Slide 19

Slide 19 text

コンテナのまとめ • 仮想マシン(VM)に⽐べてリソース効率がよい • ボータビリティーが⾼い • スケールアウトが容易 • 3段階のプロセスをコンテナのpushに使⽤することで、 よりアジャイルなDevOpsと継続的インテグレーション およびデリバリーが可能になる 動画をもう⼀度⾒たい⽅はこちら: • https://developer.ibm.com/jp/new-builders/containerization/ ⽂章での説明もあります

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

IBMのコンテナ技術、標準化への取り組み クラウドネイティブ・アプリ 標準化へ積極的に投資 Docker, Kubernetes への コミット Kubernetes ベースの コンテナ基盤ソリューション 2015年7⽉,IBM や Google など 約20の企業,団体が設⽴ コンテナ技術 コンテナ管理 IBM Cloud Kubernetes Service (IKS) サービスメッシュ Grafeas サービスメッシュ IBM Cloud Private (ICP) IBM⾃⾝ソフトウェアのコンテナ対応を推進 API Connect,Watson Compare & Comply, Transformation Advisor,Microclimate, ODM,Skydive,IBM Voice Gateway, WebSphere, UrbanCode Deploy,APM,Db2, MQ,IIB,App Connect,DataPower,その他多数

Slide 24

Slide 24 text

Kubernetesのまとめ 動画をもう⼀度⾒たい⽅はこちら: • https://developer.ibm.com/jp/new-builders/kubernetes/ ⽂章での説明もあります • コンテナーのオーケストレーション・ツール • 理想状態を宣⾔すると、その状態を維持しようとしてくれる • 3つの主要コンポーネント • Pod, Deployment, Service • PodはDeploymentによって作成され、管理されます。 Deploymentによって作成されたPodへのアクセスは、 Serviceを使⽤することで容易になります。

Slide 25

Slide 25 text

3. Red Hat OpenShiftとは

Slide 26

Slide 26 text

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

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

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

4. Minishift ワークショップ https://www.okd.io/minishift/

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

5-1. IBM CloudでOpenShiftを使う 1. IBM Cloud にログイン 本⽇は ibm.biz/dojo20191203 にアクセスして 右上の「ログイン」から ログインしてください 通常は https://cloud.ibm.com/ からログイン可能です

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 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 42

Slide 42 text

5-3. Minishift ワークショップ (準備) Setup 1 「仮想化環境を構成する」の⽇本語版はこちら」 • Windows: ibm.biz/Bdz39H • Mac: ibm.biz/Bdz39E Setup 2 MinishiftのインストールおよびOpenShiftサーバーを開始する ibm.biz/openshift1 Setup 3 コードエディタをインストールする(オプション)

Slide 43

Slide 43 text

5-3. Minishift ワークショップ IBM Watson Visual Recognitionを使った node.jsの画像認識Webアプリ https://github.com/kyokonishito/watson-vr-node をMinishiftで実⾏する 【ワークショップ完了後のアプリ画面イメージ】

Slide 44

Slide 44 text

Watson APIサービス⼀覧 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 45

Slide 45 text

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

Slide 46

Slide 46 text

0. Visual Recognitionサービスの作成 以下を参考に、 Visual Recognitionサービスを作成してください。 https://github.com/kyokonishito/watson-vr-node#2-visual-recognition- %E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%AE%E4%BD%9C%E6%88%90

Slide 47

Slide 47 text

1. Visual Recognitionサービス ibm-credentials.env のダウンロード 1.1: IBM Cloudにログインし、 Visual Recognitionサービスの管理画⾯を表⽰します。 ⼿順が不明の⽅は、下記を参照してください: https://qiita.com/nishikyon/items/9b8f697db7ad0a693839#2- %E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%AE%E8%B3%87%E6%A0%BC% E6%83%85%E5%A0%B1%E5%8F%96%E5%BE%97

Slide 48

Slide 48 text

1.2: ibm-credentials.env のダウンロード 資格情報の「ダウンロード」を クリックし、⾃分のPCに ibm-credentials.env という ファイルを保存します。 あとでコマンドラインからこの ファイルを指定しますので、 ocコマンドを実⾏する予定の 任意のフォルダに保存します。 ※コマンド操作に慣れてない⽅は、 デスクトップ以外の場所を推奨します。

Slide 49

Slide 49 text

1.2: ibm-credentials.env の編集 ①ibm-credentials.envをエディタで開きます。 4⾏分全てコピーして、5⾏⽬以降に貼り付けます。 編集前 編集後

Slide 50

Slide 50 text

1.2: ibm-credentials.env の編集 ②コピーした5⾏⽬以降の VISUAL_RECOGNITION を WATSON_VISION_COMBINED に置き換えます (v5 SDKのバグ(?)対応なので将来的に不要になるかもしれません) 編集後 置き換え後保存してエディタを閉じてください。 どこに保存したのかPATHがわかるようにしてください。

Slide 51

Slide 51 text

このあとは、ほぼほぼコマンド操作です! ターミナル(Mac) または PowerShell(Windows) を開きます。

Slide 52

Slide 52 text

2. Minishift アプリ作成 2.1. クラスターにログインします $ oc login -u system:admin minishift startを実⾏した後、下記のコマンドでクラスターにログイン します。 2.2. プロジェクトを作成する $ oc new-project watson-vr --display-name="watson-vr" -- description="Sample Watson Visual Recognition Node.js app" 下記コマンドで、新しいアプリケーション⽤に新しいプロジェクトを 作成します。 (コマンドは1⾏です)

Slide 53

Slide 53 text

2.3. アプリケーションの作成 $ oc new-app https://github.com/kyokonishito/watson-vr-node.git -- build-env-file= --build-env CLASSIFIER_ID=food githubのソースコードから、下記のコマンドでアプリケーションを作成 します。 • 1.2でダウンロードしたibm-credentials.envをPATHも含めて、 下記に指定します。 (コマンドは1⾏です) $ oc new-app https://github.com/kyokonishito/watson-vr-node.git -- build-env-file=./ibm-credentials.env --build-env CLASSIFIER_ID=food 例

Slide 54

Slide 54 text

2.4. ビルドログを表⽰します $ oc logs -f bc/watson-vr-node 下記のコマンドでビルドログを表⽰し、「 Push successful 」で終わる まで待ちます。 2.5. ポートを公開します $ oc expose dc watson-vr-node --port=3000 --type=LoadBalancer -- name=watson-vr-node-ingress 下記コマンドを実⾏します。(コマンドは1⾏です)

Slide 55

Slide 55 text

2.6. 作成されたNodePortを確認します $ oc get --export svc watson-vr-node-ingress 2.7. アクセス可能なクラスターIPアドレスを確認します NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE watson-vr-node-ingress LoadBalancer 172.29.77.196 3000:31202/TCP 下記コマンドを実⾏します。(コマンドは1⾏です) 下記コマンドを実⾏します。(コマンドは1⾏です) $ oc get node -o wide 出⼒: 下記の場合、マッピングされた外部ポートは31202 NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME localhost Ready 26m v1.11.0+d4cacc0 192.168.64.19 CentOS Linux 7 (Core) 3.10.0-957.5.1.el7.x86_64 docker://1.13.1 出⼒: 下記の場合、アクセス可能なクラスターIPアドレスは192.168.64.19

Slide 56

Slide 56 text

2.8. ブラウザーでアプリケーションにアクセスします 2.6で取得したポート: 31202 2.7で取得したIPアドレス: 192.168.64.19 の 場合は http://192.168.64.19:31202/ にアクセスします。 (ご⾃分の値をお使いください) アプリケーションは表⽰できましたか? ボタンを押して動作確認してみましょう!

Slide 57

Slide 57 text

5-4. 追加ワークショップ (オプション) • Node-RED on Minishift https://github.com/yamachan/node-red-workshop- starter/blob/japanese-readme/README-ja.md • RedHat Japanのハンズオントレーニング ⽇本語訳 複数コンテナの連携: https://github.com/osonoi/minishift/tree/master/lab1 様々なデプロイメント⼿法: https://github.com/osonoi/minishift/tree/master/lab2

Slide 58

Slide 58 text

5-5. 補⾜ • Minishiftの停⽌コマンド $ minishift stop • Minishiftの起動、初期メモリ・ディスクの制限 $ minishift start --memory 2G --disk-size 10G --vm-driver • Minishift VM削除(VM再作成したい場合などに、、、) $ minishift delete • Minishift コマンドラインで作成したProjectをWebコンソール で表⽰(developerでログイン) $ oc policy add-role-to-user admin developer

Slide 59

Slide 59 text

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

Slide 60

Slide 60 text

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

Slide 61

Slide 61 text

No content