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

OpenShift(Minishift) 101 入門 / Dojo OpenShift101 2019Dec

Ca7e4f1680e175e6462a039923e71fc5?s=47 Kyoko Nishito
December 06, 2019

OpenShift(Minishift) 101 入門 / Dojo OpenShift101 2019Dec

2019/12/06(金) IBM Developer Dojo なごの #2 OpenShift (Minishift) 入門
の資料です。
(2019/12/10: p60に文字抜けがあったのでその部分を追記)

Ca7e4f1680e175e6462a039923e71fc5?s=128

Kyoko Nishito

December 06, 2019
Tweet

Transcript

  1. IBM Dojo OpenShift(Minishift) 101 Kyoko Nishito Developer Advocate Tokyo City

    Team
  2. Kyoko Nishito IBM Developer Advocate 2 KyokoNishito

  3. Developer Advocate

  4. TECHNOLOGISTS RULE THE WORLD 技術者が世の中を変えていくお⼿伝いをします︕ ・技術情報を提供します ・開発者と話をします ・開発者にとって何が⼀番良いかを考えます ・開発者の困ったを⼀緒に解決します ・開発者をヒーローにします

  5. OUR ACTIVITIES こんな活動をしながら技術者のみなさまをサポートします︕ ・オンラインでの情報発信(Blog、SNS、Podcastなど) ・オフラインでの情報発信(書籍、雑誌など) ・セミナー、勉強会などでの登壇 ・コミュニティ、Meetupなどのリード ・ハンズオンワークショップなどでの講師 ・ハッカソン、ラボ、Dojoなどでのテックサポート

  6. DEVELOPER ADVOCATE in TOKYO Tokyo Team is a part of

    Worldwide Developer Advocate Teams! Developer Advocate City Leader AKIRA ONISHI WW Developer Advocate KYOKO NISHITO WW Developer Advocate TAIJI HAGINO WW Developer Advocate AYA TOKURA Program Manager TOSHIO YAMASHITA WW Developer Advocate NORIKO KATO Client Developer Advocate YASUSHI OSONOI Digital Developer Advocate JUNKI SAGAWA
  7. Yes, we are DeveloperAdvocate

  8. 本⽇のタイムテーブル 14:00-14:10 (5min) オープニング 資料ダウンロード、出席登録 ⽇本アイ・ビー・エム株式会社 デベロッパーアドボケイト ⻄⼾ 京⼦ 14:10-14:40

    (30min) MiniShift準備 ⽇本アイ・ビー・エム株式会社 デベロッパーアドボケイト ⼩薗井 康志 14:40-15:30 (50min) What is Docker/Kubernetes/OpenShift ? ⽇本アイ・ビー・エム株式会社 デベロッパーアドボケイト ⻄⼾ 京⼦ 15:30-17:00 (90min) MiniShit101<ワークショップ> ⽇本アイ・ビー・エム株式会社 デベロッパーアドボケイト ⻄⼾ 京⼦ /⼩薗井 康志
  9. 本⽇の資料 本⽇の資料はこちらからPCにダウンロードお願いし ます。URLをクリックしたり、コマンドをコピペしたりでき ますので、サイトでみるのではなく、ダウンロードをお勧めし ます。 http://ibm.biz/dojo20191206doc

  10. 出席登録 こちらのURLにアクセスして、IBM Cloudにログイン お願いします。 アカウント未登録の⽅もこちらから登録お願いしま す。 https://ibm.biz/Bdz97Q

  11. 学習の⽬的とゴール ⽬的 Docker/Kubernetes/Openshift概要について理解する ゴール Minishiftを利⽤したアプリケーションを動かせるように なる

  12. 本⽇の説明順序 0. Minishift準備 1. What is Containers (コンテナ)? 2. What

    is Kubernetes? 3. What is OpenShift? 4. KubernetesとOpenShiftの違い 5. ワークショップ: Minishift101
  13. 0. Minishift準備 https://www.okd.io/minishift/ より MiniShiftは導⼊に⻑い待ち時間があるため、何はともあれ先に準備します︕︕︕

  14. 0-1. 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 より抜粋
  15. 0-2. Minishift セットアップ • Windows • http://ibm.biz/minishift101jp-win 「Minishift の実⾏」まで実施お願いします •

    Mac • http://ibm.biz/minishift101jp-setup • 「仮想化環境を構成する」はリンク先が英語ですが、 以下に⽇本語訳があります • Mac: https:ibm.biz/Bdz39E
  16. 1. What is Containers (コンテナ)? https://developer.ibm.com/jp/new-builders/containerization/

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

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

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

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

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

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

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

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

    ホストOS システム基盤 (オンプレミス) ホストOS コ ン テ ナ エ ン ジ ン App1 Bin/Lib s App2 Bin/Lib s App3 Bin/Lib s 「僕の環境では動いた」 問題が発⽣しない コ ン テ ナ エ ン ジ ン App3 Bin/Lib s
  25. コンテナのまとめ • 仮想マシン(VM)に⽐べてリソース効率がよい • ボータビリティーが⾼い • スケールアウトが容易 • 3段階のプロセスをコンテナのpushに使⽤することで、より アジャイルなDevOpsと継続的インテグレーションおよびデ

    リバリーが可能になる 動画をもう⼀度⾒たい⽅はこちら: • https://developer.ibm.com/jp/new-builders/containerization/ ⽂章での説明もあります
  26. 2. What is Kubernetes? https://developer.ibm.com/jp/new-builders/kubernetes/

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

  28. Kubernetesとは 28 コンテナーの運⽤実⾏と管理を⾏うオーケストレーションツール • コンテナーが⼤量になってくると管理しきれない部分をカバー • 複数のDockerホストの管理 • 死活監視 •

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

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

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

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

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

    アプリケーション (コンテナ) Kubernetes アプリケーション (コンテナ) Ubuntu / CentOS… Linux Kubernetes アプリケーション (コンテナ) コンテナ ランタイム Linux OS コンテナ オーケストレーション Kubernetesの標準機能 で構築したアプリケーション どちらでも 動作可能 RHEL / RHCOS コンテナ ランタイム OpenShiftのまとめ
  34. Red Hat OpenShift on IBM Cloud IBM Cloud™上のRedHat®OpenShift®は、⾼度にスケーラブルで信頼性の⾼いIBM Cloudプラットフォームで完全に管理されたOpenShiftクラスターを提供する包括的な サービスです。

    The WeatherCompany®で毎⽇2,500億のオンデマンド予測を維持す るKubernetesサービスに直接統合されています。
  35. 4. KubernetesとOpenShiftの違い

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

    実⾏状態のメトリックス監視とログ分析も提供 • 運⽤: • Ansible Playbookを使ってオートスケーリングが可能 • Security: • Project単位で簡単に管理可能 動画はこちら: • https://youtu.be/cTPFwXsM2po • 英語のみ
  37. Kubernetes and OpenShift: What's the Difference? https://youtu.be/cTPFwXsM2po

  38. 5. Minishift101 ワークショップ https://www.okd.io/minishift/ より

  39. 5. Minishift101 ワークショップ 5-1. IBM CloudでOpenShiftを使う 5-2. Minishiftセットアップ確認 5-3. Minishift

    ワークショップ
  40. 5-1. IBM CloudでOpenShiftを使う 1. まずはIBMにクラウドにログイン 本⽇は https://ibm.biz/Bdz97Q にアクセスして 右上の「ログイン」から ログインしてください

    通常は https://cloud.ibm.com/ からログイン可能です
  41. 5-1. IBM CloudでOpenShiftを使う 2. ダッシュボードから「カタログ」をクリック

  42. 5-1. IBM CloudでOpenShiftを使う 3. フィルターからライトをXをクリックして削除 __ ↑Xをクリックして ライトを削除

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

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

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

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

    IBM Demos (デモ動画サイト、英語): • Red Hat OpenShift on IBM Cloud
  47. 5-2. Minishift セットアップ確認 • Windows • http://ibm.biz/minishift101jp-win 「Minishift の実⾏」まで実施お願いします •

    Mac • http://ibm.biz/minishift101jp-setup • 「仮想化環境を構成する」はリンク先が英語ですが、 以下に⽇本語訳があります • Mac: https:ibm.biz/Bdz39E (0­2と同じです)
  48. 5-3. Minishift ワークショップ IBM Watson Visual Recognitionを使った node.jsの画像認識Webアプリ https://github.com/kyokonishito/watson-vr-node をMinishiftで実⾏する

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

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

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

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

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

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

  57. 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⾏です)
  58. 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 例
  59. 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⾏です)
  60. 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
  61. 2.8. ブラウザーでアプリケーションにアクセスします 2.6で取得したポート: 31202 2.7で取得したIPアドレス: 192.168.64.19 の 場合は http://192.168.64.19:31202/ にアクセスします。

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

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

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

  66. 66 twitter.com/KyokoNishito developer.ibm.com/jp/patterns/ IBM Watson Thank you

  67. None