新しいopenshiftのしくみを調べてみた

43
新しいOpenShiftのしくみを 調べてみた 22PaaS勉強会

Upload: kazuto-kusama

Post on 01-Jul-2015

2.945 views

Category:

Technology


9 download

DESCRIPTION

第22回 PaaS勉強会で発表した資料です

TRANSCRIPT

Page 1: 新しいOpenShiftのしくみを調べてみた

新しいOpenShiftのしくみを調べてみた第22回PaaS勉強会

Page 2: 新しいOpenShiftのしくみを調べてみた

@jacopen Kazuto Kusama

Page 3: 新しいOpenShiftのしくみを調べてみた

PaaSNTT CommunicationsCloudn

Page 4: 新しいOpenShiftのしくみを調べてみた

Based on

Page 5: 新しいOpenShiftのしくみを調べてみた

2012/06/21 第7回 Cloud Foundry輪読会

http://www.slideshare.net/jacopen/openshift-13407714

Page 6: 新しいOpenShiftのしくみを調べてみた

2013/08/23 第13回 Cloud Foundry輪読会

http://www.slideshare.net/jacopen/open-shift-25522848

Page 7: 新しいOpenShiftのしくみを調べてみた

日本で一番最初にOpenShiftの 勉強会をやったのは、

Cloud Foundry輪読会!

Page 8: 新しいOpenShiftのしくみを調べてみた

クラウドファウンドリーとオープンシフトゎ……

ズッ友だょ……!!

Page 9: 新しいOpenShiftのしくみを調べてみた

Kubernetes

Page 10: 新しいOpenShiftのしくみを調べてみた
Page 11: 新しいOpenShiftのしくみを調べてみた

Kubernetes

• Googleが開発したコンテナ管理ツール • 複数ホストに渡るコンテナの管理ができる • PaaSではなく、あくまでもScheduler

Page 12: 新しいOpenShiftのしくみを調べてみた

Software Design 2014年12月号にKubernetesの記事かきました

Page 13: 新しいOpenShiftのしくみを調べてみた

PaaSはデベロッパーのワークフローを助ける

Kubernetesには… • 書いたコードをDockerイメージにする仕組みが無い • チームコラボレーションの機能が無い。そもそも複数ユーザーで使えない

• ログ収集の機能が弱い • メトリクス収集機能が弱い

あくまでもSchedulerであり、PaaSではない。弱いところをカバーしたPaaSがあればいいのにな。

Page 14: 新しいOpenShiftのしくみを調べてみた

第20回の懇親会で

某氏「そういえば新しいOpenShiftは試しました?あれ、かなりKubernetesですよ」

ぼく「え、マジっすか。じゃあ次回やります」

Page 15: 新しいOpenShiftのしくみを調べてみた

というわけでやります

Page 16: 新しいOpenShiftのしくみを調べてみた

新しいOpenShift

!? V4 → V3?

Page 17: 新しいOpenShiftのしくみを調べてみた

OpenShift Origin Release 4

2.x Architecture https://github.com/openshift/origin-server

Page 18: 新しいOpenShiftのしくみを調べてみた

OPENSHIFT v3

Page 19: 新しいOpenShiftのしくみを調べてみた

OpenShift v3 Platform

• OpenShiftの3代目アーキテクチャ

• Docker, Kubernetes, Atomicを取り込んだ、まったく新しいアーキテクチャになった

• これまでのOriginとは別リポジトリで開発されている

• Golang!

https://github.com/openshift/origin

Page 20: 新しいOpenShiftのしくみを調べてみた

まだまだalpha

Page 21: 新しいOpenShiftのしくみを調べてみた

動かしてみよう

Page 22: 新しいOpenShiftのしくみを調べてみた

セットアップ

$ hack/build-go.sh #goの実行環境が必要

ソースからビルド

$ wget https://github.com/openshift/origin/releases/download/v0.1/openshift-origin-v0.1-deef796-linux-amd64.tar.gz

precompile済バイナリのダウンロード

or

Page 23: 新しいOpenShiftのしくみを調べてみた

セットアップ

$ openshift start

起動

これだけで、OpenShift / Kubernetes / etcdなど必要なものが全て立ち上がります。(バイナリ1個なのに・・・)

Page 24: 新しいOpenShiftのしくみを調べてみた

セットアップ

$ export OPENSHIFT_DEV_CLUSTER=true$ vagrant up

Vagrantを使う手も

Page 25: 新しいOpenShiftのしくみを調べてみた

DEMO

Page 26: 新しいOpenShiftのしくみを調べてみた

OpenShiftコマンド

今の所、openshiftのバイナリ1つでサーバーにもクライアントにもなる。

$ openshift start [master|node] #サーバーが起動する$ openshift kube #Kubernetesのkubecfg

Page 27: 新しいOpenShiftのしくみを調べてみた

かなりKubernetes

