SlideShare une entreprise Scribd logo
1  sur  44
Télécharger pour lire hors ligne
イ ン フ ラ エ ン ジ ニ ア が
k 8 s で ア プ リ を 作 っ て 見 え た
今後のインフラ
は じ め に
Kubernetes® (k8s)で動くアプリを作っていく中
で見えてきた今後のインフラの姿を
VMからコンテナにした時の苦労を交えてお伝え
したいと思います
自 己 紹 介
名 前:田中 進
会 社:株式会社エーピーコミュニケーションズ
職 種:インフラエンジニア
その他:最近構築したシステムは仮想化基盤
うっかりプログラマにクラスチェンジ中
目 次
1. k8sを触って見えた今後のインフラ
2. k8s、dockerへの不安
3. 調べて対応
4. まとめ
k 8 s を 触 っ て 見 え た
今 後 の イ ン フ ラ
今 ま で の V M っ て ?
• ハードウェアを仮想化
• ソフトウェアの
実行方法は変わらない
D o c k e r コ ン テ ナ っ て ?
• 依存関係含め
まるごとパッケージ化
• 同じじゃないけど似ている
• Goで作ったコードが
バイナリひとつ動く
• ダイナミックリンクに対する
スタティックリンク
• Dockerコンテナは“仮想マ
シン”ではなく“アプリ”
シ ス テ ム 毎 に 作 る 範 囲 が 変 わ っ た
コンテナを管理するオーケストレーションツール
wikipediaより
オーケストレーション(英: Orchestration)は、複雑なコンピュータシステム/ミドルウ
ェア/サービスの配備/設定/管理の自動化を指す用語
k u b e r n e t e s と は
具体的には
● コンテナの自動復旧
● ノード間のネットワークをつなぐ とか…
k u b e r n e t e s と は
B e f o r e : シ ス テ ム 毎 に イ ン フ ラ 構 築
A f t e r : シ ス テ ム 毎 に コ ン テ ナ 構 築
コ ー ド 化 に よ る メ リ ッ ト
今 後 の イ ン フ ラ
インフラとアプリの境界が変わり
システム毎にコンテナを作るようになる
コード化によるメリットが生まれる
k 8 s 、 d o c k e r へ の 不 安
漠 然 と し た 不 安
コンテナって
きちんと動くの?
実 績 あ り ま す
実績
IIJ様、メルカリ様、Yahoo様、Mirantis様… など
製品
Openstack(Kolla)
CIツールのDrone とか…
使 っ て み た 時 の 不 安 ( な ん か 動 い て る ぽ い け ど )
①ログってどうなる? ②今までのアプリどう移植する?
• 1コンテナ、1プロセス?
• syslogあげれない?
• どうやってログ送る?
• 全部、書き換えないとダメ?
• 何を変えればいいの?
調 べ て 対 応
壁を突破するのも
僕たちの仕事です!
① ロ グ っ て ど う な る ? ( 検 討 )
• ノードとコンテナのログ まとめて取りたい
• flunetd公式にあるdaemonsetサンプルを使ってElasticsearchに食わせればい
いんでしょ?
① ロ グ っ て ど う な る ? ( 検 証 )
敗因:AtomicHostはログが全部Journaldに吐かれていた
生ログは吐かれておらず収集不可
① ロ グ っ て ど う な る ? ( 調 査 )
• マニュアルと格闘
⇒k8sはjournaldがある場合、journaldに統合している
• Dockerは?
⇒設定みたら、デフォルトでjournaldに吐いてた
最初は生ログを吐かそうと思ったが、もうjournaldから収集した方がよさそう
① ロ グ っ て ど う な る ? ( 再 挑 戦 )
• fluent-plugin-systemdを追加
• 合わせてfluentdのコンフィグを書き換え
① ロ グ っ て ど う な る ? ( 結 果 )
1. なんかログは取れる kibanaがカッコいい
2. k8s特有の情報もフィールドとして判断できた
ログ収集は調べながら
なんだかんだで出来た
アプリケーション側は…?
② 今 ま で の ア プ リ ど う 移 植 す る ?
( 経 緯 )
引き継いだアプリはVMで動いていた
※補足:システム要件でRedmineをデータ格納先として利用しています
② 今 ま で の ア プ リ ど う 移 植 す る ?
( と り あ え ず や っ て み る )
仮想マシンからファイルを取り出してコンテナ化
② 今 ま で の ア プ リ ど う 移 植 す る ?
( 結 果 )
IP自動割り当てに対応しておらず動かなかった
(設定にIPベタ書き。当然と言えば、当然・・・)
Appコンテナ Redmineコンテナ
Apache
コンテナ
IPアド レス
自動割り当て
接続先わからず 接続先わからず
② 今 ま で の ア プ リ ど う 移 植 す る ?
( ア プ リ の 修 正 : 方 針 )
では、どうしたか?
K8sは環境変数に他コンテナの情報を持たせてくれる
設定を環境変数から取得に変更
② 今 ま で の ア プ リ ど う 移 植 す る ?
( ア プ リ の 修 正 : 修 正 内 容 )
#!/usr/bin/env python
import os
REDMINE_IP = os.environ.get(‘REDMINE_SERVICE_HOST’,’’)
こんな感じで、言語の標準モジュールを使い
簡単に環境変数の値がとれる
アプリのコンフィグ修正版
② 今 ま で の ア プ リ ど う 移 植 す る ?
( ア プ リ の 修 正 : 結 果 )
こんな感じでIPを取得しながら動かすことが出来た
② 今 ま で の ア プ リ ど う 移 植 す る ?
( A p a c h e の 設 定 : 検 討 )
一方、環境変数に対応してないソフトウェアがあると思います
これ、どうするんだ?とか思いました
公式のコンテナイメージ等を参照していると
コンテナ起動時、設定を書き換えるスクリプトが流れていた。
② 今 ま で の ア プ リ ど う 移 植 す る ?
( A p a c h e の 設 定 : 修 正 内 容 )
#!/bin/bash
# 変数定義
CONFIGFILE=/usr/local/apache2/conf/httpd.conf
# 環境変数を使って、コンフィグファイルを置換
sed -i s/’{{HOGE_SERVER}}'/${APP_SERVICE_HOST}/g $CONFIGFILE
# HTTPD実行
httpd-foreground
コンフィグにはあらかじめ、
置換用文字投入済み。
---抜粋--
ProxyPass /hoge-api http://{{HOGE_SERVER}}/hoge-api
ProxyPassReverse /hoge-api http://{{HOGE_SERVER}}/hoge-api
------
② 今 ま で の ア プ リ ど う 移 植 す る ?
( A p a c h e の 修 正 : 結 果 )
意図した通り環境変数が効いた設定がApacheで起動
アプリケーションの対応も
環境変数から値を取る
くらいで出来た
対 応 ま と め
• IP動的割り当てに対応
⇒標準モジュールつかって環境変数から値をとるようにしただけ
• ログ収集
⇒各公式ドキュメントを読んでログ収集コンテナを作っただけ
最初は学ぶオーバーヘッドもあったが… つかえる 実は簡単?
ま と め
再 掲 P a a S に よ る 効 率 化
再 掲 コ ー ド 化 に よ る 管 理 性 の 向 上
コンテナはよいもの
インフラとアプリの境界が変わる
効率化された世界が待っている
再 掲 意 外 と や れ ば で き る
• IP動的割り当てに対応
⇒標準モジュールつかって環境変数から値をとるようにしただけ
• ログ収集
⇒各公式ドキュメントを読んでログ収集コンテナを作っただけ
最初は学ぶオーバーヘッドもあったが… つかえる 実は簡単?
全然使える
壁があっても乗り越えられる
ま と め
私なりに今後のインフラについて語ってみましたが、いかがでしたでしょうか?
今までの仮想化とは、また違った世界をお伝えできたのではないかと思います。
本日の発表を通じ、コンテナやオーケストレーションについて
少しでも身近に感じてもらえればと思っております。
ご清聴、ありがとうございました。

