Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Kubernetesによる インフラ共通基盤 - JapanTaxi Kubernetes E...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Quentin Plessis
September 09, 2019
Technology
6.2k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Kubernetesによる インフラ共通基盤 - JapanTaxi Kubernetes Ecosystem (JKE)の紹介
Quentin Plessis
September 09, 2019
More Decks by Quentin Plessis
See All by Quentin Plessis
Kubernetes & EKSによるインフラ共通基盤の構築
quentinplessis
5
3k
Other Decks in Technology
See All in Technology
Snowflakeのコスト最適化を支えるアーキテクチャ設計
ktatsuya
1
1.5k
[2026-09-11]SREは誰のもの?運用エンジニアが始める 「SRE領域への越境」とチームの進化の軌跡 〜Road to NEXT CRE
tosite
0
170
AIに丸投げしないトイル削減 / Eliminating Toil Without Leaving It All to AI
kohbis
4
1.1k
薬剤師(ドメインエキスパート)と一緒に育てる薬局向けAIアシスタント
kakehashi
PRO
2
160
Multica × 長期記憶:40個のミニプロジェクト管理
eiei114
1
260
コーディングエージェントでM5Stack系の開発を少し試した時の話 / M5 Japan Tour 2026 Autumn 東京
you
PRO
0
180
AI時代の「技術的負債」の変質ー概念の終焉と再解釈、エージェントと共に向かう先
nwiizo
0
550
データ界隈LT祭 第1回LT登壇
taromatsui_cccmkhd
0
510
range over func 2年間の軌跡 Issue #56413 はGoのエコシステムをどう変えたか
ryujicre8ive
0
120
「図書館」という名前のままでいいのか -Code4Lib JAPANカンファレンス2026 アンカンファレンス報告- / Code4Lib JAPAN Conference 2026: Unconference Report
ykiyota
0
170
消えない 動かない 効かない
yama3133
1
120
Microsoft 365 Copilot chat -tekoälypalvelun tietosuojaongelmat
hponka
0
780
Featured
See All Featured
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
230
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
510
How to make the Groovebox
asonas
2
2.4k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
HDC tutorial
michielstock
2
860
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
The Curious Case for Waylosing
cassininazir
1
500
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.6k
Code Review Best Practice
trishagee
74
20k
Visualization
eitanlees
152
17k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
Transcript
1 Proprietary and Confidential ©2019 JapanTaxi, Inc. All Rights Reserved
Kubernetesによる インフラ共通基盤 JapanTaxi Kubernetes Ecosystem (JKE)の紹介
2 Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
Introduction Introduction Quentin Plessis (プレシ カンタン) Software Engineer (SREチーム) @ JapanTaxi株式会社 経験と興味 - 画像処理 - GPUを使ったコンピュータビジョンとAR - モバイル通信のデータ解析と統計モデリング - Web開発 - インフラ(環境構築と運用) - ...
3 Proprietary and Confidential ©2019 JapanTaxi, Inc. All Rights Reserved
目次 1) 背景 a) JapanTaxiのインフラ背景 b) なぜKubernetes? 2) Kubernetesでの運用 3) JapanTaxi Kubernetes Ecosystem (JKE)
4 Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
JapanTaxiのインフラ背景 1) 1年半前からの状況 2) なぜKubernetes?
5 Proprietary and Confidential ©2019 JapanTaxi, Inc. All Rights Reserved
1年半前からの状況 Azure ホスト:Terraformで構築 プロビジョニング:Ansible 仮想化技術:Docker オーケストレーション:手動 スケール:手動 課題:ログ、デプロイ、監視 Azure AKS ホスト:AKS プロビジョニング:無 仮想化技術:Docker オーケストレーション:K8S スケール:K8S 統一:ログ、デプロイ、監視 Amazon EKS ホスト:Terraform プロビジョニング:無 仮想化技術:Docker オーケストレーション:K8S スケール:K8S 統一:ログ、デプロイ、監視 K8Sへ移行 AWSへ移行
6 Proprietary and Confidential ©2019 JapanTaxi, Inc. All Rights Reserved
なぜKubernetes? アプリケーションに集中したいですが、 ネットワーク (VPC, subnet…) オートスケール デプロイ、ロールバック 監視、アラート ログ送信、収集、閲覧 ... SSL 認証、認可 ... 回復力 再現性
7 Proprietary and Confidential ©2019 JapanTaxi, Inc. All Rights Reserved
なぜKubernetes? Kubernetesを利用すると、全てのアプリケーションが同様 に使える共通なインフラ基盤ができる (PaaS) マルチクラウド コミュニティドリブン 開発スピード プラグイン オンプレミス PaaSの実現方法 ...
8 Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
Kubernetesでの運用 1) クラスタ構築 2) K8Sリソース管理 3) 運用して気づいたこと
9 Proprietary and Confidential ©2019 JapanTaxi, Inc. All Rights Reserved
クラスタ構築 - オンプレミス → 大変 - クラウドサービス - GUI → テストレベルまでOK、実際の運用には再現性が足りていない - 構築ツール (kops, eksctl ...) → 悪くないですが汎用性は足りていない - Terraform → 全クラウドサービスがサポートされている、K8S以外のリソース管理もできる
10 Proprietary and Confidential ©2019 JapanTaxi, Inc. All Rights Reserved
K8Sリソース管理 - YAML+ kubectl apply - (+) シンプル - (+) コード化可能 - (-) クラスタのコンテキスト切り替えに注意 - (-) テンプレート機能がない - (-) 複数のリソースを一つのパッケージとして管理するのも複雑 (依存関係...) - パッケージングツール (helm …) - (+) コード化可能 - (+) テンプレートエンジン - (+) パッケージング - (+) ビルドとデプロイを分ける - (-) クラスタのコンテキスト切り替えに注意 - (-) 学習コスト
11 Proprietary and Confidential ©2019 JapanTaxi, Inc. All Rights Reserved
運用して気づいたこと - PodDisruptionBudget(PDB)は大事 - ポッド数が決まったしきい値より少なくならないように (クラスタのローリングアップ デート時など) - ServiceのExternalTrafficPolicyは大事 - 冗長化可能なアプリケーションしか作らない方がいい - 同時に1つのポッドしか動かせないアプリケーションの運用は大変 - アプリケーションはホストに依存しないようにする - ログファイルなどはNG - データベースはマネージドサービスのほうがいい - データの保存、管理、移行などを避けるためStatefulSetは使わない - 全てのアプリケーションに設定すべきな共通なリソースがある - Deployment, Service, HorizontalPodAutoscaler, PDB, Secret, (Ingress) ...
12 Proprietary and Confidential ©2019 JapanTaxi, Inc. All Rights Reserved
運用して気づいたこと - KubernetesのServiceリソースは一番便利 - DNSレコードを追加しなくてもいい、dev/prod環境と関係なく同じエンドポイントなど - Kubernetesのコンテキスト切り替えは混乱する - 開発環境で操作しようと思ったら本番環境だった - 学習コストが高い - アプリケーションエンジニア全員に教えるのは難しい - (+) 柔軟性が高い - 「これをKubernetesで実現するのは難しい」と言ったこと(ほぼ)ない - (-) 柔軟性が高すぎる - コントロールしないとアプリケーションによる構成の差異が大きくなって管理が難しく なる
13 Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
JapanTaxi Kubernetes Ecosystem (JKE) 1) JKEとは 2) JKE CLI で新しいアプリケーションを動かすには
14 Proprietary and Confidential ©2019 JapanTaxi, Inc. All Rights Reserved
JapanTaxi Kubernetes Ecosystem (JKE) Kubernetesで運用するために、 SREチームが考えた方針と その方針を簡単に適用するためのツール 記事:本番環境へのKubernetesの導入やk8s共通基盤JKEの開発により苦労のないサーバ運用を実現
15 Proprietary and Confidential ©2019 JapanTaxi, Inc. All Rights Reserved
JapanTaxi Kubernetes Ecosystem (JKE)
16 Proprietary and Confidential ©2019 JapanTaxi, Inc. All Rights Reserved
JKE - JKE クラスター - SREメンバーが管理している - インフラの共通機能が提供されている(ログ収集、監視、デプロイ …) - 新しい機能をどんどん追加していく - JKE CLI - SREチームがRubyで開発したCLI - アプリケーションエンジニアが使う - jkeさえインストールすれば、 - 新しいアプリケーションを簡単に作成できる - 統一されたやり方でアプリケーションを管理できる - jke以外のツールのインストールは不要
17 Proprietary and Confidential ©2019 JapanTaxi, Inc. All Rights Reserved
JKEで新しいアプリケーションを動かすには フォーカスはアプリケーションに → アプリケーションエンジニアの視点で新しいアプリケーションを追加してみましょう > cd my_application > docker build & docker push > jke init --port 80 > jke build > jke dev deploy > jke stg deploy > jke prod deploy 5分でビルド& デプロイ!
18 Proprietary and Confidential ©2019 JapanTaxi, Inc. All Rights Reserved
JKE init jke init:JKE設定の自動生成 ... containers: app: ports: - name: http containerPort: 80 protocol: TCP resources: limits: cpu: 1.0 memory: 2Gi requests: cpu: 1.0 memory: 2Gi replicaCount: 2 autoscale: enabled: true minReplicas: 2 maxReplicas: 10 targetCPUUtilizationPercentage: 70 terminationGracePeriod: 30 ... サーバを2台 用意 オートスケール で最大10台まで 拡張 アプリケーションポート 最低と最高CPUとメモリー
19 Proprietary and Confidential ©2019 JapanTaxi, Inc. All Rights Reserved
JKEで新しいアプリケーションを動かすには jke initコマンドだけでス ケーラブルなサーバ環境 を瞬時に構築!
20 Proprietary and Confidential ©2019 JapanTaxi, Inc. All Rights Reserved
JKE / アプリケーションデプロイフロー
21 Proprietary and Confidential ©2019 JapanTaxi, Inc. All Rights Reserved
JKEで使える便利な機能 jkeで使える便利な機能 ▶ jke dev connect Switched to context "arn:aws:eks:redacted:redacted:cluster/redacted". user@my-application-b8fd49798-98d6q:/app# ps ax PID TTY STAT TIME COMMAND 1 ? Ss 0:00 /bin/bash /docker-entrypoint.sh bundle exec puma 27 ? Sl 0:11 puma 3.12.1 (unix:////app/tmp/sockets/puma.so 121 ? Sl 0:16 puma: cluster worker 1: 27 [app] 165 ? Sl 0:13 puma: cluster worker 0: 27 [app] コンテナに接続 ▶ jke stg connect ... ▶ jke prod connect ... 環境の選択や認証などは jkeに任せる!
22 Proprietary and Confidential ©2019 JapanTaxi, Inc. All Rights Reserved
JKEで使える便利な機能 jkeで使える便利な機能 ▶ jke dev logs 10.100.xxx.xxx - - [02/Jul/2019:10:27:53 +0000] "GET / HTTP/1.1" 401 12 "-" "Mozilla/5.0 AppleWebKit/ Chrome/ Safari/" 10.100.xxx.xxx - - [02/Jul/2019:10:27:55 +0000] "GET /test HTTP/1.1" 401 12 "-" "Mozilla/5.0 AppleWebKit/ Chrome/ Safari/" 10.100.xxx.xxx - - [02/Jul/2019:10:28:01 +0000] "GET / HTTP/1.1" 200 15 "-" "kube-probe/1.12" ... ログを閲覧 ▶ jke stg logs ... ▶ jke prod logs ...
23 Proprietary and Confidential ©2019 JapanTaxi, Inc. All Rights Reserved
JKEで使える便利な機能 jkeを使ってアプリケーションを作ると、下記の機能が使えます - デプロイの仕組み (デプロイ、ロールバック、Slack通知、CloudWatch Logs) - アプリケーションログ:Amazon Athena/BigQueryで閲覧できる - 監視:NewRelicのダッシュボード、PagerDutyでの死活監視 ... - SSL証明書の自動生成 - オートスケール - … - これから追加される機能も
24 Proprietary and Confidential ©2019 JapanTaxi, Inc. All Rights Reserved
まとめ 1) 問題:アプリケーションに集中できない 解決方法: → Kubernetes (k8s) をベースに共通なインフラ基盤 2) 問題:K8Sの使い方がありすぎて混乱する、学習コストが高い 解決方法: → SREチームの方針を実現するJKE → jke initを使うことで5分で運用しやすくて安定的なアプリケーションが作れる → アプリケーションに集中できる
〒102-0094 東京都千代田区紀尾井町3-12 3-12 Kioicho Chiyoda-ku, Tokyo 102-0094 Japan TEL 03-6265-6265 FAX 03-3239-8115
www.japantaxi.co.jp 文章·画像等の内容の無断転載及び複製等の行為はご遠慮ください。 Proprietary and Confidential ©2019 JapanTaxi, Inc. All Rights Reserved