Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Openshift(Minishift) workshop 101 20191203

noricokt
December 03, 2019

Openshift(Minishift) workshop 101 20191203

IBM Dojo workshop

noricokt

December 03, 2019
Tweet

More Decks by noricokt

Other Decks in Education

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

  4. 本⽇のタイムテーブル
    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)
    クロージング

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  8. ⽬次
    1. コンテナが注⽬されている理由
    2. Kubernetesとは
    3. Red Hat OpenShiftとは
    4. Minishift ワークショップ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  16. コンテナーのポータビリティ
    nコンテナーのポータビリティ
    •アプリケーション稼働に必要な依存ファイルを
    パッケージングできる
    •物理サーバーに固定されない
    → 同じアーキテクチャの環境であれば
    ポータビリティが存在する
    システム基盤
    (クラウド)
    ホストOS
    システム基盤
    (オンプレミス)
    ホストOS








    App1
    Bin/Libs
    App2
    Bin/Libs
    App3
    Bin/Libs
    「僕の環境では動いた」
    問題が発⽣しない








    App3
    Bin/Libs

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  23. 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,その他多数

    View Slide

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

    View Slide

  25. 3. Red Hat OpenShiftとは

    View Slide

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

    View Slide

  27. KubernetesとOpenShiftの違い

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  41. 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 より抜粋

    View Slide

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

    View Slide

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

    View Slide

  44. 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

    View Slide

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

    View Slide

  46. 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

    View Slide

  47. 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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  52. 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⾏です)

    View Slide

  53. 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

    View Slide

  54. 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⾏です)

    View Slide

  55. 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

    View Slide

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

    View Slide

  57. 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

    View Slide

  58. 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

    View Slide

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

    View Slide

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

    View Slide

  61. View Slide