Slide 1

Slide 1 text

IBM Developer Dojo OpenShift 101 ⼩薗井康志 (Yasushi Osonoi) Sr. Developer Advocate Developer Advocacy Tokyo Client Team, IBM @osonoi 萩野たいじ (Taiji Hagino) Sr. Developer Advocate Developer Advocacy Tokyo City Team, IBM @taiponrock #IBMDojo #OpenShiftWorldTour

Slide 2

Slide 2 text

⽬的 OpenShift概要について理解する ゴール OpenShift上にアプリをデプロイできるようになる このコースを学ぶ⽅の想定スキル コンテナ実⾏環境を初めて利⽤する⽅ 本セッションについて

Slide 3

Slide 3 text

IBM Cloudアカウント(無料)の取得 操作解説動画: https://ibm.biz/action1 事前準備がお済みでない⽅ IBM Cloud への登録はご⾃宅かスマートフォンのキャリア回線を使⽤して ⾏ってください ※同⼀のWiFi経由で複数⼈が同時に登録するとエラーとなる事があります https://ibm.biz/Bdqsq9

Slide 4

Slide 4 text

小薗井 康志 日本IBM Developer Advocacy Group, Client Developer Advocate ブログ: https://qiita.com/osonoi (Qiita) https://blogs.itmedia.co.jp/osonoi/ (IT Media) Twitter: @osonoi Facebook: @osonoi 珍しい名前なのでたいがい “osonoi”で発見できます。

Slide 5

Slide 5 text

萩野 たいじ(Taiji Hagino) Sr. Developer Advocate IBM Champion Program Regional Director IBM Node-RED/Node.js, Swift, Hyperledger Fabric, Functions 共著︓はじめてのNode-RED、DevRel Q&A 連載︓⽉間I/O Node-RED実践プログラミング @taiponrock フォロー、友達リクエストはお気軽に︕ @taiponrock #nodered #noderedjp

Slide 6

Slide 6 text

City Leader AKIRA ONISHI City Team TAIJI HAGINO KYOKO NISHITO AYA TOKURA NORIKO KATO Program Manager TOSHIO YAMASHITA Client Team YASUSHI OSONOI JUNKI SAGAWA DEVELOPER ADVOCATE in TOKYO Tokyo Team is a part of Worldwide Developer Advocate Teams!

Slide 7

Slide 7 text

⽬次 1. コンテナ 2. Kubernetes 3. OpenShift 4. ハンズオンワークショップ

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

https://youtu.be/1PPPUPcUkSs コンテナとは︖

Slide 10

Slide 10 text

コンテナは仮想マシン(VM)に⽐べてリソース効率がよい スケールアウトが簡単 VM(仮想マシン)とコンテナ VM(仮想マシン型) コンテナ型 システム基盤 ホストOS 仮想化層 ゲストOS ゲストOS ゲストOS Bin/Libs Bin/Libs Bin/Libs App1 App2 App3 システム基盤 ホストOS コンテナ・エンジン Bin/Libs Bin/Libs Bin/Libs App1 App2 App3

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

dockerを使った例 利⽤ Build Docker Runtime ソースや 構成情報 内部リポジトリー コンテナ・イメージ Pull run/exec dockerHub コンテナ dockerHub オンライン上にイメージを保管しておくコンテナレジストリの1種です。 様々なイメージの取得、⾃作イメージの保管ができます。 Dockerの操作は、提供されているDocker コマンド(CLI)を活⽤します。ユーザーは、元になる Docker imageをコンテナ化することで、アプリケーションとして利⽤することができます。

Slide 13

Slide 13 text

コンテナレジストリ Container Registryはコンテナ・イメージを保管しておくための領域であり、Docker Hubはそのう ちの⼀つです。Container Registryは様々な種類があり、環境・⽤途によって使い分けが可能です。 種類 概要 例 Docker Hub 様々なイメージが保管・公開されている。 公開されているイメージを取得したり、作成したイメー ジを保管したりすることができる。 料⾦を⽀払うことで、privateなレジストリとしても利⽤ 可能。 - クラウド・サービス 様々なクラウド・ベンダーなどが提供しているサービス。 各ユーザーのPrivateな領域として利⽤可能。 料⾦によって、サイズやアクセス回数の制限がある。 IBM Cloud Container Registry Amazon ECR GCP Container Registry Azure Container Registry OSS ユーザー固有の環境に独⾃で作成するRegistry。 環境・導⼊作業などは必要だが、基本的に⾃由に利⽤可 能。 NEXUS OCR (OpenShift Container Registry) また、各イメージはContainer Registryに作成された領域であるリポジトリ内に保存され、形式は下記の通りです。 <リポジトリ名>/<イメージ名>(:) (例: ibmcom/websphere-liberty → ibmcomリポジトリ内のwebsphere-libertyイメージ)

Slide 14

Slide 14 text

