Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

1,187 views

Published on

2017/3/15 Rancher meetup#5 の発表資料です。
社内向けテナントサービス基盤としてRancherを活用した事例を紹介します。
I introduce our case study of tenant services using Rancher in our company.

Published in: Software
  • Hello! Get Your Professional Job-Winning Resume Here - Check our website! https://vk.cc/818RFv
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

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

  1. 1. © Hitachi, Ltd. 2016. All rights reserved. Rancher による社内向けテナントサービス基盤 2017/3/15 Keita Shimada Hitachi, Ltd.
  2. 2. はじめに 本資料に記載されている会社名、商品、 サービス名等は各社の登録商標または商 標です。 本資料中は、”™️”、”®️”は明記してお りませんのでご了承下さい。 1
  3. 3. 自己紹介 名前:嶋田敬太 経歴:2009年に日立製作所に入所  サーバ運用管理ソフトの機能検討  ストレージ運用管理ソフトの機能検討  モバイルアプリ生産性向上についての検討 DevOpsの実践をサポートするサービスの検討 & 社内クラウドでのOSSの活用実践 2 現在の仕事
  4. 4. RANCHERについての印象 きっかけ 社内のOSS調査の中でRancher担 当を拝命。 Rancherの第一印象 UIがカッコイイ👍 Rancher 自身の立ち上げが簡単👍 3
  5. 5. RANCHERについての印象 更に使っていくと… カタログでサービス(スタック)を簡単にデ プロイして試せるので便利。 ITインフラのことはあまり意識したくない が、自分のサービスが何処で動いているか 全くわからないのも不安。。。というよう なユーザでも簡単にUIで管理ができる。 4
  6. 6. RANCHERで何をしたいか 社内の開発者や開発グループに、社内クラウド上で OSSを積極的に活用してもらい、知識やノ ウハウを蓄積したり、新しいサービスを創 生する場を作りたい。 そのために、Rancherで開発者が、簡単に、素 早く、どんどんサービスを試したり、そ れを活用した自身のサービスを作成/提供 できる基盤を提供したい。 5
  7. 7. 理想とする使われ方 簡単に、素早く、どんどん サービスを立ち上げて、 それを他の人に使ってもらって フィードバックをもらって、 サービスを創生/改良する。 6
  8. 8. やりたいこと/要件  テナント提供  開発者や開発グループにテナント単位でITリソースを提供し、そのテ ナント内でサービスを立ち上げて利用できる。  サービス公開  テナントで立ち上げたサービスに社内クラウドユーザが利用できるよ うに公開できる。  テンプレートのシェア  テナントで作ったサービスをテンプレートとして他のテナントとシェ アできるようにする。  既存サービスとの連携  社内のクラウド上ですでに提供されているOSSサービスと連携する。  社内認証基盤との連携  テナントのログイン処理等には、社内認証基盤(LDAP)を利用する。 7
  9. 9. 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… 社内認証基盤と の連携
  10. 10. 今回紹介する取り組み  テナント提供  開発者や開発グループにテナント単位でITリソースを提供し、そのテナント内でサービ スを立ち上げて利用できる。 サービス公開 テナントで立ち上げたサービスに社内クラウド ユーザが利用できるように公開できる。  テンプレートのシェア  テナントで作ったサービスをテンプレートとして他のテナントとシェアできるようにす る。  既存サービスとの連携  社内のクラウド上ですでに提供されているOSSサービスと連携する。  社内認証基盤との連携  テナントのログイン処理等には、社内認証基盤(LDAP)を利用する。 9
  11. 11. なぜ、要件の中でも サービス公開のところを 取り上げる? 10
  12. 12. 理想とする使われ方 簡単に、素早く、どんどん サービスを立ち上げて、 それを他の人に使ってもらって フィードバックをもらって、 サービスを創生/改良する。 11
  13. 13. 現状の課題 Rancherを使えば簡単に、素早く、どんどん サービスの起動やデプロイはできる! ・・・しかし、そのままではRancher上の サービスを社内で使いこなすのは難しい。 ポート制限 ドメイン利用 … 12
  14. 14. 手元の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コンテナ を利用するようになったから顕著になった。
  15. 15. 現状の課題(ドメイン利用) 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 サーバ管理者 ①ドメイン 登録の お願い
  16. 16. 理想と現状のギャップ Rancherを社内で使いこなすために、理想と 現実のギャップの原因となるポート制限、ド メインサービス利用 etc.の問題を解決したい。 15
  17. 17. 解決のためのアプローチ ポート制限 ー>使えるポートが少ないが、安易にポートを開くことはしたくな い。 ー>使えるポートを複数サービス(コンテナ)で使えるようにする。 ー>そのためにリバースプロキシ使ってみよう! ドメイン利用 ー>ドメインを自由に設定したいが、DNSサーバの設定を騙取する 権限がない。毎回、管理者に頼むのが大変。 ー>テナントにサブドメインを与えて、サブドメイン以下の設定は 自由に設定できるようにしよう! ー>そのためにリバースプロキシ使ってみよう! 16
  18. 18. TRAEFIK HTTPS://TRAEFIK.IO モダンHTTPリバースプロキシ/ロードバラ ンサ ルーティングの情報などの設定情報を動的 に変更することが可能。 設定情報を管理するためにバックエンド サービスと連携可能。連携可能なバックエ ンドサービスは複数存在 (Consul,Zookeeper,etcd etc.)。 17
  19. 19. なぜTRAEFIK? Rancher Cattle向けCommunity CatalogにExperimental版が提供され ており、Rancher向けに調整されていた から。 UIで設定が簡単に確認できる。 デファクトとなっているもの以外を試し てみたかった。 18Traefikカタログ
  20. 20. TRAEFIK(RANCHERカタログ版)の設定 traefikと連携させたいDockerホストにtraefik 用のラベルをつける。 スタックのdocker-compose.ymlにtraefik用 のラベルを設定する。 上記の設定を行った上でスタックを稼働させ ると以下のパスでtraefik経由でのスタックへ のアクセスが可能になる。 19 http://${サービス名}.${スタック名}.${traefikのドメイン 名}:${httpポート番号}
  21. 21. DOCKERホストへのラベル付け 20 • traefikと連携させたい Dockerホストに以下ラベル を付ける。 traefik_lb = true • ラベルをつけられたDocker ホスト上にtraefikのコンテ ナが配備され、そのDokcer ホストはtraefik用の管理下 に入る。
  22. 22. スタックの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用のラベル を追加する。 • 本スライドで紹介したのは設定項目 のごく一部。多くの設定項目が存在 し、詳細な設定が可能…なはず。
  23. 23. TRAEFIK UI (FOR INFRA. ADMIN/TENANT USERS) 22
  24. 24. テナントサービスとして提供 するためには  traefik Catalogでルーティングはできた。  しかし、残念ならがらtraefikカタログが提供できるの は、一つのテナント(Environment)内でのリバースプ ロキシ/ロードバランサ機能。  複数テナントへのサブドメインの割り当てもやりたい。  あと、docker-compose.ymlでラベル設定する から、スタックのデプロイ後に設定を変える方法 ができるか不明…(調査要) 23
  25. 25. 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 テナントドメ インを提供を します。あと はご自由に。 テナントドメイ ンから先は自由 に使います。
  26. 26. 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
  27. 27. CONSUL HTTPS://WWW.CONSUL.IO/ サービスディスカバリ、サービスヘルス チェック、KVSサービスを提供するツー ル群。 今回はtraefikの設定情報を動的に変更す るためにKVSサービスを使う。 curlなどで設定項目を動的に変更できる 点がgood👍 26
  28. 28. 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
  29. 29. TRAEFIK+CONSULを使った感想 簡単に設定を変えられる。特に自動化などをす るならばcurlとかでREST API叩けるので便利。  ConsulのREST APIでConsulのKVSに設定情報を セット  ConsulのUIでConsulのKVSに設定情報をセット ちなみに設定情報の確認のみなら前述のtraefik UIでも可能。 28
  30. 30. CONSUL UIの設定例 (FOR INFRA. ADMIN) 29
  31. 31. 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 テナントドメ インを提供を します。あと はご自由に。 テナントドメイ ンから先は自由 に使います。
  32. 32. 今後実現したいこと 実はテナントごとにtraefikコンテナを動かすメ リットはあまりないと思っているので、管理用テ ナントのtrafikでテナントのサービスを集中管理 するようにしたい。  今回はtraefik Catalogを使いたかったこともあり現在の構成になってい るが。。。  テナントごとにコンテナを管理させるのは面倒。 Chatbot経由でテナントユーザが使いたい時にド メイン登録できるようにしたい。  Consulでcurlとかで動的に設定変えられるようにしたことだし。 管理エリアのtraefikとConsulのカタログ化。 31
  33. 33. 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 ・・・
  34. 34. まとめ  Rancherを使えば簡単に、素早く、どんどんサー ビスの起動やデプロイはできる!  しかし、そのままではRancher上のサービスを社内 の制約上使いこなすのは難しかった。特にネット ワーク関係。  traefikで上手にルーティングしてあげれると社内の制約 が多い環境でも自由度の高いテナント環境が作れる。  Consulも活用するとREST APIでルーティング情報が変 更できるのでネットワーク設定の自動化が捗る。 33
  35. 35. RANCHERにあったら嬉しい機能 (既にあったら教えてください!!) Docker hostをRemoveした後に、Docker host に残るシステムコンテナを簡単に削除したい。  一度RemoveしたDocker hostを再度他のRancher serverやEnvironmentで管理したい時に必要ないので 消したい。。。今は一つ一つコンテナを消すか Dockerを入れ直している。  新しいDocker hostとして Add Hostしたあとにス タックを確認すると、システムコンテナのステータス が異常(Initializing状態のまま)になっていたりとか。 34
  36. 36. 参考にした情報  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
  37. 37. ご静聴ありがとうございました。 THANK YOU 36

×