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

Openshift(Minishift) workshop 101 20191203

C002578e20fc7015b8d555c85c1f0e99?s=47 noricokt
December 03, 2019

Openshift(Minishift) workshop 101 20191203

IBM Dojo workshop

C002578e20fc7015b8d555c85c1f0e99?s=128

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

    iPhone での表⽰例
  3. 8階 TN フロア図 (801) 受付で受け取った ೖؗόοδは、最後に同じ 受付にお戻しください。 (受付不在の場合はポスト に投⼊お願いします) ⾮常⼝とトイレをご確認

    お願いします。 ⾃動販売機 休憩スペース 2つ⽬のEVを ご利⽤下さい
  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) クロージング
  5. 学習の⽬的とゴール ⽬的 OpenShift概要について理解する ゴール Minishiftを利⽤したアプリケーションを動かす このコースを学ぶ⽅の想定スキル コンテナ実⾏環境を初めて利⽤する⽅

  6. 本イベントでは、 IBM Cloud へのアクセスは上記URLから行ってください ibm.biz/dojo20191203 • IBM Cloud ログイン アカウントをすでにお持ちの方は、

    こちらからログインしてください • IBM Cloud ライトアカウント作成 アカウントをお持ちでない方は、 ご登録をお願いします 【本⽇のお願い】
  7. 事前準備まだお済みでない⽅ 1. IBM Cloudアカウント(無料)の取得 ☆操作解説動画: https://ibm.biz/action1 2. IBM Cloud 従量課⾦アカウントへのアップグレード

    ☆操作解説動画: https://ibm.biz/action2 ※ ワークショップでは有償アカウントを使⽤しますが、無料枠内で作業します。 従って、今回の有償アカウントへのアップグレードや、ワークショップ参加によって 利⽤料⾦が請求されることはありません
  8. ⽬次 1. コンテナが注⽬されている理由 2. Kubernetesとは 3. Red Hat OpenShiftとは 4.

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

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

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

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

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

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

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

    コンテナー イメージ作成 イメージの 登録 開発者 アプリ実⾏ アプリ開発 3段階のプロセス
  16. コンテナーのポータビリティ nコンテナーのポータビリティ •アプリケーション稼働に必要な依存ファイルを パッケージングできる •物理サーバーに固定されない → 同じアーキテクチャの環境であれば ポータビリティが存在する システム基盤 (クラウド)

    ホストOS システム基盤 (オンプレミス) ホストOS コ ン テ ナ エ ン ジ ン App1 Bin/Libs App2 Bin/Libs App3 Bin/Libs 「僕の環境では動いた」 問題が発⽣しない コ ン テ ナ エ ン ジ ン App3 Bin/Libs
  17. What is Container (コンテナ)? https://youtu.be/1PPPUPcUkSs

  18. コンテナのはじめ⽅ n CNCFの Cloud Native Trail Map を参照 1. コンテナ化

    • ⼀般的には Docker コンテナで実施 • いかなるサイズのアプリケーションも依存性もコンテナ化可能 • 時間が経つにつれ、アプリケーションを分割し マイクロサービス化したくなるだろう 2. CI/CD(継続デリバリの仕組み) • 継続インテグレーション・継続デリバリの仕組みをセットアップ • コード変更が 新しいコンテナ・イメージとして、 ⾃動的にビルドされ、テストされ、デプロイされるように 3. オーケストレーション&アプリ定義 • 互換性試験に合格している Certified Kubernetes 環境を選択 • もっとも複雑なアプリケーションであっても HELMで 定義して、導⼊して更新していくことが可能
  19. コンテナのまとめ • 仮想マシン(VM)に⽐べてリソース効率がよい • ボータビリティーが⾼い • スケールアウトが容易 • 3段階のプロセスをコンテナのpushに使⽤することで、 よりアジャイルなDevOpsと継続的インテグレーション

    およびデリバリーが可能になる 動画をもう⼀度⾒たい⽅はこちら: • https://developer.ibm.com/jp/new-builders/containerization/ ⽂章での説明もあります
  20. 2. Kubernetesとは コンテナーの運⽤実⾏と管理を⾏うオーケストレーションツール • コンテナーが⼤量になってくると管理しきれない部分をカバー • 複数のDockerホストの管理 • 死活監視 •

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

    / Memory リソース管理
  22. What is Kubernetes? https://youtu.be/zGXYRQ-8pU0

  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,その他多数
  24. Kubernetesのまとめ 動画をもう⼀度⾒たい⽅はこちら: • https://developer.ibm.com/jp/new-builders/kubernetes/ ⽂章での説明もあります • コンテナーのオーケストレーション・ツール • 理想状態を宣⾔すると、その状態を維持しようとしてくれる •

    3つの主要コンポーネント • Pod, Deployment, Service • PodはDeploymentによって作成され、管理されます。 Deploymentによって作成されたPodへのアクセスは、 Serviceを使⽤することで容易になります。
  25. 3. Red Hat OpenShiftとは

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

    アプリケーション (コンテナ) Kubernetes アプリケーション (コンテナ) Ubuntu / CentOS… Linux Kubernetes アプリケーション (コンテナ) コンテナ ランタイム Linux OS コンテナ オーケストレーション Kubernetesの標準機能 で構築したアプリケーション どちらでも 動作可能 RHEL / RHCOS コンテナ ランタイム KubernetesとOpenShift
  27. KubernetesとOpenShiftの違い

  28. KubernetesとOpenShiftの違い まとめ • Deploy: • ソースコードからコンテナ作成とデプロイまでの⾃動化 • Manage: • Webコンソールとコマンドラインの両⽅から操作可能。

    • 実⾏状態のメトリックス監視とログ分析も提供 • 運⽤: • Ansible Playbookを使ってオートスケーリングが可能 • Security: • Project単位で簡単に管理可能
  29. What is OpenShift? https://youtu.be/KTN_QBuDplo

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

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

    The WeatherCompany®で毎⽇2,500億のオンデマンド予測を維持す るKubernetesサービスに直接統合されています。
  32. 4. Minishift ワークショップ https://www.okd.io/minishift/

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

  34. 5-1. IBM CloudでOpenShiftを使う 1. IBM Cloud にログイン 本⽇は ibm.biz/dojo20191203 にアクセスして

    右上の「ログイン」から ログインしてください 通常は https://cloud.ibm.com/ からログイン可能です
  35. 5-1. IBM CloudでOpenShiftを使う 2. ダッシュボードから「カタログ」をクリック

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

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

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

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

    https://youtu.be/UJ2frartWFk
  40. 5-1. IBM CloudでOpenShiftを使う 補⾜情報: 3分でわかるIBM Cloudシリーズ(動画) • OpenShiftクラスターに対してocコマンドでアクセスする • OpenShiftクラスターにHelloWorldアプリをデプロイしてみよう

    IBM Demos (デモ動画サイト、英語): • Red Hat OpenShift on IBM Cloud
  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 より抜粋
  42. 5-3. Minishift ワークショップ (準備) Setup 1 「仮想化環境を構成する」の⽇本語版はこちら」 • Windows: ibm.biz/Bdz39H

    • Mac: ibm.biz/Bdz39E Setup 2 MinishiftのインストールおよびOpenShiftサーバーを開始する ibm.biz/openshift1 Setup 3 コードエディタをインストールする(オプション)
  43. 5-3. Minishift ワークショップ IBM Watson Visual Recognitionを使った node.jsの画像認識Webアプリ https://github.com/kyokonishito/watson-vr-node をMinishiftで実⾏する

    【ワークショップ完了後のアプリ画面イメージ】
  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
  45. Watson Visual Recognition (画像認識) 画像認識「⼀般種別」(General Tagging): • 事前学習済みの分類器の出⼒を返す 画像認識「カスタム」: •

    識別を⾏いたいクラスのイメージを事前学習させ、 その分類器の出⼒を返す 事前学習 不要 事前学習 必要 https://www.ibm.com/watson/jp-ja/developercloud/visual-recognition.html 画像に写った物体・情景など様々なものを分析・認識するAIサービス
  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

  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
  48. 1.2: ibm-credentials.env のダウンロード 資格情報の「ダウンロード」を クリックし、⾃分のPCに ibm-credentials.env という ファイルを保存します。 あとでコマンドラインからこの ファイルを指定しますので、

    ocコマンドを実⾏する予定の 任意のフォルダに保存します。 ※コマンド操作に慣れてない⽅は、 デスクトップ以外の場所を推奨します。
  49. 1.2: ibm-credentials.env の編集 ①ibm-credentials.envをエディタで開きます。 4⾏分全てコピーして、5⾏⽬以降に貼り付けます。 編集前 編集後

  50. 1.2: ibm-credentials.env の編集 ②コピーした5⾏⽬以降の VISUAL_RECOGNITION を WATSON_VISION_COMBINED に置き換えます (v5 SDKのバグ(?)対応なので将来的に不要になるかもしれません)

    編集後 置き換え後保存してエディタを閉じてください。 どこに保存したのかPATHがわかるようにしてください。
  51. このあとは、ほぼほぼコマンド操作です! ターミナル(Mac) または PowerShell(Windows) を開きます。

  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⾏です)
  53. 2.3. アプリケーションの作成 $ oc new-app https://github.com/kyokonishito/watson-vr-node.git -- build-env-file=<ibm-credentials.env> --build-env CLASSIFIER_ID=food

    githubのソースコードから、下記のコマンドでアプリケーションを作成 します。 • 1.2でダウンロードしたibm-credentials.envをPATHも含めて、 下記<ibm-credentials.env>に指定します。 (コマンドは1⾏です) $ oc new-app https://github.com/kyokonishito/watson-vr-node.git -- build-env-file=./ibm-credentials.env --build-env CLASSIFIER_ID=food 例
  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⾏です)
  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 <none> 172.29.77.196 3000:31202/TCP <unknown> 下記コマンドを実⾏します。(コマンドは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 <none> 26m v1.11.0+d4cacc0 192.168.64.19 <none> CentOS Linux 7 (Core) 3.10.0-957.5.1.el7.x86_64 docker://1.13.1 出⼒: 下記の場合、アクセス可能なクラスターIPアドレスは192.168.64.19
  56. 2.8. ブラウザーでアプリケーションにアクセスします 2.6で取得したポート: 31202 2.7で取得したIPアドレス: 192.168.64.19 の 場合は http://192.168.64.19:31202/ にアクセスします。

    (ご⾃分の値をお使いください) アプリケーションは表⽰できましたか? ボタンを押して動作確認してみましょう!
  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
  58. 5-5. 補⾜ • Minishiftの停⽌コマンド $ minishift stop • Minishiftの起動、初期メモリ・ディスクの制限 $

    minishift start --memory 2G --disk-size 10G --vm-driver <drivername> • Minishift VM削除(VM再作成したい場合などに、、、) $ minishift delete • Minishift コマンドラインで作成したProjectをWebコンソール で表⽰(developerでログイン) $ oc policy add-role-to-user admin developer
  59. IBM Code Patterns https://ibm.biz/ibmcodejp 解説 + デモ動画 + ソースコードが揃ったアプリ開発パターン集

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

  61. None