Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
組織の壁と戦うための Hierarchical Namespace チェシャ猫 (@y_taka_23) Infra Study Meetup #5 (31st Aug. 2020)
Slide 2
Slide 2 text
\Kubernetes クラスタをチーム間で共有/
Slide 3
Slide 3 text
Namespace が分割の基本単位 ● Role / RoleBinding ○ 操作できるリソースを制限 ● ResourceQuota / LimitRange ○ 巨大・大量 Pod のリソース消費を制限 ● NetworkPolicy ○ Namespace 間の通信を制限
Slide 4
Slide 4 text
Namespace 自体は Namespaced なリソースではない
Slide 5
Slide 5 text
階層的な組織の憂鬱 ● Namespace はフラットな構造 ● 階層を表現するのが難しい ○ 親レベルで定義されるべき設定のコピーが必要 ○ 子 Namespace を作成するのに強い権限が必要
Slide 6
Slide 6 text
Hierarchical Namespace Controller
Slide 7
Slide 7 text
DEMO:階層構造の作成
Slide 8
Slide 8 text
階層構造の作成
Slide 9
Slide 9 text
階層構造の作成 kubectl プラグインを介して 親子関係を作成
Slide 10
Slide 10 text
階層構造の作成 kubectl プラグインを介して木構造を確認
Slide 11
Slide 11 text
階層構造の作成(直接)
Slide 12
Slide 12 text
階層構造の作成(直接) SubnamespaceAnchor カスタムリソース
Slide 13
Slide 13 text
階層構造の作成(直接) SubnamespaceAnchor 自身は myapp-dev に 属する = 権限が myapp-dev 内で完結する
Slide 14
Slide 14 text
階層構造の作成(直接) 子 Namespace が自動で作成される + 親から子へのリンク
Slide 15
Slide 15 text
DEMO:リソースの伝播
Slide 16
Slide 16 text
リソースの伝播
Slide 17
Slide 17 text
リソースの伝播 親に対して作成した Role が 自動的に子にも伝搬
Slide 18
Slide 18 text
リソースの伝播 伝播元を削除すると全て消滅
Slide 19
Slide 19 text
リソースの伝播
Slide 20
Slide 20 text
リソースの伝播 伝播元となった Namespace を Label で管理
Slide 21
Slide 21 text
DEMO:整合性の担保
Slide 22
Slide 22 text
Admission Webhook による整合性
Slide 23
Slide 23 text
Admission Webhook による整合性 伝播された側のリソースは直接消せない
Slide 24
Slide 24 text
Admission Webhook による整合性 子 Namespace は直接消せない
Slide 25
Slide 25 text
Admission Webhook による整合性 代わりに SubnamespaceAnchor (subns) を削除
Slide 26
Slide 26 text
DEMO:伝播するリソースの指定
Slide 27
Slide 27 text
伝播するリソースの指定
Slide 28
Slide 28 text
伝播するリソースの指定 伝播に関する設定は HncConfiguration リソースが保持
Slide 29
Slide 29 text
伝播するリソースの指定 デフォルトでは Role / RoleBinding のみ伝播対象
Slide 30
Slide 30 text
伝播するリソースの指定
Slide 31
Slide 31 text
伝播するリソースの指定 kubectl プラグイン経由で伝播対象を追加可能
Slide 32
Slide 32 text
まとめ ● Namespace によるクラスタの分割 ○ フラットな構造なので階層型管理とは相性悪い ● Hierarchical Namespace Controller (HNC) ○ 階層を定義し、親から子へリソースを伝播させる ○ 伝播するリソースは設定で変更できる ● 実体は SubnamespaceAnchor ○ kubectl のプラグインを通して操作できる
Slide 33
Slide 33 text
Enjoy the (In)Flexible Hierarchy! Presented by チェシャ猫 (@y_taka_23)