dockerコマンド操作 イメージをdocker hubからpull > docker image pull gihyodocker/echo:latest イメージをコンテナ化して実⾏ > docker container run -d -t -p 9000:8080 gihyodocker/echo:latest -d:バックグラウンドで実⾏ -p:ポートフォワーディング コンテナを停⽌ > docker container stop <コンテナID> コンテナを削除 > docker container rm <コンテナID> イメージを削除 > docker image rm <イメージID>

Slide 15

Slide 15 text

dockerコマンド集(主なもの) 概要 コマンド オプション イメージ取得 image pull {image}:{tag} イメージビルド image build {image}:{tag} イメージ⼀覧 image list タグの付与 image tag {image}:{tag} {image}:{新tag} イメージ削除 image rm {image id} コンテナ起動 container run {image}:{tag} -p {host port}:{container port} ポート公開 -d バックグラウンド起動 --rm 停⽌時にコンテナ削除 コンテナ⼀覧 ps -a 停⽌状態含む全てのコンテナを取得 コンテナ停⽌ container stop {container id} コンテナ削除 container rm {container id} コンテナ内でコマンド実⾏ container exec {container id} {command} -it インタラクティブに操作 ステータス確認 stats --no-stream ⼀回のみ表⽰

Slide 16

Slide 16 text

コンテナのポータビリティ ! アプリケーション稼働に必要な依存ファイルを パッケージングできる ! 物理サーバーに固定されない → 同じアーキテクチャの環境であれば ポータビリティが存在する 「僕の環境では動いた」 問題が発⽣しない システム基盤 (クラウド) ホストOS システム基盤 (オンプレミス) ホストOS コン テナ エン ジン App1 Bin/Libs App2 Bin/Libs App3 Bin/Libs コン テナ エン ジン App3 Bin/Libs

Slide 17

Slide 17 text

仮想マシン(VM)に⽐べてリソース効率がよい ポータビリティーが⾼い スケールアウトが容易 3段階のプロセスを使⽤することで、 よりアジャイルなDevOpsと継続的インテグレーション およびデリバリーが可能になる コンテナのまとめ

Slide 18

Slide 18 text

コンテナとコンテナオーケストレーションって︖ dockerだけじゃダメなの︖ 2. Kubernetes

Slide 19

Slide 19 text

https://youtu.be/zGXYRQ-8pU0 Kubernetesとは︖

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

Kubernetesで覚えておきたい概念 Pod Kubernetes における最⼩の管理単位 - Podの中には 1つ以上 の コンテナが含まれる - Pod単位でスケールイン・スケールアウトする - PodごとにIPアドレスがアサインされる Pod IP 10.1.206.34 10.1.206.128

Slide 23

Slide 23 text

Kubernetesで覚えておきたい概念 ReplicaSet Podを管理するための定義 - Podの必要稼働数を定義 - K8Sの Scheduler がどのノードにアサイン するかは - 考慮してくれる Pod IP 10.1.206.34 10.1.206.110 ノード ノード ReplicaSet - 必要数2 - 現⾏ 2

Slide 24

Slide 24 text

Kubernetesで覚えておきたい概念 Node Port Kubernetes外から TCP/IPでアク セスするための定義 - K8Sクラスタ内で⼀意となるポートがアサイン される - K8Sクラスタのどのノードからアクセスしても - 当該サービスにルーティングされる Pod IP 10.1.206.34 10.1.206.110 ノード ノード 30010 30010

Slide 25

Slide 25 text

Kubernetesで覚えておきたい概念 Deployment ワークロード定義体 - Pod - ReplicaSet - ClusterIPs - NodePort - (Ingress) Pod IP 10.1.206.34 10.1.206.110 Cluster IP 10.0.0.142 169.56.42.73 Ingress IP Deployment

Slide 26

Slide 26 text

コンテナーのオーケストレーション・ツール 理想状態を宣⾔すると、その状態を維持しようとする 3つの主要コンポーネント ! Pod ! Deployment ! Service Kubernetesのまとめ PodはDeploymentによって作成され、管理されます。 Deploymentによって作成されたPodへのアクセスは、 Serviceを使⽤することで容易になります。

Slide 27

Slide 27 text

なぜKubernetesではなくOpenShiftを使うのか︖ そもそも2つの違いは︖ 3. OpenShift

Slide 28

Slide 28 text

https://youtu.be/KTN_QBuDplo OpenShiftとは︖

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

OpenShiftのしくみ OpenShift 4 Platform ⚓ 統合と⾃動化 ⚓ シームレスなKubernetesデプロイ ⚓ インストールの⾃動化 ⚓ 1クリックでのプラットフォーム更新 ⚓ クラウドリソースのオートスケーリング

Slide 31

Slide 31 text

