Slide 1

Slide 1 text

http://ibm.biz/os-ws-01 本⽇の資料

Slide 2

Slide 2 text

IBM Developer Dojo OpenShift 101 萩野たいじ (Taiji Hagino) Customer Success Manager / Developer Advocate Technology, IBM @taiponrock #IBMDojo #OpenShiftWorldTour

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

萩野たいじ (Taiji Hagino) Customer Success Manager | Developer Advocate IBM Champion Program Japan Director IBM 特別⾮常勤講師 筑波⼤学 @taiponrock お気軽にフォローください! まもなく発売予定︓ Practical Node-RED Programing By Packt Publishing 元美容師で元⾳楽家。ソフトウェアエンジニアへ転⾝後、有限会社ア キュレートシステムを起業。その後、商社系SIerでのテクニカルエバ ンジェリスト経験を経て、IBM GlobalチームのDeveloper Advocate として DevRel(Developer Relations)を推進。現在はIBMの Customer Success Managerとして活動中。 著書 『開発者向けマーケティング DevRel Q&A』(インプレスR&D) 『はじめてのNode-RED』『Node-RED活⽤マニュアル』(⼯学社)など。

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 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 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 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 13

Slide 13 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 14

Slide 14 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 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

Kubernetesで覚えておきたい概念 Deployment PodやReplicaSetを管理するための オブジェクト - 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 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 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 30

Slide 30 text

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

Slide 31

Slide 31 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 32

Slide 32 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 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

No content

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

IBMが提供するOpenShiftの⼆つのスタイル

Slide 38

Slide 38 text

マネージドサービスのOpenShift ROKSは、業界をリードする商⽤コンテナ管理基 盤であるRed Hat OpenShiftのマネージド・サービ スです。ROKSを使うことで、お客様はOpenShift を⽤いたインフラの構築や維持、運⽤、および技 術習得の負担を減らし、ビジネス競争⼒の源泉と なるアプリケーションの開発と管理に専念できる ようになります。 Red Hat OpenShift on IBM Cloud (ROKS)

Slide 39

Slide 39 text

オンプレミスからIBM Cloud、さらには他社のパブリッククラウドまで、OpenShiftが動く環境ならどこでも使 えるアプリケーション開発/実⾏基盤です。 IBM Cloud Paks OpenShiftが動く環境ならどこでも使える 新規販売終了 後継サービスは WebSphere Hybrid Edition

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

No content