Contenu connexe

Tendances

Jenkins+Play!で気軽にCI
Jenkins+Play!で気軽にCIJenkins+Play!で気軽にCI
Jenkins+Play!で気軽にCITakafumi Ikeda
 
jenkinsのすゝめ - 継続的インテグレーションと継続的デリバリー
jenkinsのすゝめ - 継続的インテグレーションと継続的デリバリーjenkinsのすゝめ - 継続的インテグレーションと継続的デリバリー
jenkinsのすゝめ - 継続的インテグレーションと継続的デリバリーJunya Suzuki
 
Unityで使える C# 6.0~と .NET 4.6
Unityで使える C# 6.0~と .NET 4.6Unityで使える C# 6.0~と .NET 4.6
Unityで使える C# 6.0~と .NET 4.6信之 岩永
 
世界をすこしだけ前に進めるということ
世界をすこしだけ前に進めるということ世界をすこしだけ前に進めるということ
世界をすこしだけ前に進めるということYukei Wachi
 
Jenkinsではじめる継続的インテグレーション
Jenkinsではじめる継続的インテグレーションJenkinsではじめる継続的インテグレーション
Jenkinsではじめる継続的インテグレーションMasanori Satoh
 
Node.jsで対戦ゲーム作ったよ
Node.jsで対戦ゲーム作ったよNode.jsで対戦ゲーム作ったよ
Node.jsで対戦ゲーム作ったよYuusuke Takeuchi
 
Hello! intermediate language
Hello! intermediate languageHello! intermediate language
Hello! intermediate languageKouji Matsui
 

Tendances (8)

Jenkins+Play!で気軽にCI
Jenkins+Play!で気軽にCIJenkins+Play!で気軽にCI
Jenkins+Play!で気軽にCI
 
jenkinsのすゝめ - 継続的インテグレーションと継続的デリバリー
jenkinsのすゝめ - 継続的インテグレーションと継続的デリバリーjenkinsのすゝめ - 継続的インテグレーションと継続的デリバリー
jenkinsのすゝめ - 継続的インテグレーションと継続的デリバリー
 
