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
oracle4engineer
PRO
July 20, 2022
Technology
1.1k
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
OCI Oracle AI Database Services新機能アップデート(2026/06-2026/08)
oracle4engineer
PRO
0
380
OKE の進化 - Oracle Cloud Infrastructure Kubernetes Engine の現在地 -
oracle4engineer
PRO
0
260
【Oracle AI Spotlight ウェビナー】クラウド移行の成否を分けるデータ基盤の配置戦略 ― マルチクラウドやソブリンクラウドで広がるデータ基盤の選択肢
oracle4engineer
PRO
1
74
Oracle Cloud Infrastructure IaaS 新機能アップデート 2026/6 - 2026/8
oracle4engineer
PRO
0
230
Autonomous AI Databaseサービス・アップデート(FY27)/ adb-service-update-jp-fy27
oracle4engineer
PRO
0
160
【Oracle AI Spotlight ウェビナー】AWSか、Azureか、Google Cloudか。その議論にオラクルを含める意義。
oracle4engineer
PRO
2
270
Oracle AI Databaseデータベース・サービス: BaseDB/ExaDB-Dの可用性
oracle4engineer
PRO
2
1.2k
もうプロンプトは書かない!? ループエンジニアリング入門
oracle4engineer
PRO
2
580
[ OracleTechnologyNight#102]SQL性能改善の武器としてのパラレル実行詳細
oracle4engineer
PRO
1
290
Other Decks in Technology
See All in Technology
山手線を徒歩で一周してわかった、 位置情報アプリは「足」が最強のデバッガー
hinakko
0
170
Issue 駆動でスペシャリストの意図を届ける、AI 実装のアクセシビリティ向上
thkt
0
120
aws-iot-platform-architecture-use-cases.pdf
ma2shita
0
410
The Knowledge Spine: A Machine-Executable Ontology for Governed Marketing Activation
vananth22
0
120
AIで社員の自主発信に広報目線を組み込む
_mossann_t
0
130
SREへの勘違いに気づいた後の話
tomodakengo
0
110
リアーキテクチャ後の障害ゼロを目指したShadow Testingの取り組み
nihonbuson
PRO
1
160
技術的負債から考える、AI時代のエンジニアリング投資 — ビズリーチの技術的負債と向き合った経験から、変更し続けられるソフトウェアを考える/ technical-debt-con2026
visional_engineering_and_design
4
3.3k
Vibe Coding で作ったプロダクトをどう安全に動かすか / How to Safely Run Products Built with Vibe Coding
glidenote
0
370
データ界隈LT祭 第1回LT登壇
taromatsui_cccmkhd
2
1.5k
AI時代の「技術的負債」の変質ー概念の終焉と再解釈、エージェントと共に向かう先
nwiizo
1
2.9k
「ピッケル本」日本語版は4.0(第6版)が出版されるべき / pickaxe4-nagoyark05
kakutani
2
240
Featured
See All Featured
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
280
Mobile First: as difficult as doing things right
swwweet
225
10k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
730
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
940
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
530
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
320
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
200
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
The agentic SEO stack - context over prompts
schlessera
0
940
WCS-LA-2024
lcolladotor
0
830
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