RancherJP Online Meetup #03 のLTのセッション資料です。 https://rancherjp.connpass.com/event/229465/
配信URLはこちらになります。 https://youtu.be/FVfVj1bfT3k
Rancherのプロジェクト機能によるリソース管理RancherJP Online Meetup #03(2021/11/30)@bells17
View Slide
▶ @bells17▶ Software Engineer▶ 普段やってること:+ Kubernetes 関連コンポーネントの開発+ Kubernetes as a Service開発の調査・研究▶ Kubernetes SIG-Docs Japanese localization reviewer▶ Kubernetes Internal Organizer▶ #kubenews▶ @bells17_
Rancherのプロジェクト機能?
プロジェクト機能でできること▶ 複数Namespaceのグルーピング▶ プロジェクトにアクセスできるユーザーの管理▶ ユーザーに対するRancherのRole機能によるプロジェクトへの権限の割当▶ Secretのプロジェクトレベルでの管理機能▶ プロジェクトレベルでのResource Quota設定▶ RancherのCI/CD機能との連携▶ Rancherの提供するツールとの連携+ CI/CD+ 通知/Alert+ ロギング+ モニタリング
ユースケース▶ アプリケーションやマイクロサービスの開発チーム毎にプロジェクトを分割~プロジェクト内部のNamespaceで各アプリケーションなどを管理▶ プロジェクトにアクセスできるユーザーと権限を制限▶ プロジェクトレベルで共通で管理したいSecretをRancherでコントロール▶ CI/CDなどRancherのツールとの連携▶ etc
⼀⽅で…
マルチテナント管理向けのOSSがいくつかある▶ HNC: https://github.com/kubernetes-sigs/hierarchical-namespaces▶ Accurate: https://github.com/cybozu-go/accurate
HNC▶ Kubernetesコミュニティによって開発▶ Namespaceの階層化管理とリソース伝播機能を提供▶ kubectlプラグインとカスタムリソースによってNamespace/伝播するリソースの管理が可能▶ Rancherのプロジェクト機能との違い▶ Namespaceを多層で階層化することができる▶ 伝播するリソース種別に制限が無い
Accurate▶ サイボウズ社のnecoチームにより開発▶ HNCの機能不⾜などを解決するために開発▶ Namespaceの階層化管理とリソース伝播機能を提供▶ kubectlプラグインとアノテーションによってNamespace/伝播するリソースの管理が可能▶ その他HNCには無い以下のような機能がある▶ Namespaceのテンプレート機能▶ 伝播するリソースのラベル/アノテーションの伝播▶ Rancherのプロジェクト機能との違い▶ Namespaceを多層で階層化することができる▶ 伝播するリソース種別に制限が無い▶ Namespaceのテンプレート機能
各ツールの⽐較3BODIFSϓϩδΣΫτػೳ "DDVSBUF )/$֊/BNFTQBDFͷૢ࡞ 3BODIFS6*͔Βૢ࡞ LVCFDUMϓϥάΠϯΛར༻ LVCFDUMϓϥάΠϯΛར༻ࢠଙ/BNFTQBDFͷ࡞ʹ/BNFTQBDFͷ࡞ݖݶ͕ඞཁ͔ʁϓϩδΣΫτͷ࡞ݖݶͷΈ ෆཁ ෆཁ ʁະݕূ͢ΔϦιʔεͷઃఆ 4FDSFUͷΈʁΦϓτΠϯํࣜɾ͍ͨ͠ϦιʔεछผΛDPOpHͰઃఆɾࢦఆ͍ͨ͠ϦιʔεຖʹΞϊςʔγϣϯͰࢦఆΦϓτΞτํࣜɾ͍ͨ͠ϦιʔεछผΛ$3ͰઃఆɾσϑΥϧτͰࢦఆछผͷϦιʔεશͯ͞ΕΔɾͨ͘͠ແ͍ϦιʔεΞϊςʔγϣϯͰࢦఆࢠଙϦιʔε֎ͷϦιʔεػೳແ͠ςϯϓϨʔτػೳʹΑΔ͕Մೳແ͠ϥϕϧɾΞϊςʔγϣϯͷ4FDSFUͷ࡞Ϧιʔε͞ΕΔ$POpHͰࢦఆͨ͠ΩʔͷΈ ແ͠ ͩͬͨͣ3BODIFSͷπʔϧͱͷ࿈ܞ ༗Γ ແ͠ ແ͠
RancherにHNC/Accurateを⼊れた⽅が良い場合▶ Namespaceを多層的に階層化したい場合▶ Secret以外のリソースも伝播して管理したい場合▶ テンプレート機能などを使いリソース管理をより効率化したい場合(Accurate)
まとめ▶ Rancherのプロジェクト機能はプロジェクト毎のNamespaceのグループ管理機能や、それに伴うユーザーの権限管理やツールとの連携などが⾏える▶ こういったマルチテナント管理ツールには類似のツールとしてHNC/Accurateなどがある▶ こういったツールとRancherのプロジェクト機能を⽐較するとリソース伝播機能の柔軟度がRancherのプロジェクト機能よりも⾼いため、リソース管理の効率化のためのHNC/Accurateなどを導⼊するのも良いかもしれないです
参考資料▶ 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#
Thanks / Question?▶ @bells17▶ Slide: https://speakerdeck.com/bells17▶ @bells17_