Upload
etsuji-nakai
View
2.012
Download
3
Embed Size (px)
Citation preview
Exploring the Philosophy behindDocker/Kubernetes/OpenShift〜Docker/Kubernetes/OpenShiftの「心」を考えてみる
レッドハット株式会社
中井悦司 / Etsuji NakaiSenior Solution Architect
and Cloud Evangelist
v1.1 2016/05/10
2
Exploring the Philosophy behindDocker/Kubernetes/OpenShift
Contents
Dockerが生まれた背景から読み解くDockerの「心」 Googleの公開文書から読み解くKubernetesの「心」 PaaSのユースケースから読み解くOpenShiftの「心」 まとめ
Dockerが生まれた背景から読み解くDockerの「心」
4
Exploring the Philosophy behindDocker/Kubernetes/OpenShift
Dockerが提供する基本機能
Dockerfile
① Dockerイメージを自動作成
OSイメージ
アプリケーションライブラリー
アプリケーションフレームワーク
イメージの作成手順を記載
Dockerイメージ
OS上にインストール可能なものはすべてイメージ化可能
② Dockerイメージを保存・公開
③ Dockerサーバーに イメージを配布・実行
5
Exploring the Philosophy behindDocker/Kubernetes/OpenShift
History
2011年 米dotCloud社がパブリックのPaaSサービスを提供開始 2013年 dotCloudのコア技術を「Docker」として公開 2014年 dotCloud社は、Docker, Inc.に社名を変更して、Dockerを
活用したサービス、製品にビジネスを切り替えることを表明 (*)
(*) dotCloudのPaaSサービスは、米cloudControl社が事業を引き継いでサービスを提供中 https://www.dotcloud.com/about.html
6
Exploring the Philosophy behindDocker/Kubernetes/OpenShift
クラウドサービスとしてのPaaS環境の課題 (1)
PaaSのメリット⇒ 実行環境の構築・管理に手間をかけず、アプリケーション開発に集中
アプリケーション実行環境(フレームワーク/ライブラリー)
サーバー/OS
開発したコードをクラウドにデプロイ
アプリケーションプログラム
7
Exploring the Philosophy behindDocker/Kubernetes/OpenShift
アプリケーション実行環境(フレームワーク/ライブラリー)
サーバー/OS
アプリケーションプログラム
クラウドサービスとしてのPaaS環境の課題 (2)
アプリケーションのコードと実行環境は、多くの場合、密結合しており、「ありもの」の実行環境だけでは、不便が生じることも多い
「悪魔は細部に宿る」
・使いたいフレームワークが無い・必要なライブラリーが不足・ライブラリーバージョンの不整合・etc...
8
Exploring the Philosophy behindDocker/Kubernetes/OpenShift
dotCloudが実行環境のメンテナンスに用意した仕組み dotCloudは、クラウド内部の仕組みとして、アプリケーションの実行環
境を自動構築して「Dockerイメージ」に固める技術を開発– さらに、クラウド以外の環境でも利用できるようにオープンソースとして公開
Dockerサービス
サーバー/OS
アプリケーションプログラム
さまざまな実行環境をDockerイメージとして
作成・メンテナンス
Dockerイメージ
9
Exploring the Philosophy behindDocker/Kubernetes/OpenShift
DevOpsの課題は開発と運用の「プロセスの断絶」
運用
変化が激しくて内容を伝えきれない
受け入れテストの時間が足りない
内容が分からないから運用手順書が更新できない
サービスを止めずに更新する方法が分からない
開発環境と本番環境の違いが不明でデプロイ時に何がおきるが分からない
「越えられない壁?」
設計
要件定義
テスト
コ ディング
ー
10
Exploring the Philosophy behindDocker/Kubernetes/OpenShift
Dockerの「心」とは? アプリケーション実行環境のイメージ化
– アプリケーション開発者が責任を持って「確実に動く環境」を用意する– 本番環境へのデプロイを別手順で実施しない
アプリケーションのポータビリティ– Dockerデーモンがある環境ならどこでも実行可能– アプリケーションに合わせたサーバー/OS環境の準備を個別に実施しない
Dev(アプリ)とOps(インフラ)の境界を明確にすることでDevOpsをよりスムーズに実現
Dev視点
Ops視点
Googleの公開文書から読み解くKubernetesの「心」
12
Exploring the Philosophy behindDocker/Kubernetes/OpenShift
元ネタ Large-scale cluster management at Google with Borg
– http://research.google.com/pubs/pub43438.html
Borg, Omega, and Kubernetes– http://research.google.com/pubs/pub44843.html
おすすめ
13
Exploring the Philosophy behindDocker/Kubernetes/OpenShift
Application Oriented Infrastructure 「コンテナによる隔離と依存性の最小化は、グーグル社内で非常
に効果的であることがわかったので、グーグルの社内インフラでは、唯一コンテナだけを利用できるようにした」
「個々のサーバーではなく、コンテナを管理するAPIを用意することで、データセンターの『プライマリーキー』をサーバーからアプリケーションへ変化させた」
– アプリケーション開発者、および、運用担当者は、個々のサーバーやOSの設定を気にする必要がなくなった。
– インフラチームは、実行中のアプリケーション、あるいは、その開発者に大きな影響を与えることなくハードウェアやOSの更新を実施できるようになった。
– リソースのモニタリングをサーバーではなく、アプリケーション単位で実施するように変わり、アプリケーション監視や問題判別の精度が向上した。
⇒ 個々のハードウェアやOSの違いをアプリケーション開発者に意識させず、 「1つのコンピューターであるかのように利用可能にした」
14
Exploring the Philosophy behindDocker/Kubernetes/OpenShift
サーバーの境界を意識しないアプリケーションデプロイ
コンテナの配置先を自動的に振り分ける仕組みを用いて、複数ホストを「1つのコンピューティングリソース」として活用します。
アプリケーションを機能単位に分割してコンテナ化することで、さらなるメリットが得られます。
– 必要な機能を負荷に応じてオートスケールします。– 機能単位でコンテナを入れ替えることにより、稼働中のアプリケーションの動的な機能
変更が可能になります。
Dockerホスト Dockerホスト Dockerホスト ・・・
複数ホストを束ねて「1つのコンピュータ」として活用
マイクロサービス化アプリケーション
PaaSのユースケースから読み解くOpenShiftの「心」
16
Exploring the Philosophy behindDocker/Kubernetes/OpenShift
サーバー/仮想マシン
Docker
サーバー/仮想マシン
Docker
Kubernetes
DevOps環境
・・・
実行リソース提供
コンテナー管理
複数サーバーに跨るオーケストレーション
UI、モニタリング、イメージ作成ワークフロー
etc.
RHEL7
OpenShift v3
OpenShift v3:DockerによるDevOps環境を実現
・・・
・・・
OpenShift v3は、Docker/Kubernetesをコアコンポーネントとして、インテグレートされたDevOps環境を提供します。
17
Exploring the Philosophy behindDocker/Kubernetes/OpenShift
OpenShiftが提供する主な追加機能
Dockerイメージのバージョン管理– イメージストリームとイメージビルドシステム– 「開発環境」そのものを開発可能に
同一の開発環境のクラウド上への配布– テンプレート機能–それぞれの開発者に「自分専用」の開発/検証環境を提供
マルチテナントでの利用– プロジェクト単位でのネームスペースの分割– 開発機能(ブランチ)単位で独立した開発/検証環境を提供
サーバーの境界を意識しないコンテナのデプロイ– Kubernetesによるコンテナのオーケストレーション–マイクロサービス型アプリケーションのDevOps環境を実現
18
Exploring the Philosophy behindDocker/Kubernetes/OpenShift
従来のPaaSの利用形態
アプリ開発者
開発環境テンプレート
新しいコードをPushすると開発・テスト環境に展開してビルド
開発したコードの稼働確認
19
Exploring the Philosophy behindDocker/Kubernetes/OpenShift
従来のPaaSの利用形態
アプリ開発者
開発環境テンプレートテンプレートそのものの
メンテナンスはどうする?開発中に開発環境の
アップデートは可能?
開発が終わったアプリはどうやって本番展開する?
20
Exploring the Philosophy behindDocker/Kubernetes/OpenShift
OpenShiftにおける役割分担
アプリ開発者
開発環境構成テンプレート
テンプレート管理者公式RHELイメージ
Dockerfile
テスト担当者
開発環境イメージ
テスト環境構成テンプレート
開発中アプリイメージ
ソースコード
動作確認
コード開発
テスト用デプロイ環境
動作確認
本番環境構成テンプレート
開発用デプロイ環境本番用デプロイ環境
開発済みアプリイメージ
テスト済みアプリイメージ
リリース担当者
21
Exploring the Philosophy behindDocker/Kubernetes/OpenShift
テンプレートとGUIの組み合わせによるPaaSの提供
テンプレート機能とGUIを組み合わせることで、アプリケーション開発者には、従来型の「PaaS」環境として見せることができます。
アプリケーション開発者はコードの開発のみに集中
まとめ
23
Exploring the Philosophy behindDocker/Kubernetes/OpenShift
今後の方向性 コンテナ化とマイクロサービス化は、アプリケーションの特性に応じた併用が可
能だと考えます。
–複数サービスの共通機能(ある程度固定化した機能)は、コンテナ化でSaaS的に提供– サービス特有の機能(頻繁な変更が求められる部分)は、マイクロサービス化して
OpenShiftで開発・実行– いずれの場合もアプリケーションとインフラ環境の分離性を高めることで、クラウド間
での環境移行は圧倒的に容易
OpenStack
仮想マシン ・・・
・・・
アプリケーションのコンテナ化で本番デプロイを安全・迅速に
OpenStack
ベアメタルサーバー
ベアメタルサーバー ・・・
アプリケーションのマイクロサービス化でオートスケール、動的機能拡張を実現
仮想マシン
仮想マシン
Dockerによるコンテナ化OpenShiftによるマイクロサービス化
EMPOWER PEOPLE,
EMPOWER ENTERPRISE,
OPEN INNOVATION.