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

37
© Hitachi, Ltd. 2016. All rights reserved. Rancher による社内向けテナントサービス基盤 2017/3/15 Keita Shimada Hitachi, Ltd.

Upload: keita-shimada

Post on 06-Apr-2017

239 views

Category:

Software


0 download

TRANSCRIPT

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

© Hitachi, Ltd. 2016. All rights reserved.

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

2017/3/15

Keita Shimada

Hitachi, Ltd.

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

はじめに

本資料に記載されている会社名、商品、サービス名等は各社の登録商標または商標です。

本資料中は、”™ ”️、”® ”️は明記しておりませんのでご了承下さい。

1

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

自己紹介

名前:嶋田敬太

経歴:2009年に日立製作所に入所

サーバ運用管理ソフトの機能検討

ストレージ運用管理ソフトの機能検討

モバイルアプリ生産性向上についての検討

DevOpsの実践をサポートするサービスの検討

&社内クラウドでのOSSの活用実践

2

現在の仕事

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

RANCHERについての印象

きっかけ

社内のOSS調査の中でRancher担当を拝命。

Rancherの第一印象

UIがカッコイイ👍

Rancher 自身の立ち上げが簡単👍

3

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

RANCHERについての印象

更に使っていくと…

カタログでサービス(スタック)を簡単にデプロイして試せるので便利。

ITインフラのことはあまり意識したくないが、自分のサービスが何処で動いているか全くわからないのも不安。。。というようなユーザでも簡単にUIで管理ができる。

4

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

RANCHERで何をしたいか

社内の開発者や開発グループに、社内クラウド上で

OSSを積極的に活用してもらい、知識やノウハウを蓄積したり、新しいサービスを創生する場を作りたい。

そのために、Rancherで開発者が、簡単に、素早く、どんどんサービスを試したり、そ

れを活用した自身のサービスを作成/提供できる基盤を提供したい。

5

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

理想とする使われ方

簡単に、素早く、どんどん

サービスを立ち上げて、

それを他の人に使ってもらって

フィードバックをもらって、

サービスを創生/改良する。

6

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

やりたいこと/要件

テナント提供

開発者や開発グループにテナント単位でITリソースを提供し、そのテナント内でサービスを立ち上げて利用できる。

サービス公開

テナントで立ち上げたサービスに社内クラウドユーザが利用できるように公開できる。

テンプレートのシェア

テナントで作ったサービスをテンプレートとして他のテナントとシェアできるようにする。

既存サービスとの連携

社内のクラウド上ですでに提供されているOSSサービスと連携する。

社内認証基盤との連携

テナントのログイン処理等には、社内認証基盤(LDAP)を利用する。

7

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

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

ServiceUser

Portal

Registries

User

Registry

Crop.

Registry

LB/Reverse proxy

・・・

Tenant users

Infra. administrators

・・・

テナント提供

サービス公開

テンプレートのシェア

既存サービスとの連携

Chat/GitLab…

社内認証基盤との連携

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

今回紹介する取り組み

テナント提供

開発者や開発グループにテナント単位でITリソースを提供し、そのテナント内でサービスを立ち上げて利用できる。

サービス公開

テナントで立ち上げたサービスに社内クラウドユーザが利用できるように公開できる。

テンプレートのシェア

テナントで作ったサービスをテンプレートとして他のテナントとシェアできるようにする。

既存サービスとの連携

社内のクラウド上ですでに提供されているOSSサービスと連携する。

社内認証基盤との連携

テナントのログイン処理等には、社内認証基盤(LDAP)を利用する。

9

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

なぜ、要件の中でもサービス公開のところを取り上げる?

10

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

理想とする使われ方

簡単に、素早く、どんどん

サービスを立ち上げて、

それを他の人に使ってもらって

フィードバックをもらって、

サービスを創生/改良する。

11

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

現状の課題

Rancherを使えば簡単に、素早く、どんどんサービスの起動やデプロイはできる!

・・・しかし、そのままではRancher上のサービスを社内で使いこなすのは難しい。

ポート制限

ドメイン利用 …

12

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

手元の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コンテナを利用するようになったから顕著になった。

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

現状の課題(ドメイン利用)

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

サーバ管理者

①ドメイン登録のお願い

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

理想と現状のギャップ

Rancherを社内で使いこなすために、理想と現実のギャップの原因となるポート制限、ドメインサービス利用 etc.の問題を解決したい。

15

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

解決のためのアプローチ

ポート制限ー>使えるポートが少ないが、安易にポートを開くことはしたくない。

ー>使えるポートを複数サービス(コンテナ)で使えるようにする。

ー>そのためにリバースプロキシ使ってみよう!

ドメイン利用ー>ドメインを自由に設定したいが、DNSサーバの設定を騙取する権限がない。毎回、管理者に頼むのが大変。