OpenShiftのしくみ 1. カタログからApacheを選んで、ウイザードに沿ってデプロイを指定します 2. OpenShiftは⾃動的にgithub上に格納されているテンプレート定義ファイル(json)を⼊⼿します 3. ⼊⼿したテンプレートの指定に沿って、Dockerhub上に公開されているApacheのコンテナイメージを pullします 4. ウイザードで指定された名前や環境などを加味してイメージをbuildのうえ、OpenShiftの内部レジスト リーにpushします 5. 引きつづき、OpenShiftはテンプレートの指⽰に沿ってイメージ・ストリームをpodにデプロイするよう K8s(のReplication Controller)に指⽰します 6. 最後にserviceやrouteを構成して外部ユーザーがアクセスできるようにします K8s イメージ・ストリーム ユーザー dockerHub Github等 内部レジストリー 利⽤ Build Deploy あなた integrated docker registry. コンテナイメージをビルドして実⾏(デプロイ)する、という点は Dockerの時と同じですね。ただしK8s基盤上で動かすことで コンテナの運⽤周りが⾶躍的に便利になってます。

Slide 32

Slide 32 text

Build Deploy K8s Runtime ソースや 構成情報 イメージ・ストリーム 利⽤ Build run/exec Docker Runtime ソースや 構成情報 内部レジストリー イメージ ユーザー Pull dockerHub Github等 内部レジストリー 利⽤ ← 素のKubernetesの守備範囲 → dockerとOpenShiftの処理の流れの対⽐

Slide 33

Slide 33 text

OpenShiftへの⼊⼒は様々なパターンがあります K8s Deploy Dockerhub等 Build docker レジストリ Dockerfile ソースコード (Java, js, Py..etc) Catalog template (JSON/YAML) S2I Build Github等 file clipboard (folder) 【Dockerfile,ソース,Templateの置き場所】 公開されているイメージをそのまま 取り込む ⾃作イメージを取り込む (OpenShift上でBuild) 既存イメージにソースを注 ⼊ 直接実⾏ カタログに登 録 DevOps Pipeline アプリやミドルウエアといった直接的なソー スではなく、アプリやミドルウエアを OpenShift上どう動かすか、という構成/定義 類を雛型として記述したものです OpenShiftへの様々な⼊⼒のパターン

Slide 34

Slide 34 text

OpenShiftコマンド操作 OpenShiftへログイン > oc login -u <ユーザーID> -p <パスワード> プロジェクト新規作成 > oc new-project <プロジェクト名> アプリケーション作成 > oc new-app <コンテナイメージ> アプリケーションを公開 > oc expose svc/<アプリケーション名> アプリケーションを削除 > oc delete all -lapp=<アプリケーション名> プロジェクトを削除 > oc delete project <プロジェクト名> OpenShiftからログアウト > oc logout

Slide 35

Slide 35 text

OpenShiftコマンド集(主なもの) 概要 コマンド オプション ログイン oc login -u developer -p hoge ログイン oc login -u developer -p hoge プロジェクトの作成 oc new-project プロジェクトの作成 oc new-project アプリケーションの作成 oc new-app アプリケーションの作成 oc new-app サービスの公開 oc expose svc/ サービスの公開 oc expose svc/ ステータス表⽰ oc status ステータス表⽰ oc status オブジェクトの詳細表⽰ oc get all オブジェクトの詳細表⽰ oc get all デプロイメント構成(dc) の詳細表⽰ oc describe dc open-liberty デプロイメント構成(dc)の 詳細表⽰ oc describe dc open-liberty アプリケーション⼀式の 削除 oc delete all -lapp= アプリケーション⼀式の削 除 oc delete all -lapp= プロジェクトの削除 oc delete project プロジェクトの削除 oc delete project プロジェクトのリスト oc projects プロジェクトのリスト oc projects ログアウト oc logout ログアウト oc logout ログイン oc login -u developer -p hoge ログイン oc login -u developer -p hoge プロジェクトの作成 oc new-project プロジェクトの作成 oc new-project

Slide 36

Slide 36 text

https://youtu.be/cTPFwXsM2po KubernetesとOpenShiftの違い

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

http://ibm.biz/OpenShiftWS20200319 4. ハンズオンワークショップ

Slide 40

Slide 40 text

• Node-RED on OpenShift Workshop starter (日本語版) https://qiita.com/yamachan360/items/786f70cb532443f38c16 • RedHat Japanのハンズオントレーニング ⽇本語訳 複数コンテナの連携: https://github.com/osonoi/minishift/tree/master/lab1 様々なデプロイメント⼿法: https://github.com/osonoi/minishift/tree/master/lab2 追加ハンズオンワークショップ

Slide 41

Slide 41 text

• 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 より抜粋 Appendix: Minishift とは

Slide 42

Slide 42 text

Setup 1 「仮想化環境を構成する」の⽇本語版はこちら」 • Windows: ibm.biz/Bdz39H • Mac: ibm.biz/Bdz39E Setup 2 MinishiftのインストールおよびOpenShiftサーバーを開始し、 Lab1から順番に進める。 ibm.biz/openshift1 Appendix: Minishift ワークショップ101

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

No content