Page 28: 新しいOpenShiftのしくみを調べてみた

Kubernetesの構成

Proxy

docker

Kubelet

Container ContainerContainer

pod pod pod

Kubernetes Node (Minion)Kubernetes Master

API Server

Scheduler

Kube Controller

Replication Controller

etcd

Page 29: 新しいOpenShiftのしくみを調べてみた

OpenShiftの構成

Proxy

docker

Kubelet

Container ContainerContainer

pod pod pod

Kubernetes Node (Minion)Kubernetes Master

API Server

Scheduler

Kube Controller

Replication Controller

etcdOpenShift Master

API Server

Deployment Controller

Build Controller Kubernetes masterを

OpenShift masterがラップ

Page 30: 新しいOpenShiftのしくみを調べてみた

API(抜粋)

OpenShift API http://localhost:8080/osapi/v1beta1/builds http://localhost:8080/osapi/v1beta1/deployments http://localhost:8080/osapi/v1beta1/routes http://localhost:8080/osapi/v1beta1/projects http://localhost:8080/osapi/v1beta1/users http://localhost:8080/osapi/v1beta1/accessTokens

Kubernetes API http://localhost:8080/api/v1beta2/pods http://localhost:8080/api/v1beta2/services http://localhost:8080/api/v1beta2/replicationControllers

Page 31: 新しいOpenShiftのしくみを調べてみた

DEMO

Page 32: 新しいOpenShiftのしくみを調べてみた

概念

Kubernetesの概念はそのまま残ります

• Pod • Service • ReplicationController

Page 33: 新しいOpenShiftのしくみを調べてみた

概念

OpenShiftによって追加されるもの

• Build • Template • Deployment • Route • Project • User • Image/ImageRepository

Page 34: 新しいOpenShiftのしくみを調べてみた

全部解説すると時間がかかりすぎるので

Page 35: 新しいOpenShiftのしくみを調べてみた

Request Routing

Kubernetes (Scheduler)

Router Router State API

Router State

URLに応じて、振り先のコンテナを変えるリクエストルータ。ステートの追加・削除・変更を行うAPIも。

Page 36: 新しいOpenShiftのしくみを調べてみた

Image build

Kubernetes (Scheduler)

Router Router State API

Router State

Source Repo API Git Repositories

Image Builds Image Reposigories

2.xと同じように、Gitによるデプロイが可能。

コードからDocker Imageを作成(Image build)

Page 37: 新しいOpenShiftのしくみを調べてみた

Docker repository

Kubernetes (Scheduler)

Router Router State API

Router State

Source Repo API Git Repositories

Image Builds Image Reposigories

生成されたDocker Imageは、内部のDocker Repositoryに保存される。作ったイメージを公開もできるらしい

Page 38: 新しいOpenShiftのしくみを調べてみた

Multi tenancy

Kubernetes (Scheduler)

Router Router State API

Router State

Source Repo API Git Repositories

Image Builds Image Reposigories

複数ユーザーで使える機能(PaaSなので必須だよね!)

Account(User?),Project,Rolesなどの概念を持つ

Account Project

Role

Page 39: 新しいOpenShiftのしくみを調べてみた

Event

Kubernetes (Scheduler)

Router Router State API

Router State

Source Repo API Git Repositories

Image Builds Image Reposigories

クラスタ内の様々なイベント(ホストに繋がらない、ルータのエラー、nodeの削除等々)を収集。Policy Engineでアクションの規定などができる

Account Project

Role

Event aggregator API Event Bus

Policy Engine

Page 40: 新しいOpenShiftのしくみを調べてみた

Logging / Metrics

Kubernetes (Scheduler)

Router Router State API

Router State

Source Repo API Git Repositories

Image Builds Image Reposigories

コンテナのログ収集や、リソースのメトリクス収集の仕組みもできるようだ(journaldを使う)

Account Project

Role

Event aggregator API Event Bus

Policy EngineLogging

Resouce Usage Metrics Application Metrics

Page 41: 新しいOpenShiftのしくみを調べてみた

2.xのカートリッジはどうなるの?

Page 42: 新しいOpenShiftのしくみを調べてみた

OpenShift on OpenShift

OpenShiftで必要なコンポーネントは、OpenShiftと同じインフラで動き、管理される。Kubernetesが管理するコンテナとして各コンポーネントが動作する

⇒ PaaSを運用している身からすると、すごくいい考えだと思う。PaaSを提供するためのコンポーネント運用は結構大変

Page 43: 新しいOpenShiftのしくみを調べてみた

まとめ• OpenShift v3は、まだま始まったばかり。すぐに使えるというものではない

• Kubernetesをコアに据えるなど、上手くDockerの流れに乗ろうとしているなという印象

• Flynn や Deisと比べて、出来ることはあまり変わらないが、開発力が圧倒的なので最有力候補か?

• まだモノが出来上がっていなくて消化不良なので、継続して追っていきたい