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
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
350
徹底討論!ECS vs EKS!
daitak
4
2.1k
金融システムで挑む!EKS Auto Mode導入ポイント大全
daitak
0
160
インフラエンジニア必見!Kubernetesを用いたクラウドネイティブ設計ポイント大全
daitak
1
820
EKS CapabilitiesでKube Resource Orchestrator(KRO)を試してみた!
daitak
0
160
Kubernetesと共にふりかえる! エンタープライズシステムのインフラ設計・テストの進め方大全
daitak
0
970
金融システムをモダナイズするためのAmazon Elastic Kubernetes Service(EKS)ノウハウ大全
daitak
1
270
CBになったのでEKSのこともっと知ってもらいたい!
daitak
1
330
金融システムをモダナイズするためのAmazon Elastic Kubernetes Service(EKS)ノウハウ大全
daitak
0
290
Other Decks in Technology
See All in Technology
目の前の楽しいが人生を変える - コミュニティの螺旋の歩き方と楽しむコツ / change your life
soudai
PRO
4
600
LLMに渡さなかった仕事
nanaism
0
160
Gitは怖い?共有ワークスペースから始めるSnowflakeチーム開発
coco_se
0
220
Spring BootからQuarkusへの移行
tatsuya1bm
2
120
30座EKS, 180次升級淬煉的EKS Upgrade Skill 的歷程
eric8230
0
160
すぐできる衛星通信対応 あとは山奥に行くだけ
tatetate55
0
120
絵ではじめるKubernetesセキュリティ
aoi1
3
550
越境するなら専門用語を使うな高校校歌 / If you wanna cross border, you shouldn't use jargon
vtryo
0
140
Claude Codeを「使うほど育つ」AI秘書にするノウハウ
minorun365
PRO
23
19k
データ_AIの事業の勝敗をわけるもの
nek0128
0
350
range over func 2年間の軌跡 Issue #56413 はGoのエコシステムをどう変えたか
ryujicre8ive
0
190
生成AIエージェントを用いた、 手動テスト手順書から自動テストへの 変換手法の検討
magicpod
0
150
Featured
See All Featured
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
2.9k
How to build a perfect <img>
jonoalderson
1
6k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
500
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
520
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
202
76k
Un-Boring Meetings
codingconduct
0
420
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
690
Exploring anti-patterns in Rails
aemeredith
4
510
From π to Pie charts
rasagy
1
370
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
600
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