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
ChatworkDevDay_Kubernetes導入における実践プラクティス / Chatw...
Search
sasaki
May 26, 2021
Technology
8k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ChatworkDevDay_Kubernetes導入における実践プラクティス / ChatworkDevDay_Kubernetes
https://lp.chatwork.com/devday/2021/
sasaki
May 26, 2021
More Decks by sasaki
See All by sasaki
FinOpsとタグ付け防止対策 / CCoE Osaka FinOps Tags
taishin
1
280
Glacierだからってコストあきらめてない? / JAWS Meet Glacier Cost
taishin
1
440
スケールするプロダクトと膨らむ組織 SREの挑戦と解決策 / Findy Job LT SRE
taishin
0
170
組織の変化とSREの役割進化 責務拡大にどう応えるか / globis_sre
taishin
0
400
Lambdaの運用についてのなにか / lambda_unyo
taishin
0
210
おすすめAWSコスト対策 / AWS Startup Meetup Osaka AWS Cost
taishin
1
520
プラットフォームってつくることより計測することが重要なんじゃないかという話 / Platform Engineering Meetup #8
taishin
1
1.5k
ECS Runtime Monitoring で コンテナランタイムセキュリティに入門 / nakanoshima-dev-ecs-runtime-monitoring
taishin
0
370
JAWS-UG-Osaka-guardrail
taishin
0
410
Other Decks in Technology
See All in Technology
型は壁、Rustでもバグを直すな、表現できなくせよ
nwiizo
12
1.8k
依頼文化をやめる日 EM視点で語るPlatform EngineeringとInclusive SRE / Discussing Platform Engineering and Inclusive SRE from an EM's Perspective
shin1988
4
4.3k
AI時代のエンジニアキャリアについて今一度考える
sakamoto_582
2
1.3k
AIペネトレーションテスト・ セキュリティ検証「AgenticSec」紹介資料
laysakura
2
8.1k
記録をかんたんに、提案をパーソナルに ── AIであすけんが目指すもの
oprstchn
0
170
はじめてのWDM
miyukichi_ospf
1
120
知見・人・API・DB・予算 ─ ナイナイ尽くしだった人事データ整備 with dbt、5年間の学び
ken6377
1
170
キャリアの中で本を作る / Making a Book During Your Career
ak1210
0
120
DMM.com 購入改善推進チーム におけるCodeRabbitを用いた レビューフロー改善の一例
ysknsid25
2
530
オブザーバビリティ、本当に活用できてる? 〜API連携×生成AIで成熟度を自動評価〜
dmmsre
1
2.2k
次世代ランサムウェア対策の考察 / 20260704 Mitsutoshi Matsuo
shift_evolve
PRO
5
1.7k
攻撃者がいなくてもAIエージェントはインシデントを起こす
nomizone
0
200
Featured
See All Featured
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Utilizing Notion as your number one productivity tool
mfonobong
4
350
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Leo the Paperboy
mayatellez
8
1.9k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
420
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
210
Java REST API Framework Comparison - PWX 2021
mraible
34
9.4k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
500
The SEO identity crisis: Don't let AI make you average
varn
0
510
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
270
Transcript
SESSION Kubernetes 導入における 実践プラクティス
SESSION Immutable Clusterに対する 定期Version Upgrade戦略
AGENDA 1. EKSのImmutable Clusterによる運用に 至るまでの経緯 2. クラスタのアップデートの流れ
1 EKSのImmutable Clusterによる 運用に至るまでの経緯
EKSの前の時代 - 現在はEOLだが、EKSのなかった時代のKuberentes構成ツール - コントローラも含めてEC2のプロビジョニング - 1年に1回のアップデートだったので、差分が多く、ローリングアップデートは不可 kube-aws時代 - アプリケーション側の移行に時間がかかる
- 1年に1回のアップデートだったので、Kubernetes側の変更箇所が多い - デプロイツールが微妙で、クラスタ依存の変更が多く、開発の傍らでパワーが必要 クラスタアップデート時の問題 - クラスタ側、アプリケーション側にKubernetesへの変更追従が辛い - Kubernetes側の新しい機能が使えない 1年に1回のつらみ
- 構築ツールとしてeksctlの採用 - ニッチなツールや自作は減らす(ラッパーはあるけど) - クラスタ構築自体の負荷が減った EKSの強みを活かす - クラスタ運用負荷を減らす -
アプリケーション側の移行負荷を減らす - helmfile(パッケージ化) + GitOpsの採用 クラスタアップデート時の問題の解決 - Kubernetesの(ほぼ)最新の機能を利用可能 - セキュリティ的にも◎ - 変更追従が少なく、結果的に負荷が少ない - 変更箇所を少なくするように構築環境を整備したのもある 1年に1回から3ヶ月に1回の世界へ EKS後の時代
2 クラスタのアップデートの流れ
クラスタのアップデートの流れ(クラスタ作成) - バージョンごとのクラスタを作成 - 各アプリケーションは(ある程度期限を決 めて)開発者側のタイミングで移行 - SREはクラスタの作成と管理系アプリ ケーション(Datadog, fluentd,
etc)の インストールまでが責務
クラスタのアップデートの流れ(アプリケーションの移行)
おわり
SESSION Kubernetes CI / CD の構成例
1 Immutable Clusterでの アプリケーション管理
EKS(Kubernetes)導入前のCI/CD
EKS(Kubernetes)導入前のCI/CD Deploy Config Prod CI/CD Pipeline Stage Test Application CI
Tool
EKS(Kubernetes)導入前のCI/CD Deploy Config Prod CI/CD Pipeline Stage Test Application CI
Tool RUN
EKS(Kubernetes)導入前のCI/CD Deploy Config Prod CI/CD Pipeline Stage Test Application CI
Tool Pull Pull
EKS(Kubernetes)導入前のCI/CD Deploy Config Prod CI/CD Pipeline Stage Test Application CI
Tool Build
EKS(Kubernetes)導入前のCI/CD Deploy Config Prod CI/CD Pipeline Stage Test Application CI
Tool Deploy Deploy Deploy
EKS(Kubernetes)導入後
EKS(Kubernetes)導入後 Deploy Config Prod Cluster CI/CD Pipeline Stage Cluster Test
Cluster Application CI Tool Deploy Deploy Deploy
EKS(Kubernetes)導入後 Deploy Config Old Prod CI/CD Pipeline Old Stage Old
Test Application CI Tool Deploy Deploy Deploy New Prod New Stage New Test Blue Green
EKS(Kubernetes)導入後 Deploy Config Old Prod CI/CD Pipeline Old Stage Old
Test Application CI Tool Deploy Deploy Deploy New Prod New Stage New Test Blue Green クラスタが追加される度にデプロイ先の変更 Immutable Cluster、Blue/Greenデプロイ対応のためのクラスタ数の増加 移行期間中の並行稼動時のデプロイ先指定 EKSのアップデートポリシーに追随するため3〜4ヶ月おきに発生・・・
GitOps!!
Immutable Cluster環境にGitOps • GitOps ◦ Git上の構成ファイルをSingle Of Truthとする ◦ CIとCDを分離
• 一般的なGitOpsのメリット ◦ PR → レビューのフロー ◦ 履歴管理 ◦ セキュリティの分離 • Immutable Cluster環境におけるGitOpsのメリット ◦ クラスタからGitに同期させることで正しい状態にすることができる
Blue Green Immutable Cluster環境にGitOps Deploy Config Old Prod Old Stage
Old Test Application New Prod New Stage New Test Sync Sync Sync Sync Sync Sync
Blue Green Immutable Cluster環境にGitOps Deploy Config Old Prod Old Stage
Old Test Application New Prod New Stage New Test Sync Sync Sync Sync Sync Sync クラスタ構築時にアプリケーションの デプロイまで完了
2 GitOpsによる ChatworkのCI/CD
構成とフロー
ChatworkのCI/CD Developer SRE Application k8s Config Helmfile Charts Container Registry
Kubernetes Cluster Sync CI Pipeline CD Pipeline
ChatworkのCI/CD Developer SRE Application k8s Config Helmfile Charts Container Registry
Kubernetes Cluster Sync CI Pipeline CD Pipeline
ChatworkのCI/CD Developer SRE Application k8s Config Helmfile Charts Container Registry
Kubernetes Cluster Sync CI Pipeline CD Pipeline
ChatworkのCI/CD Developer SRE Application k8s Config Helmfile Charts Container Registry
Kubernetes Cluster Sync CI Pipeline CD Pipeline Push
ChatworkのCI/CD Developer SRE Application k8s Config Helmfile Charts Container Registry
Kubernetes Cluster Sync CI Pipeline CD Pipeline Build
ChatworkのCI/CD Developer SRE Application k8s Config Helmfile Charts Container Registry
Kubernetes Cluster Update Sync CI Pipeline CD Pipeline Push
ChatworkのCI/CD Developer SRE Application k8s Config Helmfile Charts Container Registry
Kubernetes Cluster Out Of Sync CI Pipeline CD Pipeline
ChatworkのCI/CD Developer SRE Application k8s Config Helmfile Charts Container Registry
Kubernetes Cluster kubectl apply Manifest CI Pipeline CD Pipeline Out Of Sync
ChatworkのCI/CD Developer SRE Application k8s Config Helmfile Charts Container Registry
Kubernetes Cluster Sync CI Pipeline CD Pipeline
組織と役割
組織と役割 Developer SRE Application k8s Config Helmfile Charts Container Registry
Kubernetes Cluster CI Pipeline CD Pipeline
組織と役割 Developer SRE Application k8s Config Helmfile Charts Container Registry
Kubernetes Cluster CI Pipeline CD Pipeline • クラスタのバージョン差異を吸収する Chartを作成 • バージョン更新時に説明会の開催 • Helmfileのレビュー
おわり
Appendix. Helmfileとは? • Helmチャートをより宣言的に扱えるデプロイツール ◦ https://github.com/roboll/helmfile • デプロイに便利な機能 ◦ 複数チャートの依存関係を管理
◦ AWS ParameterStore連携 等 helmfile --environment prod apply Prod Test values.yaml / ├── helmfile.yaml └── values/ ├── values.yaml (共通のValue) ├── prod.yaml (Prod用のValue) └── test.yaml (Test用のValue) Helmfile prod.yaml helmfile --environment test apply values.yaml test.yaml