狠狠撸

狠狠撸Share a Scribd company logo
? Hitachi, Ltd. 2016. All rights reserved.
Rancher による社内向けテナントサービス基盤
2017/3/15
Keita Shimada
Hitachi, Ltd.
はじめに
?本資料に記載されている会社名、商品、
サービス名等は各社の登録商標または商
標です。
?本資料中は、”??”、”??”は明記してお
りませんのでご了承下さい。
1
自己紹介
?名前:嶋田敬太
?経歴:2009年に日立製作所に入所
? サーバ運用管理ソフトの機能検討
? ストレージ運用管理ソフトの機能検討
? モバイルアプリ生産性向上についての検討
?DevOpsの実践をサポートするサービスの検討
& 社内クラウドでのOSSの活用実践
2
現在の仕事
RANCHERについての印象
?きっかけ
?社内のOSS調査の中でRancher担
当を拝命。
?Rancherの第一印象
?UIがカッコイイ?
?Rancher 自身の立ち上げが簡単?
3
RANCHERについての印象
?更に使っていくと…
?カタログでサービス(スタック)を簡単にデ
プロイして試せるので便利。
?ITインフラのことはあまり意識したくない
が、自分のサービスが何処で動いているか
全くわからないのも不安。。。というよう
なユーザでも簡単にUIで管理ができる。
4
RANCHERで何をしたいか
?社内の開発者や開発グループに、社内クラウド上で
OSSを積極的に活用してもらい、知識やノ
ウハウを蓄積したり、新しいサービスを創
生する場を作りたい。
?そのために、Rancherで開発者が、簡単に、素
早く、どんどんサービスを試したり、そ
れを活用した自身のサービスを作成/提供
できる基盤を提供したい。
5
理想とする使われ方
簡単に、素早く、どんどん
サービスを立ち上げて、
それを他の人に使ってもらって
フィードバックをもらって、
サービスを創生/改良する。
6
やりたいこと/要件
? テナント提供
? 開発者や開発グループにテナント単位でITリソースを提供し、そのテ
ナント内でサービスを立ち上げて利用できる。
? サービス公開
? テナントで立ち上げたサービスに社内クラウドユーザが利用できるよ
うに公開できる。
? テンプレートのシェア
? テナントで作ったサービスをテンプレートとして他のテナントとシェ
アできるようにする。
? 既存サービスとの連携
? 社内のクラウド上ですでに提供されているOSSサービスと連携する。
? 社内認証基盤との連携
? テナントのログイン処理等には、社内認証基盤(LDAP)を利用する。
7
External network
RANCHERによるテナントサービス基盤
8
Catalogs(Git repositories)
Corp. Catalogs User Catalogs
Tenant(Environment)
Rancher Sever
(Container)
Docker host Docker host
???
???
Stack
Stack
???
User Catalog
User Catalog
Catalog
Catalog
Corp.
LDAP
Service
User
Portal
Registries
User
Registry
Crop.
Registry
LB/Reverse proxy
???
Tenant users
Infra. administrators
???
テナント提供
サービス公開
テンプレートの
シェア
既存サービスと
の連携
Chat/GitLab…
社内認証基盤と
の連携
今回紹介する取り組み
? テナント提供
? 開発者や開発グループにテナント単位でITリソースを提供し、そのテナント内でサービ
スを立ち上げて利用できる。
?サービス公開
?テナントで立ち上げたサービスに社内クラウド
ユーザが利用できるように公開できる。
? テンプレートのシェア
? テナントで作ったサービスをテンプレートとして他のテナントとシェアできるようにす
る。
? 既存サービスとの連携
? 社内のクラウド上ですでに提供されているOSSサービスと連携する。
? 社内認証基盤との連携
? テナントのログイン処理等には、社内認証基盤(LDAP)を利用する。
9
なぜ、要件の中でも
サービス公開のところを
取り上げる?
10
理想とする使われ方
簡単に、素早く、どんどん
サービスを立ち上げて、
それを他の人に使ってもらって
フィードバックをもらって、
サービスを創生/改良する。
11
現状の課題
?Rancherを使えば簡単に、素早く、どんどん
サービスの起動やデプロイはできる!
????しかし、そのままではRancher上の
サービスを社内で使いこなすのは難しい。
?ポート制限
?ドメイン利用 …
12
?手元のPCから社内クラウド上に立ち上げたサービス
を利用する際は、情シス部門が解放しているポート
を利用する必要がある。
現状の課題(ポート制限)
13
Stack #1(172.10.10.1:80)
Stack #2(172.10.10.1:81)
たくさんサービ
スを立ち上げた
がポートが…
Dockerホストを ま
た立てる(IPを別にし
て同じポート番号使
う)か…
情シスにお願いしてポー
ト開けてもらうほどでも
…セキュリティ的にも厳
しいしね。
Corp. Cloud
???
x.x.x.x: 80->Allowed
x.x.x.x: 81->Refused
Rancherに起因する問題というよりもDockerコンテナ
を利用するようになったから顕著になった。
現状の課題(ドメイン利用)
?DNSへのドメイン登録をしたい???しかし、本格
稼働するかまだ分からないサービスを立ち上げる度
に情シス部門にお願いするのは???
14
Stack #1(172.10.10.1:80)
Stack #2(172.10.10.2:81)
Corp. Cloud
tenant1.example.com<->172.10.10.1
tenant2.example.com<->172.10.10.2
②ドメイン
登録
DNS server テナントユーザ
情シスDNS
サーバ管理者
①ドメイン
登録の
お願い
理想と現状のギャップ
?Rancherを社内で使いこなすために、理想と
現実のギャップの原因となるポート制限、ド
メインサービス利用 etc.の問題を解決したい。
15
解決のためのアプローチ
?ポート制限
ー>使えるポートが少ないが、安易にポートを開くことはしたくな
い。
ー>使えるポートを複数サービス(コンテナ)で使えるようにする。
ー>そのためにリバースプロキシ使ってみよう!
?ドメイン利用
ー>ドメインを自由に設定したいが、DNSサーバの設定を騙取する
権限がない。毎回、管理者に頼むのが大変。
ー>テナントにサブドメインを与えて、サブドメイン以下の設定は
自由に設定できるようにしよう!
ー>そのためにリバースプロキシ使ってみよう!
16
TRAEFIK
HTTPS://TRAEFIK.IO
?モダンHTTPリバースプロキシ/ロードバラ
ンサ
?ルーティングの情報などの設定情報を動的
に変更することが可能。
?設定情報を管理するためにバックエンド
サービスと連携可能。連携可能なバックエ
ンドサービスは複数存在
(Consul,Zookeeper,etcd etc.)。
17
なぜTRAEFIK?
?Rancher Cattle向けCommunity
CatalogにExperimental版が提供され
ており、Rancher向けに調整されていた
から。
?UIで設定が簡単に確認できる。
?デファクトとなっているもの以外を試し
てみたかった。
18Traefikカタログ
TRAEFIK(RANCHERカタログ版)の設定
?traefikと連携させたいDockerホストにtraefik
用のラベルをつける。
?スタックのdocker-compose.ymlにtraefik用
のラベルを設定する。
?上記の設定を行った上でスタックを稼働させ
ると以下のパスでtraefik経由でのスタックへ
のアクセスが可能になる。
19
http://${サービス名}.${スタック名}.${traefikのドメイン
名}:${httpポート番号}
DOCKERホストへのラベル付け
20
? traefikと連携させたい
Dockerホストに以下ラベル
を付ける。
traefik_lb = true
? ラベルをつけられたDocker
ホスト上にtraefikのコンテ
ナが配備され、そのDokcer
ホストはtraefik用の管理下
に入る。
スタックのDOCKER-COMPOSE.YML
への設定
21
myservice:
image: sample-image
ports:
- "80:80"
labels:
//traefik経由で公開するポート
traefik.port: ‘8080’
//traefikのドメイン名
traefik.domain: tenant1.example.com
//traefik経由で公開するか否かと公開するURLの形式の選択
traefik.enable: 'true'
設定追加箇所
? スタックを配備する前にdocker-
compose.ymlにtraefik用のラベル
を追加する。
? 本スライドで紹介したのは設定項目
のごく一部。多くの設定項目が存在
し、詳細な設定が可能…なはず。
TRAEFIK UI
(FOR INFRA. ADMIN/TENANT USERS)
22
テナントサービスとして提供
するためには
? traefik Catalogでルーティングはできた。
? しかし、残念ならがらtraefikカタログが提供できるの
は、一つのテナント(Environment)内でのリバースプ
ロキシ/ロードバランサ機能。
? 複数テナントへのサブドメインの割り当てもやりたい。
? あと、docker-compose.ymlでラベル設定する
から、スタックのデプロイ後に設定を変える方法
ができるか不明…(調査要)
23
Mgmt. tenant
Tenant #1
External network
テナント向けNW構成
24
Infra. admin.
LB/Reverse proxy
Tenant #2
LB/Reverse proxy
Stack #1
Stack #2
???
Tenant#1 users
LB/Reverse proxy
? Rancherサービスの管理者(Infra. admin.)がテナ
ント向けにテナントドメイン(サブドメイン)を割り
当てる。
? テナントユーザはテナントに設置したtraefikのサー
ビスと割り当てられたサブドメインを使って、テナ
ント内のStackにアクセスさせる。
xxx.example.com
xxx.tenant1.exam
ple.com
テナントドメ
インを提供を
します。あと
はご自由に。
テナントドメイ
ンから先は自由
に使います。
Mgmt. tenant
Tenant #1
External network
テナント向けNW構成
25
Infra. admin.
LB/Reverse proxy
(traefik Catalog)
Tenant #2
LB/Reverse proxy
Stack #1
Stack #2
???
Tenant#1 users
LB/Reverse proxy
xxx.example.com
ここはtraefikカタログ
でできる世界
各テナントに動的に
サブドメインを割り当
てるサービスが欲しい
ここはtraefikカタログ
でできる世界
xxx.tenant1.exam
ple.com
CONSUL
HTTPS://WWW.CONSUL.IO/
?サービスディスカバリ、サービスヘルス
チェック、KVSサービスを提供するツー
ル群。
?今回はtraefikの設定情報を動的に変更す
るためにKVSサービスを使う。
?curlなどで設定項目を動的に変更できる
点がgood?
26
TRAEFIK+CONSULの構築と設定
?ごめんなさい。省略します…
? 以下のサイトを参考にさせていただきました。こちらを
参考にすれば構築はできるはず。
? “気になるインテリジェント負荷分散traefikを試してみる“
? http://www.casleyconsulting.co.jp/blog-
engineer/%E3%82%B5%E3%83%BC%E3%83%90%E3%82%A4%E3%83
%B3%E3%83%95%E3%83%A9/%E6%B0%97%E3%81%AB%E3%81%AA
%E3%82%8B-
%E3%82%A4%E3%83%B3%E3%83%86%E3%83%AA%E3%82%B8%E3%
82%A7%E3%83%B3%E3%83%88%E8%B2%A0%E8%8D%B7%E5%88%86
%E6%95%A3-traefik-
%E3%82%92%E8%A9%A6%E3%81%97%E3%81%A6%E3%81%BF/
27
TRAEFIK+CONSULを使った感想
?簡単に設定を変えられる。特に自動化などをす
るならばcurlとかでREST API叩けるので便利。
? ConsulのREST APIでConsulのKVSに設定情報を
セット
? ConsulのUIでConsulのKVSに設定情報をセット
?ちなみに設定情報の確認のみなら前述のtraefik
UIでも可能。
28
CONSUL UIの設定例
(FOR INFRA. ADMIN)
29
Mgmt. tenant
Tenant #1
External network
テナント向けNW構成(現在)
30
Config mgmt
(Consul)
Infra. admin.
LB/Reverse proxy
(traefik Catalog)
Tenant #2
LB/Reverse proxy
Stack #1
Stack #2
???
Tenant#1 users
LB/Reverse proxy
(traefik)
? Rancherサービスの管理者(Infra. admin.)がテナ
ント向けにテナントドメイン(サブドメイン)を割り
当てる。
? テナントユーザはテナントに設置したtraefikのサー
ビスと割り当てられたサブドメインを使って、テナ
ント内のStackにアクセスさせる。
xxx.example.com
xxx.tenant1.exam
ple.com
テナントドメ
インを提供を
します。あと
はご自由に。
テナントドメイ
ンから先は自由
に使います。
今後実現したいこと
?実はテナントごとにtraefikコンテナを動かすメ
リットはあまりないと思っているので、管理用テ
ナントのtrafikでテナントのサービスを集中管理
するようにしたい。
? 今回はtraefik Catalogを使いたかったこともあり現在の構成になってい
るが。。。
? テナントごとにコンテナを管理させるのは面倒。
?Chatbot経由でテナントユーザが使いたい時にド
メイン登録できるようにしたい。
? Consulでcurlとかで動的に設定変えられるようにしたことだし。
?管理エリアのtraefikとConsulのカタログ化。
31
Mgmt. tenant Tenant #1
External network
テナント向けNW構成(これから)
32
Config mgmt
(Consul)
Infra. admin.
Tenant #2
Stack #1
Stack #2
LB/Reverse proxy
(traefik)
? やりたいことは前の構成の時と同じ。
? よくよく考えるとTenantごとにtraefikコンテナを動
かすメリットがあまりない。
? Mgmt. tenantのTrafikでテナントのサービスを集中
管理する。
? Chatbot経由でテナントユーザが使いたい時にドメ
イン登録。
xxx.example.com
stack1.tenant1.exam
ple.com
Chatbot
stack2.tenant1.
example.com
Tenant#1 users
???
まとめ
? Rancherを使えば簡単に、素早く、どんどんサー
ビスの起動やデプロイはできる!
? しかし、そのままではRancher上のサービスを社内
の制約上使いこなすのは難しかった。特にネット
ワーク関係。
? traefikで上手にルーティングしてあげれると社内の制約
が多い環境でも自由度の高いテナント環境が作れる。
? Consulも活用するとREST APIでルーティング情報が変
更できるのでネットワーク設定の自動化が捗る。
33
RANCHERにあったら嬉しい機能
(既にあったら教えてください!!)
?Docker hostをRemoveした後に、Docker host
に残るシステムコンテナを簡単に削除したい。
? 一度RemoveしたDocker hostを再度他のRancher
serverやEnvironmentで管理したい時に必要ないので
消したい。。。今は一つ一つコンテナを消すか
Dockerを入れ直している。
? 新しいDocker hostとして Add Hostしたあとにス
タックを確認すると、システムコンテナのステータス
が異常(Initializing状態のまま)になっていたりとか。
34
参考にした情報
? traefik
? https://traefik.io/
? Consul
? https://www.consul.io/
? 気になるインテリジェント負荷分散traefikを試してみる
? http://www.casleyconsulting.co.jp/blog-
engineer/%E3%82%B5%E3%83%BC%E3%83%90%E3%82%A4%E3%83%B
3%E3%83%95%E3%83%A9/%E6%B0%97%E3%81%AB%E3%81%AA%E3%8
2%8B-
%E3%82%A4%E3%83%B3%E3%83%86%E3%83%AA%E3%82%B8%E3%82%
A7%E3%83%B3%E3%83%88%E8%B2%A0%E8%8D%B7%E5%88%86%E6%9
5%A3-traefik-
%E3%82%92%E8%A9%A6%E3%81%97%E3%81%A6%E3%81%BF/
35
ご静聴ありがとうございました。
THANK YOU
36

More Related Content

Rancher による社内向けテナントサービス基盤