Slide 1

Slide 1 text

Rancherのプロジェクト機能による リソース管理 RancherJP Online Meetup #03(2021/11/30) @bells17

Slide 2

Slide 2 text

▶ @bells17 ▶ Software Engineer ▶ 普段やってること: + Kubernetes 関連コンポーネントの開発 + Kubernetes as a Service開発の調査・研究 ▶ Kubernetes SIG-Docs Japanese localization reviewer ▶ Kubernetes Internal Organizer ▶ #kubenews ▶ @bells17_

Slide 3

Slide 3 text

Rancherのプロジェクト機能?

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

プロジェクト機能でできること ▶ 複数Namespaceのグルーピング ▶ プロジェクトにアクセスできるユーザーの管理 ▶ ユーザーに対するRancherのRole機能によるプロジェクトへの権限の割当 ▶ Secretのプロジェクトレベルでの管理機能 ▶ プロジェクトレベルでのResource Quota設定 ▶ RancherのCI/CD機能との連携 ▶ Rancherの提供するツールとの連携 + CI/CD + 通知/Alert + ロギング + モニタリング

Slide 7

Slide 7 text

ユースケース ▶ アプリケーションやマイクロサービスの開発チーム毎にプロジェクトを分割~プロジェク ト内部のNamespaceで各アプリケーションなどを管理 ▶ プロジェクトにアクセスできるユーザーと権限を制限 ▶ プロジェクトレベルで共通で管理したいSecretをRancherでコントロール ▶ CI/CDなどRancherのツールとの連携 ▶ etc

Slide 8

Slide 8 text

⼀⽅で…

Slide 9

Slide 9 text

マルチテナント管理向けのOSSがいくつかある ▶ HNC: https://github.com/kubernetes-sigs/hierarchical-namespaces ▶ Accurate: https://github.com/cybozu-go/accurate

Slide 10

Slide 10 text

HNC ▶ Kubernetesコミュニティによって開発 ▶ Namespaceの階層化管理とリソース伝播機能を提供 ▶ kubectlプラグインとカスタムリソースによってNamespace/伝播するリソースの管理が可能 ▶ Rancherのプロジェクト機能との違い ▶ Namespaceを多層で階層化することができる ▶ 伝播するリソース種別に制限が無い

Slide 11

Slide 11 text

Accurate ▶ サイボウズ社のnecoチームにより開発 ▶ HNCの機能不⾜などを解決するために開発 ▶ Namespaceの階層化管理とリソース伝播機能を提供 ▶ kubectlプラグインとアノテーションによってNamespace/伝播するリソースの管理が可能 ▶ その他HNCには無い以下のような機能がある ▶ Namespaceのテンプレート機能 ▶ 伝播するリソースのラベル/アノテーションの伝播 ▶ Rancherのプロジェクト機能との違い ▶ Namespaceを多層で階層化することができる ▶ 伝播するリソース種別に制限が無い ▶ Namespaceのテンプレート機能

Slide 12

Slide 12 text

各ツールの⽐較 3BODIFSϓϩδΣΫτػೳ "DDVSBUF )/$ ֊૚/BNFTQBDFͷૢ࡞ 3BODIFS6*͔Βૢ࡞ LVCFDUMϓϥάΠϯΛར༻ LVCFDUMϓϥάΠϯΛར༻ ࢠଙ/BNFTQBDFͷ࡞੒ʹ /BNFTQBDFͷ࡞੒ݖݶ͕ඞཁ͔ʁ ϓϩδΣΫτͷ࡞੒ݖݶͷΈ ෆཁ ෆཁ ʁະݕূ ఻೻͢ΔϦιʔεͷઃఆ 4FDSFUͷΈʁ ΦϓτΠϯํࣜ ɾ఻೻͍ͨ͠ϦιʔεछผΛ DPOpHͰઃఆ ɾࢦఆ͍ͨ͠ϦιʔεຖʹΞϊ ςʔγϣϯͰࢦఆ ΦϓτΞ΢τํࣜ ɾ఻೻͍ͨ͠ϦιʔεछผΛ $3Ͱઃఆ ɾσϑΥϧτͰࢦఆछผͷ Ϧιʔε͸શͯ఻೻͞ΕΔ ɾ఻೻ͨ͘͠ແ͍Ϧιʔε͸ ΞϊςʔγϣϯͰࢦఆ ࢠଙϦιʔε֎΁ͷ Ϧιʔε఻೻ػೳ ແ͠ ςϯϓϨʔτػೳʹΑΔ ఻೻͕Մೳ ແ͠ ϥϕϧɾΞϊςʔγϣϯͷ఻೻ 4FDSFUͷ࡞੒Ϧιʔε͸ ఻೻͞ΕΔ $POpHͰࢦఆͨ͠ΩʔͷΈ఻೻ ແ͠ ͩͬͨ͸ͣ 3BODIFSͷπʔϧͱͷ࿈ܞ ༗Γ ແ͠ ແ͠

Slide 13

Slide 13 text

RancherにHNC/Accurateを⼊れた⽅が良い場合 ▶ Namespaceを多層的に階層化したい場合 ▶ Secret以外のリソースも伝播して管理したい場合 ▶ テンプレート機能などを使いリソース管理をより効率化したい場合(Accurate)

Slide 14

Slide 14 text

まとめ ▶ Rancherのプロジェクト機能はプロジェクト毎のNamespaceのグループ管理機能や、それ に伴うユーザーの権限管理やツールとの連携などが⾏える ▶ こういったマルチテナント管理ツールには類似のツールとしてHNC/Accurateなどがある ▶ こういったツールとRancherのプロジェクト機能を⽐較するとリソース伝播機能の柔軟度 がRancherのプロジェクト機能よりも⾼いため、リソース管理の効率化のためのHNC/ Accurateなどを導⼊するのも良いかもしれないです

Slide 15

Slide 15 text

参考資料 ▶ Project Administration: https://rancher.com/docs/rancher/v2.6/en/project-admin/ ▶ Pod Security Policies: https://rancher.com/docs/rancher/v2.6/en/project-admin/pod-security-policies/ ▶ Cluster and Project Roles: https://rancher.com/docs/rancher/v2.6/en/admin-settings/rbac/cluster-project-roles/ ▶ Project Resource Quotas: https://rancher.com/docs/rancher/v2.6/en/project-admin/resource-quotas/ ▶ Tools for Logging, Monitoring, and Visibility: https://rancher.com/docs/rancher/v2.6/en/project-admin/tools/ ▶ Accurate documentation: https://cybozu-go.github.io/accurate/ ▶ cybozu-go/accurate: https://github.com/cybozu-go/accurate ▶ Kubernetesのマルチテナントの現状を整理する: https://techstep.hatenablog.com/entry/2020/09/06/160435 ▶ Hierarchical Namespace で Namespace を階層構造に管理してオブジェクトを伝搬させる: https://amsy810.hateblo.jp/entry/2019/ 12/01/230822 ▶ HNC User Guide: https://github.com/kubernetes-sigs/hierarchical-namespaces/tree/v0.9/docs/user-guide ▶ KEP-1687: Hierarchical Namespaces As A Subproject: https://github.com/kubernetes/enhancements/blob/master/keps/sig- auth/1687-hierarchical-namespaces-subproject/README.md ▶ [PUBLIC] The Hierarchical Namespace Controller - Design: https://docs.google.com/document/d/ 10MZfFfbQMm33CBboMq2bfrEtXkJQQT4-UH4DDXZRrKY/edit#

Slide 16

Slide 16 text

Thanks / Question? ▶ @bells17 ▶ Slide: https://speakerdeck.com/bells17 ▶ @bells17_