Unityで使える C# 6.0~と .NET 4.6
Unityで使える C# 6.0~と .NET 4.6Unityで使える C# 6.0~と .NET 4.6
Unityで使える C# 6.0~と .NET 4.6
 
世界をすこしだけ前に進めるということ
世界をすこしだけ前に進めるということ世界をすこしだけ前に進めるということ
世界をすこしだけ前に進めるということ
 
Jenkinsではじめる継続的インテグレーション
Jenkinsではじめる継続的インテグレーションJenkinsではじめる継続的インテグレーション
Jenkinsではじめる継続的インテグレーション
 
Node.jsで対戦ゲーム作ったよ
Node.jsで対戦ゲーム作ったよNode.jsで対戦ゲーム作ったよ
Node.jsで対戦ゲーム作ったよ
 
Hello! intermediate language
Hello! intermediate languageHello! intermediate language
Hello! intermediate language
 
Bluetoothでgo!
Bluetoothでgo!Bluetoothでgo!
Bluetoothでgo!
 

Similaire à インフラエンジニアがk8sでアプリを作って見えた今後のインフラ

Tizen 2.0 alpha でサポートされなかった native api
Tizen 2.0 alpha でサポートされなかった native apiTizen 2.0 alpha でサポートされなかった native api
Tizen 2.0 alpha でサポートされなかった native apiNaruto TAKAHASHI
 
あなたの安心を高速に守る Container-based CI
あなたの安心を高速に守る Container-based CIあなたの安心を高速に守る Container-based CI
あなたの安心を高速に守る Container-based CIWataru MIYAGUNI
 
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境Fumihito Yokoyama
 
メガ Unity ユーザーミートアップ 2012
メガ Unity ユーザーミートアップ 2012メガ Unity ユーザーミートアップ 2012
メガ Unity ユーザーミートアップ 2012cfm_art
 
Voicepic@FukuiMASeminar
Voicepic@FukuiMASeminarVoicepic@FukuiMASeminar
Voicepic@FukuiMASeminarManabu Shimobe
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップKoichiro Sumi
 
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会Takayuki Shimizukawa
 
Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例gree_tech
 
2006-04-22 CLR/H #14 .NET and open source
2006-04-22 CLR/H #14 .NET and open source2006-04-22 CLR/H #14 .NET and open source
2006-04-22 CLR/H #14 .NET and open sourceYoshiyuki Nakamura
 
おしべめしべLt
おしべめしべLtおしべめしべLt
おしべめしべLtpuriketu99 --
 
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例UnityTechnologiesJapan002
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入Yu Nobuoka
 
Cent osにpyhtonをインストールしてみよう
Cent osにpyhtonをインストールしてみようCent osにpyhtonをインストールしてみよう
Cent osにpyhtonをインストールしてみよう2bo 2bo
 
Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Takako Miyagawa
 

Similaire à インフラエンジニアがk8sでアプリを作って見えた今後のインフラ (20)

Jenkinsのある生活
Jenkinsのある生活Jenkinsのある生活
Jenkinsのある生活
 
Tizen 2.0 alpha でサポートされなかった native api
Tizen 2.0 alpha でサポートされなかった native apiTizen 2.0 alpha でサポートされなかった native api
Tizen 2.0 alpha でサポートされなかった native api
 
あなたの安心を高速に守る Container-based CI
あなたの安心を高速に守る Container-based CIあなたの安心を高速に守る Container-based CI
あなたの安心を高速に守る Container-based CI
 
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境
 
メガ Unity ユーザーミートアップ 2012
メガ Unity ユーザーミートアップ 2012メガ Unity ユーザーミートアップ 2012
メガ Unity ユーザーミートアップ 2012
 
Voicepic@FukuiMASeminar
Voicepic@FukuiMASeminarVoicepic@FukuiMASeminar
Voicepic@FukuiMASeminar
 
Tizen native application
Tizen native applicationTizen native application
Tizen native application
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップ
 
Zynga
ZyngaZynga
Zynga
 
Aws privte20110406 arai
Aws privte20110406 araiAws privte20110406 arai
Aws privte20110406 arai
 
Fcp
FcpFcp
Fcp
 
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
 
邪道Jenkins
邪道Jenkins邪道Jenkins
邪道Jenkins
 
Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例
 
2006-04-22 CLR/H #14 .NET and open source
2006-04-22 CLR/H #14 .NET and open source2006-04-22 CLR/H #14 .NET and open source
2006-04-22 CLR/H #14 .NET and open source
 
おしべめしべLt
おしべめしべLtおしべめしべLt
おしべめしべLt
 
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
 
Cent osにpyhtonをインストールしてみよう
Cent osにpyhtonをインストールしてみようCent osにpyhtonをインストールしてみよう
Cent osにpyhtonをインストールしてみよう
 
Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中
 

インフラエンジニアがk8sでアプリを作って見えた今後のインフラ