Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Kubernetesによる インフラ共通基盤 - JapanTaxi Kubernetes E...
Search
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
LLMと共に進化するプロセスを目指して
ymatsuwitter
12
3.7k
ブロックチェーン / Blockchain
ks91
PRO
0
110
MIERUNE JCT 発表資料「宇宙から伊能忠敬ごっこ」
syuchimu
0
200
ITエンジニアを取り巻く環境とキャリアパス / A career path for Japanese IT engineers
takatama
4
1.8k
「速く作る」から「正しく作る」へ ─ 生成AI時代の開発フロー改革の ロードマップと実行 ─
starfish719
0
9.3k
React、まだ楽しくて草
uhyo
7
4.2k
Agentic ERPをどう設計するか ー 受発注エージェントを動かす、現場の知見と設計思想ー
recerqainc
1
2k
GoとSIMDとWasmの今。
askua
3
520
Claude Code×Terraform IaC テンプレート駆動開発
itouhi
1
460
Mastering Ruby Box
tagomoris
3
150
10倍の生産性を実現するAI駆動並列エージェントのすべて
kumaiu
4
1.2k
Kubernetesにおける学習基盤とLLMOpsの概要
ry
1
130
Featured
See All Featured
Everyday Curiosity
cassininazir
0
230
The browser strikes back
jonoalderson
0
1.2k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
560
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
23k
How to Think Like a Performance Engineer
csswizardry
28
2.6k
RailsConf 2023
tenderlove
30
1.5k
Practical Orchestrator
shlominoach
191
11k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.9k
A Modern Web Designer's Workflow
chriscoyier
698
190k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
380
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