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
EKSと動的プロビショニングEFSを使ったマルチリージョンDR
Search
高棹大樹
June 05, 2024
Technology
550
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
EKSと動的プロビショニングEFSを 使ったマルチリージョンDR
高棹大樹
June 05, 2024
More Decks by 高棹大樹
See All by 高棹大樹
最新技術に積極チャレンジ!EKS共通基盤のこれまでとこれから
daitak
0
300
徹底討論!ECS vs EKS!
daitak
4
2.1k
金融システムで挑む!EKS Auto Mode導入ポイント大全
daitak
0
150
インフラエンジニア必見!Kubernetesを用いたクラウドネイティブ設計ポイント大全
daitak
1
810
EKS CapabilitiesでKube Resource Orchestrator(KRO)を試してみた!
daitak
0
160
Kubernetesと共にふりかえる! エンタープライズシステムのインフラ設計・テストの進め方大全
daitak
0
960
金融システムをモダナイズするためのAmazon Elastic Kubernetes Service(EKS)ノウハウ大全
daitak
1
270
CBになったのでEKSのこともっと知ってもらいたい!
daitak
1
320
金融システムをモダナイズするためのAmazon Elastic Kubernetes Service(EKS)ノウハウ大全
daitak
0
290
Other Decks in Technology
See All in Technology
bet_ai_day_2026_session02
agenticsec
2
1.3k
なぜSRE・セキュリティは評価されないのか?守りの組織を事業成長エンジンに変えた実践
cscengineer
PRO
3
2.3k
Backstageでつくるセルフサービスな社内開発基盤
kikunosuke75
1
360
Amazon Quick on DesktopがIAM Identity Centerで動かない理由
yukiogawa
0
100
Bet AI Day 2026丨バクラク Autopilot、業務システムの再設計
layerx
PRO
2
1.6k
AIに丸投げしないトイル削減 / Eliminating Toil Without Leaving It All to AI
kohbis
3
990
こんなアーキテクチャ図は嫌だ BEYOND THE TIME: 半年後の自分へ贈る15のメッセージ / 15 of Anti-pattern in AWS Architecture Diagrams
naospon
3
260
AIエージェントの開発・提供におけるセキュリティリスクの論点と対策
flatt_security
2
600
AndroidでHDRメディアを「壊さずに」扱う
chigichan24
0
420
Nav2、Nav3 ... はたまた自作?〜 作って理解する Nav3 の設計意図 〜 / Nav2, Nav3 ... or Build Your Own? — Understanding Nav3's design intent by building it from scratch
yanzm
0
260
Webとヘルスデータ
yukukotani
1
200
データエンジニアの困りごとをDevinと一緒に解消する
10xinc
2
850
Featured
See All Featured
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.8k
The Cost Of JavaScript in 2023
addyosmani
55
10k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
How to Think Like a Performance Engineer
csswizardry
28
2.8k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
The Curious Case for Waylosing
cassininazir
1
500
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
580
Deep Space Network (abreviated)
tonyrice
0
290
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
490
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Transcript
EKSと動的プロビショニングEFSを 使ったマルチリージョンDR Storage-JAWS #4 2024年6月5日 株式会社野村総合研究所 マルチクラウドインテグレーション事業本部 金融基盤サービス部 高棹 大樹
1 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
高棹 大樹 – Daiki Takasao NRI 金融基盤サービス部 • 金融機関様向けEKSを用いたマイクロサービス共通基盤 のインフラ担当 主な仕事 趣味 最近の困り事 • キャンプ • 筋トレ • 子供と遊ぶ(相手をしてくれる内に。。) • 飼っている猫が懐いてくれない
2 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
はじめに ◼EKSからEFSを扱う際に必要となるコンポーネントについて説明しつつ、その機能を使ったマルチ リージョンDR構成についてお伝えいたします
3 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
EKSのストレージの扱い方とプロビショニングについて 01 EKSのストレージとしてのEFS 02 EKSと動的プロビショニングEFSを使ったマルチリージョンDR 03
4 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
EKS(Elastic Kubernetes Service)とは? 1.EKSのストレージの扱い方とプロビショニングについて ◼ AWSのマネージドKubernetesサービス ◼ コントロールプレーンの管理が不要、 IAMユーザ/ロールによる認証(k8sでの証明書管理が不要)、などがメリット コントロールプレーンの管理が不要 コンテナ コンテナ コンテナ IAMユーザ/ロールによる認証 コントロールプレーン: ワーカーノードやコンテナの稼働を管理 ワーカーノード: コンテナの稼働環境
5 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
EKS(Kubernetes)のストレージの扱い方 1.EKSのストレージの扱い方とプロビショニングについて ◼PersistentVolume(PV)というKubernetesの永続ボリュームのリソースを使うのが一般的 ◼PersistentVolumeClaim(PVC)を作成し、PVCの条件(ボリュームサイズ、アクセスモード等)に合 致したPVを使える仕組み PersistentVolume(PV) 10GB ReadWriteOnce 100GB ReadWriteOnce 100GB ReadWriteMany サイズ:100GB アクセスモード:ReadWriteMany PersistentVolumeClaim(PVC) 条件に合致するPVが 見付かったのでBound コンテナ ストレージ
6 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
PVとストレージのプロビショニング 1.EKSのストレージの扱い方とプロビショニングについて ◼プロビショニング方法は以下の2つ ① 静的プロビショニング ⚫ クラスタ管理者がストレージとそれに対応するPVを 手動で作成する ⚫ 複数PVが必要だとプロビショニングに手が取られて しまうデメリットあり ② 動的プロビショニング ⚫ PVCが作成されたタイミングで条件に合致したPVと ストレージを自動作成する! ⚫ StorageClassを作成する必要あり クラスタ管理者 ストレージ ①ストレージを作成 ②PVを作成 ストレージ StorageClass PVとストレージを自動生成
7 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
PVとストレージの紐付け 1.EKSのストレージの扱い方とプロビショニングについて ◼Container Storage Interface(CSI)ドライバーを介してPVとストレージが紐付けられる ◼静的プロビショニングの場合、PVでCSIドライバーを指定 ◼動的プロビショニングの場合、 StorageClassでCSIドライバーを指定 CSIドライバー Node Plugin Controller Plugin ワーカーノード(kubelet)とやりとりする コントロールプレーン(APIサーバ)とやりとりする ストレージ 静的プロビショニング の場合 動的プロビショニング の場合
8 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
EKSのストレージの扱い方とプロビショニングについて 01 EKSのストレージとしてのEFS 02 EKSと動的プロビショニングEFSを使ったマルチリージョンDR 03
9 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
PVとしてEFSを使うためには 2. EKSのストレージとしてのEFS ◼ EFS CSIドライバーを導入する事でEFSをPVとして扱う事が可能 ◼ 動的プロビショニングをサポート ◼ 動的プロビショニングではStorageClassとファイルシステム、PVC/PVとアクセスポイントが1:1で紐付く関係 ◼ 動的プロビショニングのアクセスポイントのディレクトリパスはランダム文字列を含んだPV名 EFS CSIドライバー EFS ファイルシステム PV名(ランダム文字列含む) PV名(ランダム文字列含む) fileSystemId: ファイルシステムID アクセスポイント PVとアクセスポイントを自動生成
10 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
subPathPatternパラメータを使ったファイル同期 2. EKSのストレージとしてのEFS ◼ EFS CSIドライバーv1.7.0(2023/9/21リリース)から導入されたsubPathPatternパラメータによりディレクトリパスを指 定できる様になった ◼ この機能で動的プロビショニングでもファイルシステム間でアクセスポイントのディレクトリパスを合せる事ができる様に なった → 動的プロビショニングでもファイルシステム間でファイル同期できる様になった! /PVCのNamaspace名/PVC名 ファイルシステムA subPathPattern: ${.PVC.namespace}/${.PVC.name} /PVCのNamaspace名/PVC名 ファイルシステムB subPathPattern: ${.PVC.namespace}/${.PVC.name} レプリケーション ディレクトリパスが同じなので ファイル同期が可能!
11 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
EKSのストレージの扱い方とプロビショニングについて 01 EKSのストレージとしてのEFS 02 EKSと動的プロビショニングEFSを使ったマルチリージョンDR 03
12 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
実機検証 3. EKSと動的プロビショニングEFSを使ったマルチリージョンDR ◼subPathPatternを使ったマルチリージョンDRのサンプルが公開されている https://github.com/aws-samples/dr-with-eks-efs/ ◼EFS CSIドライバー導入済みの以下の環境を用意する バージニア北部 EKSクラスタ(my-eks-pri) EFSファイルシステム (primary) みなし正サイト 北カリフォルニア EKSクラスタ(my-eks-dr) EFSファイルシステム(dr) みなしDRサイト レプリケーション
13 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
実機検証(正サイト構築①) 3. EKSと動的プロビショニングEFSを使ったマルチリージョンDR ◼正サイトにStorageClassをデプロイする [cloudshell-user@ip-10-138-191-103 dr-with-eks-efs]$ kubectl get storageclass efs-sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE efs-sc efs.csi.aws.com Delete Immediate false 56s [cloudshell-user@ip-10-138-191-103 dr-with-eks-efs]$ kubectl get storageclass efs-sc -o yaml apiVersion: storage.k8s.io/v1 kind: StorageClass ~~割愛~~ parameters: basePath: /dynamic_provisioning directoryPerms: "700" ensureUniqueDirectory: "false" fileSystemId: fs-08cd52462bcfa3599 gidRangeEnd: "2000" gidRangeStart: "1000" provisioningMode: efs-ap subPathPattern: ${.PVC.namespace}/${.PVC.name} ~~割愛~~ 正サイトのEFSファイルシステムIDを指定 subPathPatternを指定 (PVCのNamaspace名/PVC名)
14 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
実機検証(正サイト構築②) 3. EKSと動的プロビショニングEFSを使ったマルチリージョンDR ◼正サイトにPVCとサンプルアプリをデプロイ [cloudshell-user@ip-10-138-191-103 dr-with-eks-efs]$ cat config_files/application.yaml ~~割愛~~ kind: PersistentVolumeClaim metadata: name: efs-app-claim spec: accessModes: - ReadWriteMany storageClassName: efs-sc ~~割愛~~ [cloudshell-user@ip-10-138-191-103 dr-with-eks-efs]$ kubectl get deployment,pvc,svc NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/efs-app 2/2 2 2 34s NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE persistentvolumeclaim/efs-app-claim Bound pvc-f2d490f6-0de5-4d1e-a354- 77a0beebe91e 1Gi RWX efs-sc 34s ~~割愛~~ 作成したStorageClassをPVC で指定 動的プロビショニングでPV(&EFSアクセスポイント)が 作成されてBoundしている サンプルアプリがEFSに配置した index.htmlを返している ブラウザから正サイトサンプルアプリにアクセス PVCのNamespace名 PVC名
15 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
実機検証(DRサイト構築①) 3. EKSと動的プロビショニングEFSを使ったマルチリージョンDR ◼DRサイトもStorageClassをデプロイする [cloudshell-user@ip-10-138-191-103 dr-with-eks-efs]$ kubectl get storageclass efs-sc -o yaml apiVersion: storage.k8s.io/v1 kind: StorageClass ~~割愛~~ parameters: basePath: /dynamic_provisioning directoryPerms: "700" ensureUniqueDirectory: "false" fileSystemId: fs-0155dfdd4fcd31ec9 gidRangeEnd: "2000" gidRangeStart: "1000" provisioningMode: efs-ap subPathPattern: ${.PVC.namespace}/${.PVC.name} provisioner: efs.csi.aws.com reclaimPolicy: Delete volumeBindingMode: Immediate DRサイトのEFSファイルシステムIDを指定 subPathPatternを指定(正サイトと同じ)
16 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
実機検証(DRサイト構築②) 3. EKSと動的プロビショニングEFSを使ったマルチリージョンDR ◼DRサイトにPVCとサンプルアプリをデプロイ [cloudshell-user@ip-10-138-191-103 dr-with-eks-efs]$ kubectl get pvc efs-app- claim -o yaml apiVersion: v1 kind: PersistentVolumeClaim ~~割愛~~ name: efs-app-claim namespace: default ~~割愛~~ storageClassName: efs-sc volumeMode: Filesystem ~~割愛~~ [cloudshell-user@ip-10-138-191-103 dr-with-eks-efs]$ kubectl get deployment,pvc,svc NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/efs-app 2/2 2 2 9m34s NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE persistentvolumeclaim/efs-app-claim Bound pvc-206acdfe-be44-4a77-a9f6- 070a55e5c89f 1Gi RWX efs-sc 9m35s ~~割愛~~ 正サイトとNamespace名とPVC名を合せる 動的プロビショニングでPV(&EFSアクセスポイント)が 作成されてBoundしている 正サイトと同じ内容を表示している → EFSでファイル同期ができている! ブラウザからDRサイトサンプルアプリにアクセス PVCのNamespace名 PVC名
17 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
実機検証(DR発動) 3. EKSと動的プロビショニングEFSを使ったマルチリージョンDR ◼DR発動時にはEFSファイルシステム間のレプリケーションを削除する ◼削除することでDRサイトのEFSファイルシステムに書込み可能になる DR発動時にはEFSレプリケーションを削除 ブラウザからDRサイトサンプルアプリにアクセス DRのEFSファイルシステムが書込み可能になる
18 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
まとめ ◼EFSの動的プロビショニングはEKSクラスタ管理者にとってとてもありがたい機能 ◼Platform Engineering的にも、なるべくクラスタ管理者の手を掛けずに開発者だけでストレージ 構築を完結させたい ◼EFS CSIドライバーのsubPathPatternパラメータの登場で、動的プロビショニングしたEFSの用途が 広がった!
None