Slide 1

Slide 1 text

#CNDT2021 COSI (Container Object Storage Interface) で広がる永続ストレージの世界 宇都宮 卓也 (うつぼ) レッドハット株式会社

Slide 2

Slide 2 text

#CNDT2021 自己紹介 2 kind: HumanBeings metadata: name: 宇都宮 卓也 spec: group: レッドハット株式会社 title: ソリューションアーキテクト born: 大阪 age: 39歳 favorites: technology: [“ストレージ”,“OpenShift”] hobby: [“プロレス観戦”,“将棋”] drink: [“ビール”, “ワイン”] annoyance: [“最近目が霞む”, “肩が痛い”] @japan_rook Japan Rook https://rook.connpass.com/ Cloud Native Data Community https://cndata.connpass.com/ https://www.redhat.com/ja/resou rces/openshift-4-first-step-guide -step-to-enterprise-kubernetes- ebook

Slide 3

Slide 3 text

#CNDT2021 ストレージ in Kubernetes

Slide 4

Slide 4 text

#CNDT2021 Kubernetesにおけるストレージ ● ユーザーアプリケーション ○ Database ○ Streaming/Messaging ...etc ● 運用系アプリケーション ○ Observability系 ○ 開発基盤系 ...etc 4 Kubernetesは永続的なストレージが必要 ・・・ Monitoring Logging Tracing Registry User Apps Ops Apps Persistent Storage Persistent Volume

Slide 5

Slide 5 text

#CNDT2021 ● 次の3つのリソースが重要な役割を担う。 ○ Persistent Volume (PV) ○ Persistent Volume Claim (PVC) ○ Storage Class (SC) Persistent Volumeの仕組み 5 Storage Provisioner Storage Class Persistent Volume Namespace App Pod Persistent Volume Claim ストレージシステム ユーザー 論理ディスク (LUN, volume, directory等) PVC作成 (Storage Class指定) PVCから Trigger APIで命令 PV作成 PVC Bind 論理ディスク作成 Worker Node接続 Bind Mount

Slide 6

Slide 6 text

#CNDT2021 COSIとは何?

Slide 7

Slide 7 text

#CNDT2021 COSI = Container Object Storage Interface ● 『コージー』と発音する。 ● コンテナワークロードからオブジェクトストレージのライフサイクルを管理するため の、標準的なインターフェースである。 ○ CSI(Container Storage Interface)のオブジェクトストレージ版 ● https://container-object-storage-interface.github.io/ 7

Slide 8

Slide 8 text

#CNDT2021 CSIがあるのになぜCOSIが要るの? ● ブロック/ファイルストレージとオブジェクトストレージはかなり違うものである。 ○ ファイルシステム vs Bucket/Container ○ POSIX vs 各種API ○ アクセスコントロール ● CSIはブロック/ファイル向けで、オブジェクトストレージにはそぐわない。オブジェクト ストレージ用の標準があったほうがいい。 8

Slide 9

Slide 9 text

#CNDT2021 9 ここからは2021/10/20時点の実装に沿ってお話しします

Slide 10

Slide 10 text

#CNDT2021 コンポーネント (ざっくり) ● Controller, Provisioner, Registrar, Adapter → Kubernetesで提供 ● COSI driver → ストレージベンダで提供 Worker node API Server csi- adapter driver- registrar provisioner- sidecar COSI driver controller Object Storage

Slide 11

Slide 11 text

#CNDT2021 Custom Resource (1) 11 リソース 何のオブジェクト スコープ Bucket (B) オブジェクトストレージの論理領域自体 Cluster-wide BucketRequest (BR) Bucketの請求 Namespaced BucketClass (BC) バックエンドのオブジェクトストレージの種類 Cluster-wide ● Bucket系 API Group : objectstorage.k8s.io

Slide 12

Slide 12 text

#CNDT2021 Custom Resource (2) 12 リソース 何のオブジェクト スコープ BucketAccess (BA) BucketへのAccess Token/Service Account Cluster-wide BucketAccess Request (BAR) BucketAccessの請求 Namespaced BucketAccess Class (BAC) Bucketへのアクセスコントロールの種類 Cluster-wide ● BucketAccess系 API Group : objectstorage.k8s.io

Slide 13

Slide 13 text

#CNDT2021 BucketRequestからBucket作成までの(雑な)流れ 13 Provisioner Bucket Class Bucket App Namespace Bucket Request Object Storage ユーザー Bucket/Container BR作成 (BC指定) BRからTrigger API 作成 作成 Bind

Slide 14

Slide 14 text

#CNDT2021 Provisioner Namespace BucketAccessRequestから BucketAccess作成までの(雑な)流れ 14 Bucket Access Class Bucket Access App Namespace Bucket Access Request Object Storage ユーザー Token BAR作成 (BAC指定) 作成 Bind Bucket Request BARから Trigger

Slide 15

Slide 15 text

#CNDT2021 ちょっとやってみます

Slide 16

Slide 16 text

#CNDT2021 NS: rook-ceph デモ環境 16 BucketClass BucketAccess NS: default BAR ... BR RGW MON OSD Tools(admin) NS: ceph-cosi-driver Provisioner BucketAccessClass Bucket

Slide 17

Slide 17 text

#CNDT2021 COSIの今とこれから

Slide 18

Slide 18 text

#CNDT2021 COSIのリリース 18 ● pre-alpha ○ k8s 1.23でalphaリリースを目指す。 https://github.com/kubernetes-sigs/container-object-st orage-interface-spec Kubernetes slack #sig-storage-cosi

Slide 19

Slide 19 text

#CNDT2021 間に合うかな? 19 https://github.com/kubernetes/enhancements/pull/2813

Slide 20

Slide 20 text

#CNDT2021 COSIは変わる 20 ● リソース名 ○ Bucket Access Request → Bucket Claim ?? ○ Bucket Request → Bucket Claim ?? ● NamespaceまたぎのBucket共有 ○ Gateway APIのreferencePolicyを使った実装の予定。 ● その他はKEPのreviewを参照 ○ https://github.com/kubernetes/enhancements/pull/2813 ● Alpha to Betaで手をつけることが多い。 ○ specが大きく変わりそう。 ○ 1.24でBetaリリースできるかな。

Slide 21

Slide 21 text

#CNDT2021 まとめ 21 ● オブジェクトストレージは今後も広く使われていくため、Kubernetesでオブジェクト ストレージのライフサイクル管理ができるようになるべきだ。 ● CSIはオブジェクトストレージにそぐわないため新しい標準が必要で、それがCOSI。 ● CSIとCOSIで、ブロック/ファイル/オブジェクト全てのストレージ標準インターフェー スができる。アプリケーションから見たストレージの選択肢がかなり広がる。 ● まだまだ荒削りだけれど、COSIは来年から再来年にかけて盛り上がるでしょう!い や、盛り上げていきましょう!

Slide 22

Slide 22 text

#CNDT2021 Thank you