IBM Dojo
OpenShift(Minishift) 入門
Yasushi Osonoi
Client Developer Advocate
本日のタイムテーブル
14:00-14:05
(5min)
オープニング
資料ダウンロード、出席登録
14:05-15:00
(55min)
What is Docker/Kubernetes/OpenShift ?
15:00-16:30
(120min)
MiniShit101<ワークショップ>
16:30-17:00
(30min)
クロージング
本日の資料
本日の資料はこちらからダウンロードできます。
http://ibm.biz/dojo20191105doc
学習の目的とゴール
目的
Docker/Kubernetes/Openshift概要について理解する
ゴール
Minishiftを利用したアプリケーションを動かせるように
なる
目次
1. What is Containers (コンテナ)?
2. What is Kubernetes?
3. What is OpenShift?
4. KubernetesとOpenShiftの違い
5. ワークショップ: OpenShift101
1. What is Containers (コンテナ)?
https://developer.ibm.com/jp/new-builders/containerization/
コンテナ以前の様子
コンテナ革命以前の港湾荷役
http://military.wikia.com/wiki/Battle_of_Pusan_Perimeter_logistic
s
大勢の作業員
倉庫に一時保管
物流の最大の
ボトルネック
https://www.jsanet.or.jp/seminar/text/seminar_177.html
物流コンテナによる革命
コンテナの発明者は、全米有数のトラック
運送会社のオーナーとなったマルコム・
マクリーン(Malcom P. McLean)
国際貨物輸送の分野に
海陸一貫輸送という大変革
1970年代には世界の主要航路のコンテナ
化がほぼ完了した。わずか10年程度でこれ
ほど急激な形態の変化が起こったのは海運
史上でも他に例がない。
https://en.wikipedia.org/wiki/Malcom_McLean
港湾荷役のボトルネックを解消
物流コストの削減とスピードアップ
コンテナ革命は業務改革
陸海一貫輸送
海上輸送
陸送(トラック) 陸送(鉄道)港湾荷役 港湾荷役
コンテナ船
いま、IT業界の
コンテナ革命が
始まる
What is Container (コンテナ)?
https://youtu.be/1PPPUPcUkSs
「仮想マシン(VM)」と「コンテナ」
コンテナは仮想マシン(VM)に比べてリソース効率がよい
スケールアウトが簡単
コンテナを使った開発の流れ
Dockerfileなど Docker
イメージなど
コンテナー
レジストリ
マニフェストで
コンテナ自体の
詳細を記述
開発者
コンテナー
イメージ作成
イメージの
登録
開発者
アプリ実行
アプリ開発
3段階のプロセス
コンテナーのポータビリティ
コンテナーのポータビリティ
•アプリケーション稼働に必要な依存ファイルを
パッケージングできる
•物理サーバーに固定されない
→ 同じアーキテクチャの環境であれば
ポータビリティが存在する
システム基盤
(クラウド)
ホストOS
システム基盤
(オンプレミス)
ホストOS
コ
ン
テ
ナ
エ
ン
ジ
ン
App1
Bin/Lib
s
App2
Bin/Lib
s
App3
Bin/Lib
s
「僕の環境では動いた」
問題が発生しない
コ
ン
テ
ナ
エ
ン
ジ
ン
App3
Bin/Lib
s
コンテナのまとめ
• 仮想マシン(VM)に比べてリソース効率がよい
• ボータビリティーが高い
• スケールアウトが容易
• 3段階のプロセスをコンテナのpushに使用することで、より
アジャイルなDevOpsと継続的インテグレーションおよびデ
リバリーが可能になる
動画をもう一度見たい方はこちら:
• https://developer.ibm.com/jp/new-builders/containerization/
文章での説明もあります
2. What is Kubernetes?
https://developer.ibm.com/jp/new-builders/kubernetes/
2. What is Kubernetes?
https://youtu.be/zGXYRQ-8pU0
Kubernetesとは
18
コンテナーの運用実行と管理を行うオーケストレーションツール
• コンテナーが大量になってくると管理しきれない部分をカバー
• 複数のDockerホストの管理
• 死活監視
• スケジューリング
• スケーリング
• 障害時のリカバリー
• アプリ実行に必要なインフラリソースを管理
• 永続的なストレージ
• ネットワーク
• クレデンシャル情報 etc…
• 宣言的設定モデル
• 「あるべき状態」を記述すると、それを実現し続けようとしてくれる
• 障害時も自動で復旧作業を実施
Kubernetesの代表的な機能
スケールアウト 負荷分散 バージョン管理
(ロールアウト)
ネットワーク管理
永続ストレージ管理
死活監視
自己復旧
CPU / Memory リソース管理
Kubernetesのまとめ
動画をもう一度見たい方はこちら:
• https://developer.ibm.com/jp/new-builders/kubernetes/
文章での説明もあります
• コンテナーのオーケストレーション・ツール
• 理想状態を宣言すると、その状態を維持しようとしてくれる
• 3つの主要コンポーネント
• Pod, Deployment, Service
• PodはDeploymentによって作成され、管理されます。
Deploymentによって作成されたPodへのアクセスは、
Serviceを使用することで容易になります。
3. What is OpenShift?
What is OpenShift?
https://youtu.be/KTN_QBuDplo
©︎ 2019 IBM Corporation
OpenShiftは、Kubernetesとの互換性を維持しながら、CICD機能を強化、開発者
に代わって、ビルド、リポジトリ登録、デプロイを自動実行します。
OPENSHIFT
機能拡張
OpenShift CICD利用
アプリケーション
(コンテナ)
Kubernetes
アプリケーション
(コンテナ)
Ubuntu / CentOS… Linux
Kubernetes
アプリケーション
(コンテナ)
コンテナ ランタイム
Linux OS
コンテナ
オーケストレーション
Kubernetesの標準機能
で構築したアプリケーション
どちらでも
動作可能
RHEL / RHCOS
コンテナ ランタイム
OpenShiftのまとめ
Red Hat OpenShift on IBM Cloud
IBM Cloud™上のRedHat®OpenShift®は、高度にスケーラブルで信頼性の高いIBMCloud
プラットフォームで完全に管理されたOpenShiftクラスターを提供する包括的なサー
ビスです。The WeatherCompany®で毎日2,500億のオンデマンド予測を維持する
Kubernetesサービスに直接統合されています。
4. KubernetesとOpenShiftの違い
Kubernetes and OpenShift:What's the Difference?
https://youtu.be/cTPFwXsM2po
KubernetesとOpenShiftの違い まとめ
• Deploy:
• ソースコードからコンテナ作成とデプロイまでの自動化
• Manage:
• Webコンソールとコマンドラインの両方から操作可能。
• 実行状態のメトリックス監視とログ分析も提供
• 運用:
• Ansible Playbookを使ってオートスケーリングが可能
• Security:
• Project単位で簡単に管理可能
動画をもう一度見たい方はこちら:
• https://youtu.be/cTPFwXsM2po
• 英語のみ
5. Minishift101 ワークショップ
https://www.okd.io/minishift/ より
5. Minishift101 ワークショップ
5-1. IBM CloudでOpenShiftを使う
5-2. Minishift とは
5-3. Minishift101 –ハンズオン–
5-4. 追加ハンズオン
5-1. IBM CloudでOpenShiftを使う
1. まずはIBMにクラウドにログイン
本日は
https://ibm.biz/BdzLJq
にアクセスして
右上の「ログイン」から
ログインしてください
通常は
https://cloud.ibm.com/
からログイン可能です
5-1. IBM CloudでOpenShiftを使う
2. ダッシュボードから「カタログ」をクリック
5-1. IBM CloudでOpenShiftを使う
3. 右上の検索フィールドからlabel: ライトを削除
↑label: ライトを削除
5-1. IBM CloudでOpenShiftを使う
4. 左側のカテゴリーから「コンテナ」をクリック、
「Red Hat OpenShift Cluster」をクリック
5-1. IBM CloudでOpenShiftを使う
5. Red Hat OpenShift Cluster作成画面が表示されます。
ただしライトアカウントでは作成できないため、ライトアカウントの場合
は「アップグレード」ボタンが表示されます。
5-1. IBM CloudでOpenShiftを使う
6. 「 Red Hat OpenShift Cluster 」を作成します。動画で見てみましょう:
https://youtu.be/UJ2frartWFk
5-1. IBM CloudでOpenShiftを使う
補足情報:
3分でわかるIBM Cloudシリーズ(動画)
• OpenShiftクラスターに対してocコマンドでアクセスする
• OpenShiftクラスターにHelloWorldアプリをデプロイしてみよう
IBM Demos (デモ動画サイト、英語):
• Red Hat OpenShift on IBM Cloud
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 より抜粋
5-3. Minishift101 –ハンズオン–
http://ibm.biz/minishift101jp
• Setup
• 「仮想化環境を構成する」の日本語版はこちら」
• Windows: ibm.biz/Bdz39H
• Mac: ibm.biz/Bdz39E
• Lab 1 OpenShiftプロジェクトの作成
• Lab 2 OpenShiftアプリケーションの作成 (ここは読むだけです)
• Lab 3 OpenShiftアプリケーションの管理
• Lab 4 OpenShiftアプリケーションの公開
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
5-5. 補足
• Minishiftの停止コマンド
$ minishift stop
• Minishiftの起動、初期メモリ・ディスクの制限
$ minishift start --memory 2G --disk-size 10G --vm-driver <drivername>
• Minishift VM削除(VM再作成したい場合などに、、、)
$ minishift delete
IBM Code Patterns
https://ibm.biz/ibmcodejp
解説 + デモ動画 + ソースコードが揃ったアプリ開発パターン集
開発者向けサイト IBM Developer
ibm.biz/IBMDevJP
最新情報やスキルアップに役立つ6,000を超える技術記事を提供
Openshift 20191108

