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
Backlog における Kubernetes の取り組み / Kubernetes's ap...
Search
株式会社ヌーラボ
PRO
March 08, 2019
Technology
0
1.1k
Backlog における Kubernetes の取り組み / Kubernetes's approach in Backlog
2019/3/8 ヌーラボ 福岡本社で行われたGeeks Who Drinkでの発表資料です。
株式会社ヌーラボ
PRO
March 08, 2019
Tweet
Share
More Decks by 株式会社ヌーラボ
See All by 株式会社ヌーラボ
サクフェス2024_ヌーラボ原_CSと開発
nulabinc
PRO
0
5
チームの力を成果に変える、次世代のマネジメント術 〜中小企業の生産性革命〜
nulabinc
PRO
0
26
チームワークマネジメントとは
nulabinc
PRO
0
8
チームの未来を支えるバックログスイーパーという役割
nulabinc
PRO
0
6
ヌーラボが取り組む RevOpsのこれまでとこれから
nulabinc
PRO
1
140
【資料】30分でわかる!“とりあえず課題を作った”から抜け出すBacklog活用術
nulabinc
PRO
0
140
【展示会ご参加者様向け】Backlog概要編-配布資料
nulabinc
PRO
0
52
Why Platform Engineering? - マルチプロダクト・少人数 SRE の壁を越える挑戦 -
nulabinc
PRO
5
780
Datadog のトライアルを成功に導く技術 / Techniques for a successful Datadog trial
nulabinc
PRO
0
450
Other Decks in Technology
See All in Technology
Skrub: machine-learning with dataframes
gaelvaroquaux
0
120
AWSで推進するデータマネジメント
kawanago
1
1.3k
下手な強制、ダメ!絶対! 「ガードレール」を「檻」にさせない"ガバナンス"の取り方とは?
tsukaman
2
420
生成AI時代のデータ基盤設計〜ペースレイヤリングで実現する高速開発と持続性〜 / Levtech Meetup_Session_2
sansan_randd
1
150
これでもう迷わない!Jetpack Composeの書き方実践ガイド
zozotech
PRO
0
310
なぜスクラムはこうなったのか?歴史が教えてくれたこと/Shall we explore the roots of Scrum
sanogemaru
5
1.6k
COVESA VSSによる車両データモデルの標準化とAWS IoT FleetWiseの活用
osawa
1
260
Kiroと学ぶコンテキストエンジニアリング
oikon48
6
9.9k
テストを軸にした生き残り術
kworkdev
PRO
0
190
Rustから学ぶ 非同期処理の仕組み
skanehira
1
130
2025年になってもまだMySQLが好き
yoku0825
8
4.6k
Aurora DSQLはサーバーレスアーキテクチャの常識を変えるのか
iwatatomoya
1
780
Featured
See All Featured
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
YesSQL, Process and Tooling at Scale
rocio
173
14k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
The Power of CSS Pseudo Elements
geoffreycrofte
77
6k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
30
9.6k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.5k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
The World Runs on Bad Software
bkeepers
PRO
70
11k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.9k
Embracing the Ebb and Flow
colly
87
4.8k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.5k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
920
Transcript
Backlog における Kubernetes の取り組み Yuki YOSHIIWA Geeks Who Drink in
Fukuoka Front End Edition 2
Yuki YOSHIIWA a.k.a. iwa Web Frontend Engineer @ Nulab Inc.
React, TypeScript がだいすき! スイスがすきなので Scala がすき! ≡ もすきです! わんこだいすき! これは若かりし時の我が仔
突然ですが、
Backlog は UX 向上にゼンリョク! 速くて使いやすい、新しい UI を作っています React, TypeScript
Scala (Akka HTTP, Play なし) GraphQL, WebSocket Kubernetes UX を最大化するためインフラレベルから見直し どうなるかはヒミツ
なんでやるの?
現世代 Backlog の課題
運用つらい問題 国内・海外に複数の環境 現在8 環境 サーバー台数は200 台+ 伸びるリリース時間…
いくつか対策はしている 今回は割愛 詳しくは SRE チームに
運用つらい問題 サービスいっぱい Issue, Wiki, Git, File, ... これからも増える予定
サービスが増えることで、 運用コストが跳ね上がるの は避けたい
サービス増でつらくならないように いくつか Dockerize ECS で動かしている ステートレスな設計 リリース簡単で速い!
今後はコンテナーベースに していきたい
Kubernetes
Kubernetes とは Google が社内で培ってき たコンテナー運用にまつわ る知見を元に設計・開発し た、オープンソースのコン テナーオーケストレーショ ンシステム →Google
がやってきたこ とを一般化したもの
Kubernetes とは Cluster Master Node kubeapiserver Node Node scheduler controller
manager etcd kubectl kubelet kubeproxy container runtime Pod containers
Kubernetes とは オーケストレーション ( コ ンテナーの構成・設定) は yaml で管理する
yaml を正とする運用 (single source of truth) レビューがやりやすい
Kubernetes とは ほとんどの関心事を yaml に落とし込める 接続先などの設定 スケーリングの閾値
アップデート時の動作 Infrastructure as Code の 極致と言えるのでは
Kubernetes とは やりすぎた例 VM を管理 K8s を管理
データセンターを管理 独自のリソース定義を作る ことで、割となんでもでき るカスタマイズ性
Kubernetes とは 耐障害性が非常に高い 優れたスケジューラ 死活監視 セルフヒーリング ホスト/
コンテナーが落ち てもすぐに復旧する!
Cacoo も使っている!
EKS 、キミにきめた!
EKS とは AWS が提供するマネージ ド Kubernetes サービス 面倒ごとから解放される
クラスターの管理 アップデート Outofbox で AWS のサ ービスと統合されている
EKS とは Cluster Master Node kubeapiserver Node Node scheduler controller
manager etcd kubectl kubelet kubeproxy container runtime Pod containers
EKS とは Cluster Master Node kubeapiserver Node Node scheduler controller
manager etcd kubectl kubelet kubeproxy container runtime Pod containers API Server など K8s の 根幹となる機能を提供
EKS とは Cluster Master Node kubeapiserver Node Node scheduler controller
manager etcd kubectl kubelet kubeproxy container runtime Pod containers API Server など K8s の 根幹となる機能を提供 落ちたらまずい 部分を運用しな くていい安心感 アップデートを 自動でやってく れる嬉しい!
EKS とは Cluster Master Node kubeapiserver Node Node scheduler controller
manager etcd kubectl kubelet kubeproxy container runtime Pod containers API の認証・認可に IAM Role を使える
EKS とは Cluster Master Node kubeapiserver Node Node scheduler controller
manager etcd kubectl kubelet kubeproxy container runtime Pod containers Node には EKS に最適 化された AMI を使用 Node のスケーリング には Auto Scaling Group を使用
EKS とは Cluster Master Node kubeapiserver Node Node scheduler controller
manager etcd kubectl kubelet kubeproxy container runtime Pod containers Node には EKS に最適 化された AMI を使用 Node のスケーリング には Auto Scaling Group を使用 信頼と実績のあ る Auto Scaling Group !
なんで EKS ? Cacoo は自分でクラスターを作っていなかった? Cacoo チームからつらいところを聞いていた アップデートなど…
マネージド K8s が良いという話は聞いていた GKE, AKS は検討しなかった? AWS を利用しているので EKS にした ハイブリッドクラウドはコスト面で厳しい
実際にあった話
実際にあった話 Critical! 早く対応しない といかん! K8s 初の深刻な セキュリティ インシデント
実際にあった話 CVE20181002105 という、特殊なリクエストを行 うことで権限昇格することができる、危険性の高い 脆弱性が見つかる K8s 本体をアップデートしないといけない 本体のアップデートはやることが多く非常に面倒
実際にあった話 EKS の対応のタイムライン 2018/12/04 02:01 JST: K8s チームがアナウンス
2018/12/04 13:28 JST: 問い合わせ 2018/12/04 17:07 JST: AWS から対応中と返事 2018/12/05 17:58 JST: 対応完了の知らせ この間、コマンドを叩くことも、画面からぽちぽち することもなく、アップデート完了
実際にあった話 EKS の対応のタイムライン 2018/12/04 02:01 JST: K8s チームがアナウンス
2018/12/04 13:28 JST: 問い合わせ 2018/12/04 17:07 JST: AWS から対応中と返事 2018/12/05 17:58 JST: 対応完了の知らせ この間、コマンドを叩くことも、画面からぽちぽち することもなく、アップデート完了 マネージド 最高!
Backlog における EKS の構成管理
Backlog のアーキテクチャ
Backlog のアーキテクチャ Internet nginx web api git svn MySQL Redis
log
Backlog のアーキテクチャ Internet nginx web api git svn MySQL Redis
log Master kubeapiserver Node Pod New UX Service
Backlog のアーキテクチャ Internet nginx web api git svn MySQL Redis
log Master kubeapiserver Node Pod New UX Service 既存 VPC 内に K8s の Node を配置している
Backlog のアーキテクチャ Internet nginx web api git svn MySQL Redis
log Master kubeapiserver Node Pod New UX Service インターネットからの アクセスは、nginx → K8s から作成した ELB と流れる
Backlog のアーキテクチャ Internet nginx web api git svn MySQL Redis
log Master kubeapiserver Node Pod New UX Service DB などにはコンテナー から直接アクセス
EKS の構成管理
Terraform Terraform を利用 Backlog で実績アリ 既存と組み合わせやすい eksctl は検討したが、マ
ッチしなかったので除外
Terraform 管理対象 IAM Role Network (Subnet, etc)
EKS Cluster Node Auto Scaling Group
Terraform Terraform で Node の AMI を変更しても Node が入 れ替わらない…
→Terraform では Auto Scaling Group を変更して もローリングアップデートがかからないことがわか った どうするか
Terraform + CloudFormation +
Terraform 管理対象 IAM Role Network (Subnet, etc)
EKS Cluster 主に K8s の Master や、 ネットワーク周りを管理し ている
CloudFormation (CFn) AWS 公式 EKS Node のテ ンプレートを利用 Node
の面倒を引き受け CFn を利用することで Auto Scaling Group 更新 時にローリングアップデー トがかかるように!
Terraform + CloudFormation 定常業務が terraform apply で済むようになった
Terraform + CloudFormation terraform apply するとローリングアップデートが かかるため、ダウンタイムなしに 更新できる
とても嬉しい! Amazon Linux 2 のセキュリ ティインシデントが… ↓ AMI を変更して terraform
apply
とても嬉しい! K8s のセキュリティインシデ ントで AMI 入れ替えないと… ↓ AMI を変更して terraform
apply
とても嬉しい! K8s のバージョンアップしたい! ↓ 該当のバージョン用の AMI に変更して terraform apply
とても嬉しい! terraform apply するだけなので とても楽になった
まとめ
まとめ ・Kubernetes (K8s) はとても良いです ・マネージド K8s はすぐに使えて運用も楽です ・EKS を terraform
で作るときは CloudFormation を terraform で作るようにしましょう… ・フロントエンドに疲れた方は Kubernetes やってみ ませんか?
ヌーラボに興味がある方はこちら!