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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
高棹大樹
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
320
徹底討論!ECS vs EKS!
daitak
4
2.1k
金融システムで挑む!EKS Auto Mode導入ポイント大全
daitak
0
150
インフラエンジニア必見!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
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
3
450
Amazon S3 Tablesに全部任せてみた結果——コンパクション/スナップショット管理は本当に手放せるか
shigeruoda
1
460
20260912_スクフェス三河
kgnkhkr
0
270
コスト最適化の「めんどくさい」を AWS FinOps Agent でチョット楽にする
classmethod_kaz
0
300
アプリログインとWeb認証基盤をつなぐ ASWebAuthenticationSession 作法
shimastripe
1
190
Omarchy Quattro の日本語設定周り
simosako
2
140
Snowflakeのコスト最適化を支えるアーキテクチャ設計
ktatsuya
1
1.4k
OpenTelemetryのメトリクスをCloudWatchに送ってPromQLで見てみた
ota1022
0
120
Oracle Cloud Infrastructure IaaS 新機能アップデート 2026/6 - 2026/8
oracle4engineer
PRO
0
140
TinyGo 開発サイクルを高速化する:Go で作るエミュレータ入門
zozotech
PRO
1
600
AI時代に顧客へ最速で価値を 届けるための試行錯誤 〜「AI × マネジメント」領域におけるmentoのケース〜
posterkeisuke
0
110
Deploying a Full-Stack Bun-Native Framework on Cloudflare Workers
7nohe
0
130
Featured
See All Featured
Between Models and Reality
mayunak
4
450
Google's AI Overviews - The New Search
badams
0
1.6k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
A Modern Web Designer's Workflow
chriscoyier
699
190k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
470
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
510
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
240
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
520
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
470
So, you think you're a good person
axbom
PRO
2
2.1k
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