Openshift 20191108

Editor's Notes

  • #6 アプリのデプロイおよび表示 https://cloud.ibm.com/docs/cloud-foundry?topic=cloud-foundry-deploy_apps#deploy_apps 動画 https://www.youtube.com/watch?v=Ms4i_FLaFWk&list=PLzpeuWUENMK0pjqg9STKgub2EiVvpWeoF CLI ヒント: Cloud Foundry アプリケーションおよびサービスを管理している場合 - 'ibmcloud target --cf' を使用して Cloud Foundry 組織/スペースを対話式にターゲットにするか、'ibmcloud target --cf-api ENDPOINT -o ORG -s SPACE' を使用して組織/スペースをターゲットにします。 - 現行の IBM Cloud CLI コンテキストを使用して Cloud Foundry CLI を実行する場合は、'ibmcloud cf' を使用します。
  • #7 アプリのデプロイおよび表示 https://cloud.ibm.com/docs/cloud-foundry?topic=cloud-foundry-deploy_apps#deploy_apps 動画 https://www.youtube.com/watch?v=Ms4i_FLaFWk&list=PLzpeuWUENMK0pjqg9STKgub2EiVvpWeoF CLI ヒント: Cloud Foundry アプリケーションおよびサービスを管理している場合 - 'ibmcloud target --cf' を使用して Cloud Foundry 組織/スペースを対話式にターゲットにするか、'ibmcloud target --cf-api ENDPOINT -o ORG -s SPACE' を使用して組織/スペースをターゲットにします。 - 現行の IBM Cloud CLI コンテキストを使用して Cloud Foundry CLI を実行する場合は、'ibmcloud cf' を使用します。
  • #13 OSレベルでの仮想化 Host OSのカーネルをすべてのコンテナが共有 その上でプロセスとして動かす
  • #17 アプリのデプロイおよび表示 https://cloud.ibm.com/docs/cloud-foundry?topic=cloud-foundry-deploy_apps#deploy_apps 動画 https://www.youtube.com/watch?v=Ms4i_FLaFWk&list=PLzpeuWUENMK0pjqg9STKgub2EiVvpWeoF CLI ヒント: Cloud Foundry アプリケーションおよびサービスを管理している場合 - 'ibmcloud target --cf' を使用して Cloud Foundry 組織/スペースを対話式にターゲットにするか、'ibmcloud target --cf-api ENDPOINT -o ORG -s SPACE' を使用して組織/スペースをターゲットにします。 - 現行の IBM Cloud CLI コンテキストを使用して Cloud Foundry CLI を実行する場合は、'ibmcloud cf' を使用します。
  • #22 アプリのデプロイおよび表示 https://cloud.ibm.com/docs/cloud-foundry?topic=cloud-foundry-deploy_apps#deploy_apps 動画 https://www.youtube.com/watch?v=Ms4i_FLaFWk&list=PLzpeuWUENMK0pjqg9STKgub2EiVvpWeoF CLI ヒント: Cloud Foundry アプリケーションおよびサービスを管理している場合 - 'ibmcloud target --cf' を使用して Cloud Foundry 組織/スペースを対話式にターゲットにするか、'ibmcloud target --cf-api ENDPOINT -o ORG -s SPACE' を使用して組織/スペースをターゲットにします。 - 現行の IBM Cloud CLI コンテキストを使用して Cloud Foundry CLI を実行する場合は、'ibmcloud cf' を使用します。
  • #26 アプリのデプロイおよび表示 https://cloud.ibm.com/docs/cloud-foundry?topic=cloud-foundry-deploy_apps#deploy_apps 動画 https://www.youtube.com/watch?v=Ms4i_FLaFWk&list=PLzpeuWUENMK0pjqg9STKgub2EiVvpWeoF CLI ヒント: Cloud Foundry アプリケーションおよびサービスを管理している場合 - 'ibmcloud target --cf' を使用して Cloud Foundry 組織/スペースを対話式にターゲットにするか、'ibmcloud target --cf-api ENDPOINT -o ORG -s SPACE' を使用して組織/スペースをターゲットにします。 - 現行の IBM Cloud CLI コンテキストを使用して Cloud Foundry CLI を実行する場合は、'ibmcloud cf' を使用します。