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. 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
  2. 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<ワークショップ> ⽇本アイ・ビー・エム株式会社 デベロッパーアドボケイト ⻄⼾ 京⼦ /⼩薗井 康志
  3. 12.

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

    is Kubernetes? 3. What is OpenShift? 4. KubernetesとOpenShiftの違い 5. ワークショップ: Minishift101
  4. 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 より抜粋
  5. 15.

    0-2. Minishift セットアップ • Windows • http://ibm.biz/minishift101jp-win 「Minishift の実⾏」まで実施お願いします •

    Mac • http://ibm.biz/minishift101jp-setup • 「仮想化環境を構成する」はリンク先が英語ですが、 以下に⽇本語訳があります • Mac: https:ibm.biz/Bdz39E
  6. 23.

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

    コンテナー イメージ作成 イメージの 登録 開発者 アプリ実⾏ アプリ開発 3段階のプロセス
  7. 24.

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

    ホストOS システム基盤 (オンプレミス) ホストOS コ ン テ ナ エ ン ジ ン App1 Bin/Lib s App2 Bin/Lib s App3 Bin/Lib s 「僕の環境では動いた」 問題が発⽣しない コ ン テ ナ エ ン ジ ン App3 Bin/Lib s
  8. 28.

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

    スケジューリング • スケーリング • 障害時のリカバリー • アプリ実⾏に必要なインフラリソースを管理 • 永続的なストレージ • ネットワーク • クレデンシャル情報 etc… • 宣⾔的設定モデル • 「あるべき状態」を記述すると、それを実現し続けようとしてくれる • 障害時も⾃動で復旧作業を実施
  9. 30.

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

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

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

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

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

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

    5-2. Minishift セットアップ確認 • Windows • http://ibm.biz/minishift101jp-win 「Minishift の実⾏」まで実施お願いします •

    Mac • http://ibm.biz/minishift101jp-setup • 「仮想化環境を構成する」はリンク先が英語ですが、 以下に⽇本語訳があります • Mac: https:ibm.biz/Bdz39E (0­2と同じです)
  13. 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
  14. 50.

    Watson Visual Recognition (画像認識) 画像認識「⼀般種別」(General Tagging): • 事前学習済みの分類器の出⼒を返す 画像認識「カスタム」: •

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

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

    ocコマンドを実⾏する予定の 任意のフォルダに保存します。 ※コマンド操作に慣れてない⽅は、 デスクトップ以外の場所を推奨します。
  17. 55.

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

    編集後 置き換え後保存してエディタを閉じてください。 どこに保存したのかPATHがわかるようにしてください。
  18. 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⾏です)
  19. 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 例
  20. 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⾏です)
  21. 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
  22. 61.

    2.8. ブラウザーでアプリケーションにアクセスします 2.6で取得したポート: 31202 2.7で取得したIPアドレス: 192.168.64.19 の 場合は http://192.168.64.19:31202/ にアクセスします。

    (ご⾃分の値をお使いください) アプリケーションは表⽰できましたか? ボタンを押して動作確認してみましょう!
  23. 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
  24. 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
  25. 67.