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
Chaos Engineering with Chaos Mesh
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
oracle4engineer
PRO
July 20, 2022
Technology
1.2k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Chaos Engineering with Chaos Mesh
Chaos Night #1 - カオスエンジニアリングの夕べ
で使用した資料です。
oracle4engineer
PRO
July 20, 2022
More Decks by oracle4engineer
See All by oracle4engineer
【Oracle AI SPOTLIGHT ウェビナー】分散した企業データをつなぎ、AIエージェントで業務に活かす
oracle4engineer
PRO
1
76
Deep Data Security 機能解説
oracle4engineer
PRO
3
1k
Autonomous AI Lakehouse - Live AI Hubから始めるセキュアなAIデータ活用 -
oracle4engineer
PRO
3
200
Oracle Database Security 詳細解説
oracle4engineer
PRO
2
280
【Oracle AI SPOTLIGHT ウェビナー】事例から見る!なぜOCIが選ばれたのか ― AI時代のクラウド戦略を紐解く ―
oracle4engineer
PRO
2
160
Oracle Cloud Infrastructure:2026年10月度サービス・アップデート
oracle4engineer
PRO
1
310
Kubernetesで作るLLM推論基盤(OCHaCafe Season 12 #1)
oracle4engineer
PRO
1
210
【Oracle AI Spotlight ウェビナー】AI活用を支えるデータ基盤とは ― いま押さえておきたい Oracle AI Database 26ai の注目機能
oracle4engineer
PRO
0
140
kagent で Kubernetes 運用を考える
oracle4engineer
PRO
1
520
Other Decks in Technology
See All in Technology
自律的なチームを作るためにTechPMがやらないこと
ny7760
1
530
IBC 2026 動画技術関連レポート / IBC 2026 Report
cyberagentdevelopers
PRO
2
440
分析作業をどこまで任せるか自分で決められる AIネイティブBI『Golden Analytics』が 良さげな話 /golden-analytics-is-ai-native-bi
shinyaa31
0
130
詳解 never 型 - ボトム型の性質を深掘り
nealle
0
160
[dbts2026]数十PBの超巨大データ×AI活用を支えるSnowflakeの実力〜大規模環境におけるアーキテクチャと運用のリアル〜
y_matsubara
0
110
Content Mapper APIの応用例~CSS Modules、言語ファイル~
uhyo
2
620
ライフワーク「猫でもわかるDirectConnect」
kentapapa
0
280
FinOpsを導入してマルチプロダクトのコスト最適化を実現する
kworkdev
PRO
0
140
試験勉強はGrokBotでやれ
maigo999
0
110
Lint の層を組み直した話
bengo4com
3
320
リアクションエンジニア ― 小さなリアクションから、話しかけやすい組織をつくる ―
ryuguyana
1
130
少ない人手 限られた予算 それでも守る 消せない・見つける・戻れる オールハザード型BCP on AWS / 20261107 Mitsutoshi Matsuo
shift_evolve
PRO
0
230
Featured
See All Featured
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
570
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
370
Darren the Foodie - Storyboard
khoart
PRO
4
4.1k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
630
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
560
Making the Leap to Tech Lead
cromwellryan
135
10k
The Curious Case for Waylosing
cassininazir
1
610
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.9k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
560
Speed Design
sergeychernyshev
33
2.2k
Transcript
Chaos Engineering w/ Chaos Mesh Chaos Night #1 Shuhei Kawamura
Cloud Solution Engineer Solutions Architect, Oracle Corporation Japan July 20, 2022
Copyright © 2022, Oracle and/or its affiliates 2 • 日本オラクル株式会社
• ソリューション・アーキテクト本部 • OCHaCafe メンバー • 担当領域 • Cloud Native, App Dev • Data Platform(Spark周り) • AI Services • Search Service with OpenSearch • (趣味) 認証・認可関連 • 趣味 • サウナ、料理、音楽、スノーボード 川村 修平 (Shuhei Kawamura) @shukawam Twitter/GitHub/Qiita
Copyright © 2022, Oracle and/or its affiliates 3 • Cloud
Native な環境(Kubernetes)用に設計されたカオスエンジニアリングプラットフォーム • https://chaos-mesh.org/ • 最新版は、v2.2.2 (※ 2022/07 現在) • Kubernertes v1.15 ~ 1.23 が動作対象 • https://chaos-mesh.org/docs/supported-releases/#how-we-determine-supported-kubernetes-versions • ユーザーフレンドリーな UI を提供 • 実験の作成や進行状況のモニター機能 • 豊富な実験タイプを CRD(Custom Resource Definitions) として提供 • Tool Integration • Grafana, GitHub Actions • 安全に実験を行うための機能をサポート • Dashboard に対する Kubernetes の RBAC 機能を用いた権限制御(Manager/Viewer) • 実験の対象範囲を制御する namespace でのフィルタリング Chaos Mesh Open Source Cloud-Native Chaos Engineering platform $ kubectl annotate ns $NAMESPACE chaos-mesh.org/inject=enabled
Copyright © 2022, Oracle and/or its affiliates 4 fault types
description PodChaos Pod の障害をシミュレート(failure, kill, container kill) NetworkChaos Pod 間の Network の障害をシミュレート(partition, loss, delay, duplicate, corrupt, bandwidth) DNSChaos DNS 障害をシミュレート(error, random) HTTPChaos HTTP 通信の障害をシミュレート(abort, delay, replace, patch) StressChaos CPU, RAM の競合をシミュレート IOChaos I/O 障害をシミュレート(latency, fault, modify) TimeChaos システム時間を変更し、summer time やその他時間に関連するイベントへ の適応をシミュレート KernelChaos カーネル障害をシミュレート(メモリ割り当ての例外、etc.) JVMChaos JVM の障害をシミュレート(exception, gc, latency, stress, etc.) AWSChaos AWS の障害をシミュレート(EC2 stop/restart, detach volume) GCPChaos GCP の障害をシミュレート(GCE stop/restart, disk loss) AzureChaos Azure の障害をシミュレート(VM stop/restart, disk detach) Fault Injection 豊富な種類の障害タイプを CRD(Custom Resource Definitions) として提供
Copyright © 2022, Oracle and/or its affiliates 5 • 実験の作成方法
• Web UI(Chaos Dashboard) から作成する • 簡易的な検証用途 • Web UI から入力した情報をもとに実験の定義(Manifest)を取得する • Manifest を書いて kubectl apply する • おすすめはこちら • 実行方法 • 一つの実験を一回だけ実行する • 一つの実験をスケジュール実行する • 一つ以上の実験をワークフローとして実行する 実験の作成方法と実行方法
Copyright © 2022, Oracle and/or its affiliates 6 実行方法 #1
一つの実験を一回だけ実行する kind: PodChaos # fault types(PodChaos, NetworkChaos, IOChaos, etc.) apiVersion: chaos-mesh.org/v1alpha1 metadata: namespace: chaos-testing name: pod-kill spec: selector: # 実験対象の絞り込み namespaces: - k8s-helidon-app labelSelectors: app: k8s-helidon-app mode: one # 実行モード(one/all/fixed/fixed-percent/random-max-percent) action: pod-kill # action gracePeriod: 0
Copyright © 2022, Oracle and/or its affiliates 7 実行方法 #2
一つの実験をスケジュール実行する kind: Schedule # Schedule 実行 apiVersion: chaos-mesh.org/v1alpha1 metadata: namespace: chaos-testing name: pod-kill-scheduled spec: schedule: 30 19 * * * # cron concurrencyPolicy: Forbid # 実験の同時実行許可(Allow/Forbid) historyLimit: 1 # 履歴の保持件数 type: PodChaos # fault types(PodChaos, NetworkChaos, IOChaos, etc.) podChaos: selector: # 実験対象の Pod を絞り込み namespaces: - k8s-helidon-app labelSelectors: app: k8s-helidon-app mode: one action: pod-kill gracePeriod: 0
Copyright © 2022, Oracle and/or its affiliates 8 Chaos Mesh
では、カオス実験のワークフローを作成するために、以下の機能を持つ 実行方法 #3 一つ以上の実験をワークフローとして実行する features description 直列(Serial)実行 複数の実験、タスクを順番に実行する 並列(Parallel)実行 複数の実験、タスクを並列に実行する(複雑な条件のシミュレートに有効) Custom Task 任意のコンテナイメージを用いて独自定義の処理を実行する。実行結果による条件分岐も可能 Suspend 待ち時間を発生させる Status Check ステータスの確認を行うタスク(HTTPのリクエストを発行し、ステータスコードを確認する) e.g. 定常状態の測定、イベントの注入、実験中の状態の測定を行い、完了後の通知を自動的に行うワークフロー Task Task HTTP Request Incoming Webhook PodChaos
Copyright © 2022, Oracle and/or its affiliates 9 実行方法 #3
一つ以上の実験をワークフローとして実行する apiVersion: chaos-mesh.org/v1alpha1 kind: Workflow # ワークフロー実行 metadata: name: pod-kill-workflow namespace: chaos-testing spec: entry: entry # ワークフローのエントリーポイント templates: - name: entry templateType: Serial # Serial 実行 deadline: 3m children: # 上から順番に実行される - k6-load-test-in-steady-state - event-injection
Copyright © 2022, Oracle and/or its affiliates 10 実行方法 #3
一つ以上の実験をワークフローとして実行する - name: k6-load-test-in-steady-state templateType: Task task: container: name: k6-load-test image: grafana/k6 command: # K6 を用いて、疑似トラフィックを再現 - k6 - run - "--out" - "influxdb=http://influxdb.shukawam.com/chaosjp" - "--vus" - "10" - "--duration" - "30s" - "script.js" volumeMounts: - mountPath: /home/k6 name: k6-script volumes: - name: k6-script configMap: name: k6-configmap import http from "k6/http"; import { check, sleep } from "k6"; export default function () { const res = http.get("http://helidon.shukawam.com/greet"); check(res, { "is status code 200": (r) => r.status === 200, }); sleep(1); }
Copyright © 2022, Oracle and/or its affiliates 11 実行方法 #3
一つ以上の実験をワークフローとして実行する - name: event-injection templateType: Parallel # Parallel 実行 deadline: 2m children: # 並列に実行される(Pod を kill しながら疑似トラフィックを流す) - pod-kill-random - k6-load-test-in-chaos-state - name: pod-kill-random templateType: PodChaos deadline: 1m podChaos: selector: namespaces: - k8s-helidon-app labelSelectors: app: k8s-helidon-app mode: one action: pod-kill
Copyright © 2022, Oracle and/or its affiliates 12 実行方法 #3
一つ以上の実験をワークフローとして実行する - name: k6-load-test-in-chaos-state templateType: Task task: container: name: k6-load-test image: grafana/k6 command: - k6 - run - "--out" - "influxdb=http://influxdb.shukawam.com/chaosjp" - "--vus" - "10" - "--duration" - "30s" - "script.js" volumeMounts: - mountPath: /home/k6 name: k6-script volumes: - name: k6-script configMap: name: k6-configmap import http from "k6/http"; import { check, sleep } from "k6"; export default function () { const res = http.get("http://helidon.shukawam.com/greet"); check(res, { "is status code 200": (r) => r.status === 200, }); sleep(1); }
Copyright © 2022, Oracle and/or its affiliates 13 カオス実験の 4
つのプロセス: 1. 定常状態を定義する • “app: k8s-helidon-app” のラベルが付いたPod がすべて Status: Running な状態で稼働している 2. 仮説を立てる • 任意の Pod を kill しても K8s のセルフヒーリングに より元の状態に戻る 3. 現実世界のイベントを反映する変数を導入する • Chaos Mesh(PodChaos) を用いて、ランダムに Pod を一つ kill してみる 4. 仮説を検証する Demo: Chaos Mesh Load Balancer OKE Inject PodChaos … $ kubectl get pods -w NAME READY STATUS RESTARTS AGE k8s-helidon-app-777b65c7-85n2v 1/1 Running 0 39m k8s-helidon-app-777b65c7-tr78g 1/1 Running 0 39m k8s-helidon-app-777b65c7-v64vb 1/1 Running 0 39m k8s-helidon-app-777b65c7-v64vb 1/1 Terminating 0 49m k8s-helidon-app-777b65c7-v64vb 1/1 Terminating 0 49m k8s-helidon-app-777b65c7-fvxlc 0/1 Pending 0 0s k8s-helidon-app-777b65c7-fvxlc 0/1 Pending 0 0s k8s-helidon-app-777b65c7-fvxlc 0/1 ContainerCreating 0 0s k8s-helidon-app-777b65c7-fvxlc 0/1 Running 0 1s k8s-helidon-app-777b65c7-fvxlc 1/1 Running 0 35s
Copyright © 2022, Oracle and/or its affiliates 14 その他の話はこちらから! 参考
https://speakerdeck.com/oracle4engineer/how-to-chaos-engineering
Copyright © 2022, Oracle and/or its affiliates 15 • Chaos
Engineering は、実験なので計画を立てたうえでやってみることが重要 • Chaos Mesh • Open Source Cloud-Native Chaos Engineering platform • リッチな UI、豊富な fault types、様々な Tool Integration、拡張性 • 安全に実験を行う仕組みも複数あり まとめ
Copyright © 2022, Oracle and/or its affiliates 16 • 開発者・エンジニアにお届けするテクニカ
ルな勉強会です • クラウドネイティブな時代に身に着けてお くべきテクノロジーを深掘りしていきます • テーマはオープン/デファクト・スタンダード を基準に選定し、Oracle固有な話題に はならないように、且つ学んだ知識は広く 応用が利くように、配慮しています Season 5 • Kubernetes Operator 超入門 • Kubernetes で並列分散処理 • Kubernetes のセキュリティ • 挑戦 TypeScript • 実験!カオスエンジニアリング • MLOps を始めよう! Season 6 is coming soon!
Copyright © 2022, Oracle and/or its affiliates 17 #OCHaCafe History
Season 1 • コンテナを使った CI/CD • Microservices の運用・管理 • Microservices な Java アプリケーション • Hyperledger Facric なアプリケーション設計入門ガイド • 避けては通れない!認証・認可 • 人にもマシンにもやさしい API のエコシステム Season 2 • これからはじめる!Kubernetes 基礎 • 一体何モノなの?GraalVM 入門 • Serverless な世界をのぞいてみよう! • Cloud Native 時代のモダン Java の世界 • 変幻自在♪ 広がる Kubernetes のエコシステム • Cloud Native × Streaming はじめの一歩 Season 3 • Cloud Native 流のストレージ管理 • サービス間通信のトレンド – gRPC & GraphQL 入門 • Kubernetes クラスタの管理術 • 挑戦!Java で Reactive プログラミング • 明解!NoSQL の勘所 • コンテナ・ランタイムの未来 Season 4 • 生体認証のイロハ • Kubernetes のネットワーク • CI/CD 最新事情 • マイクロサービスの認証・認可と JWT • Kubernetes のオートスケーリング • Observability 再入門 Season 5 • Kubernetes Operator 超入門 • Kubernetes で並列分散処理 • Kubernetes のセキュリティ • 挑戦!TypeScript • 実験!カオスエンジニアリング • MLOps を始めよう! OCHaCafe Premium (Oracle フォーカス spin-off) • Oracle Cloud で考える高可用性アーキテクチャ • クラウド・アプリケーションのパフォーマンス • Oracle Cloud Infrastructure Cloud Native 2021 • マイクロサービスとデータマネジメント • クラウドで実践する Enterprise Java アーカイブサイト >> https://developer.oracle.com/jp/cloud-hangout-cafe/
Thank you Copyright © 2022, Oracle and/or its affiliates 18
None