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
530
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 高棹大樹
徹底討論!ECS vs EKS!
daitak
3
1.8k
金融システムで挑む!EKS Auto Mode導入ポイント大全
daitak
0
120
インフラエンジニア必見!Kubernetesを用いたクラウドネイティブ設計ポイント大全
daitak
1
740
EKS CapabilitiesでKube Resource Orchestrator(KRO)を試してみた!
daitak
0
130
Kubernetesと共にふりかえる! エンタープライズシステムのインフラ設計・テストの進め方大全
daitak
0
870
金融システムをモダナイズするためのAmazon Elastic Kubernetes Service(EKS)ノウハウ大全
daitak
1
250
CBになったのでEKSのこともっと知ってもらいたい!
daitak
1
310
金融システムをモダナイズするためのAmazon Elastic Kubernetes Service(EKS)ノウハウ大全
daitak
0
270
AWS re:Invent 2024で発表されたアップデート/EKSオートモード使っていきましょう!
daitak
1
270
Other Decks in Technology
See All in Technology
10年間のブログ発信を振り返って見えたWebアプリケーションエンジニアとしての軌跡
stefafafan
0
190
認証認可だけじゃない! ID管理の構成要素と ライフサイクルを意識しよう
ritou
1
310
きのこカンファレンス2026_肩書きを外したとき私は誰か
yamasatimi
1
100
#エンジニアBooks 30分でわかる 「技術記事を書く技術」 / engineer-books 2026-06-30
jnchito
1
140
從開發到部署全都交給 AI:實作 AI 驅動的自動化流程
appleboy
0
190
どうして今サーバーサイドKotlinを選択したのか
nealle
0
140
小さいから、全部わかる。— 常駐AI "xangi" のすすめ
sugupoko
0
170
データレイクの「見えない問題」を可視化する
sansantech
PRO
1
240
AIエージェントとPhysical AIが拓く製造業の変革(ハノーバーメッセリキャップ)
iotcomjpadmin
0
180
スタートアップにAmazon EKSは早すぎる? マルチプロダクト戦略を加速する Platform Engineeringの実践 / Is Amazon EKS Too Soon for Startups? Practical Platform Engineering to Accelerate a Multi-Product Strategy
elmodev09
1
1.9k
サイバーエージェントにおけるAI推進戦略と変革への取り組み
shotatsuge
0
620
Docker Desktop不要の時代が来る? WSL標準の「wslc」で Linuxコンテナを動かしてみた.
ueponx
0
260
Featured
See All Featured
Design in an AI World
tapps
1
250
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
540
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
230
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.3k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Odyssey Design
rkendrick25
PRO
2
710
A Tale of Four Properties
chriscoyier
163
24k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
370
Done Done
chrislema
186
16k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
250
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
240
Build your cross-platform service in a week with App Engine
jlugia
234
18k
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