ー>テナントにサブドメインを与えて、サブドメイン以下の設定は自由に設定できるようにしよう!

ー>そのためにリバースプロキシ使ってみよう!

16

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

TRAEFIKHTTPS://TRAEFIK.IO

モダンHTTPリバースプロキシ/ロードバランサ

ルーティングの情報などの設定情報を動的に変更することが可能。

設定情報を管理するためにバックエンドサービスと連携可能。連携可能なバックエンドサービスは複数存在(Consul,Zookeeper,etcd etc.)。

17

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

なぜTRAEFIK?

Rancher Cattle向けCommunity CatalogにExperimental版が提供されており、Rancher向けに調整されていたから。

UIで設定が簡単に確認できる。

デファクトとなっているもの以外を試してみたかった。

18Traefikカタログ

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

TRAEFIK(RANCHERカタログ版)の設定

traefikと連携させたいDockerホストにtraefik

用のラベルをつける。

スタックのdocker-compose.ymlにtraefik用のラベルを設定する。

上記の設定を行った上でスタックを稼働させると以下のパスでtraefik経由でのスタックへのアクセスが可能になる。

19

http://${サービス名}.${スタック名}.${traefikのドメイン名}:${httpポート番号}

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

DOCKERホストへのラベル付け

20

• traefikと連携させたいDockerホストに以下ラベルを付ける。

traefik_lb = true• ラベルをつけられたDocker

ホスト上にtraefikのコンテナが配備され、そのDokcer

ホストはtraefik用の管理下に入る。

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

スタックの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用のラベルを追加する。

• 本スライドで紹介したのは設定項目のごく一部。多くの設定項目が存在し、詳細な設定が可能…なはず。

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

TRAEFIK UI

(FOR INFRA. ADMIN/TENANT USERS)22

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

テナントサービスとして提供するためには

traefik Catalogでルーティングはできた。

しかし、残念ならがらtraefikカタログが提供できるのは、一つのテナント(Environment)内でのリバースプロキシ/ロードバランサ機能。

複数テナントへのサブドメインの割り当てもやりたい。

あと、docker-compose.ymlでラベル設定するから、スタックのデプロイ後に設定を変える方法ができるか不明…(調査要)

23

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

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

テナントドメインを提供をします。あとはご自由に。

テナントドメインから先は自由に使います。

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

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

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

CONSULHTTPS://WWW.CONSUL.IO/

サービスディスカバリ、サービスヘルスチェック、KVSサービスを提供するツール群。

今回はtraefikの設定情報を動的に変更するためにKVSサービスを使う。

curlなどで設定項目を動的に変更できる点がgood👍

26

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

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

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

TRAEFIK+CONSULを使った感想

簡単に設定を変えられる。特に自動化などをす

るならばcurlとかでREST API叩けるので便利。

ConsulのREST APIでConsulのKVSに設定情報を

セット

ConsulのUIでConsulのKVSに設定情報をセット

ちなみに設定情報の確認のみなら前述のtraefik

UIでも可能。

28

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

CONSUL UIの設定例

(FOR INFRA. ADMIN)29

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

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

テナントドメインを提供をします。あとはご自由に。

テナントドメインから先は自由に使います。

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

今後実現したいこと

実はテナントごとにtraefikコンテナを動かすメリットはあまりないと思っているので、管理用テナントのtrafikでテナントのサービスを集中管理するようにしたい。

今回はtraefik Catalogを使いたかったこともあり現在の構成になっているが。。。

テナントごとにコンテナを管理させるのは面倒。

Chatbot経由でテナントユーザが使いたい時にドメイン登録できるようにしたい。

Consulでcurlとかで動的に設定変えられるようにしたことだし。

管理エリアのtraefikとConsulのカタログ化。

31

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

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

・・・

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

まとめ

Rancherを使えば簡単に、素早く、どんどんサービスの起動やデプロイはできる!

しかし、そのままではRancher上のサービスを社内の制約上使いこなすのは難しかった。特にネット

ワーク関係。

traefikで上手にルーティングしてあげれると社内の制約

が多い環境でも自由度の高いテナント環境が作れる。

Consulも活用するとREST APIでルーティング情報が変

更できるのでネットワーク設定の自動化が捗る。

33

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

RANCHERにあったら嬉しい機能(既にあったら教えてください!!)

Docker hostをRemoveした後に、Docker hostに残るシステムコンテナを簡単に削除したい。

一度RemoveしたDocker hostを再度他のRancher serverやEnvironmentで管理したい時に必要ないので消したい。。。今は一つ一つコンテナを消すかDockerを入れ直している。

新しいDocker hostとして Add Hostしたあとにスタックを確認すると、システムコンテナのステータスが異常(Initializing状態のまま)になっていたりとか。

34

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

参考にした情報

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%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/

35

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

ご静聴ありがとうございました。

THANK YOU

36