Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Policy Engine on Kubernetes
Search
ry
March 24, 2021
Technology
1
1.4k
Policy Engine on Kubernetes
ry
March 24, 2021
Tweet
Share
More Decks by ry
See All by ry
eBPF Tools on Kubernetes part1
ry
0
280
Vault Secrets Operator Tutorial
ry
0
530
KyvernoとRed Hat ACMを用いたマルチクラスターの一元的なポリシー制御
ry
0
1.1k
明日から始められるKyvernoを用いたポリシー制御
ry
3
770
CNDT2022 k8snovice Community introduction
ry
0
140
ConfigMap and Secret
ry
0
350
Policy Manager試してみた!
ry
0
410
Kubernetes APIに Pod内からアクセスしてみた
ry
1
1.8k
AKS 101 in Kubernetes Novice Tokyo #1
ry
0
650
Other Decks in Technology
See All in Technology
無意味な開発生産性の議論から抜け出すための予兆検知とお金とAI
i35_267
4
13k
Delta airlines®️ USA Contact Numbers: Complete 2025 Support Guide
airtravelguide
0
340
関数型プログラミングで 「脳がバグる」を乗り越える
manabeai
1
190
OSSのSNSツール「Misskey」をさわってみよう(右下ワイプで私のOSCの20年を振り返ります) / 20250705-osc2025-do
akkiesoft
0
170
LangChain Interrupt & LangChain Ambassadors meetingレポート
os1ma
2
320
成長し続けるアプリのためのテストと設計の関係、そして意思決定の記録。
sansantech
PRO
0
120
20250707-AI活用の個人差を埋めるチームづくり
shnjtk
4
3.9k
United airlines®️ USA Contact Numbers: Complete 2025 Support Guide
unitedflyhelp
0
310
AWS Organizations 新機能!マルチパーティ承認の紹介
yhana
1
280
赤煉瓦倉庫勉強会「Databricksを選んだ理由と、絶賛真っ只中のデータ基盤移行体験記」
ivry_presentationmaterials
2
370
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
50
20k
使いたいMCPサーバーはWeb APIをラップして自分で作る #QiitaBash
bengo4com
0
1.9k
Featured
See All Featured
Rails Girls Zürich Keynote
gr2m
95
14k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
281
13k
Scaling GitHub
holman
460
140k
Designing Experiences People Love
moore
142
24k
Unsuck your backbone
ammeep
671
58k
Site-Speed That Sticks
csswizardry
10
690
RailsConf 2023
tenderlove
30
1.1k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.4k
Rebuilding a faster, lazier Slack
samanthasiow
82
9.1k
Statistics for Hackers
jakevdp
799
220k
We Have a Design System, Now What?
morganepeng
53
7.7k
Docker and Python
trallard
44
3.5k
Transcript
Policy Engine on Kubernetes VMware DevOps Meetup #8 (2021/03/24)
自己紹介 Name: ry (@URyo_0213) Skillset: - Storage - Ansible (Ansible
Tower, AWX) - Python, django - Kubernetes Advertisement - Kubernetes Meetup Novice (月1回ペース) - Kubenews (毎週金曜日 22:00 ~ ) - Kubernetes Internal
まず初めに
PSP(Pod Security Policy) 適用されたPodの仕様を確認し、事前に適用された PSPに記載されているポリシーによって、 Podの作成を制御 するためのものです。 Deprecated in Kuberenets
version 1.21 Remove the API completely in Kuberentes version 1.25 Kubernetes上でPolicyによる制御を何でやっていけばいいのだろうか。。。
Kubernetes上で 『Policyによる制御』 といえば?
OPA (Open Policy Agent) Admission Webhook機能を用いて、 ・Validating ・Mutating 等を行うことができるツール。 独自のRegoという言語を用いることで、
柔軟なPolicyの作成が可能。
Admission Control Authentication Authorization Mutating Admission Object Schema Admission Validating
Admission Persisted to etcd webhook webhook webhook webhook
Validating / Mutating 1 Validating 作成するリソースが、 Policyと比較して許可していいものなのか、それとも拒否 すべきものなのかを判断する。 2 Mutating
作成するリソースに対して、 Parameterの追加や変更をかける。
Rego 前回のVMware DevOps Meetup #7 において、とても分かりやすい構文の解説などがありましたので参 照いただけると良いかと思います。 Open Policy Agent
(OPA) 入門
Rego The Rego Playground を使って練習できます。
ここまで来たところで..... Regoかぁ... なんで新しい言語作るの?
OPAを少しでも簡単に使うために Styra DAS というOPAのPolicyをGUIから適用していくことができるツールがあります。 簡単な使い方や、実際にPolicyをによる判断を行う際に参照される Admissoin Reviewというリソースについて下 のBlogでご紹介しています。 Styra DASを使ってOPAをより簡単に
今日の本題
Kyverno OPA同様にAdmission Webhookを用いて Validating / Mutating 等のPolicyを適用するこ とができるツール。 KubernetesのManifestの様にPolicyを適用で きるので、学習コストが低い。
Policy Structure https://kyverno.io/docs/writing-policies/structure/
Match Policyを適用する対象を記載するものです。 dict型はAND, list型はOR 今回のケースでは、 kindが「Deployment」もしくは「Statefulset」 かつ labelに「app: critical」 とあるもの
Exclude Matchに記載したものの中で、例外を作る場合に使用します。 今回のケースでは、 対象はPod ただし、kube-system内のPodは除く
Policy (Validating) spec.rulesの下で設定 match: Policyを適用するリソースを指定 - Podを指定 validate: 検証内容、及び違反した際の messageを記述
- Resource limit及びrequestが設定されてない場合、 作成が許可されない
Policy (Validating) Pod用 manifest (Resource unit なし) Policy Check Pod用
manifest (Resource unit あり) Pod作成
Policy (Validating)
Policy (Validating)
Policy (Validating) Policyを追加したことで、作成が承認されました。
Policy (Mutating) • RFC 6902 JSONPatch • Strategic Merge Patch
• Mutate Overlay • Mutate Rule Ordering (Cascading)
Policy (Mutating) • RFC 6902 JSONPatch • Strategic Merge Patch
• Mutate Overlay • Mutate Rule Ordering (Cascading)
Policy (Mutating - overlay -) spec.rulesの下で設定 match: Policyを適用するリソースを指定 - Podを指定
mutate: 変更する項目を記載 - 特定のlabelをトリガーに、 VaultからSecretを取得するための annotation、及びService Accountを 追加
Policy (Mutating - overlay -) Policy Check Pod用 manifest (指定labelあり)
Pod作成 (Secret Injected) Pod用 manifest Annotation Service Account 追加 Vault Pod用 manifest Vault InitContainer Vault Sidecar 追加 Annotation確認
Policy (Mutating - overlay -) Vault上に、情報を格納する # vault secrets enable
-path=vmware kv-v2 # vault kv put vmware/devops/8 username="vmware-devops" password="waiwai" 作成したリソースに対する Policyを設定する # vault policy write vmware - <<EOF path "vmware/data/devops/8" { capabilities = ["read"] } EOF
Policy (Mutating - overlay -) kubernetes上のリソースとの紐づけをする。 # vault write auth/kubernetes/role/vmware
\ bound_service_account_names=vmware \ bound_service_account_namespaces=default \ policies=vmware \ ttl=24h 上記のコマンドで指定した Service Accountを作成する。 # kubectl create sa vmware
Policy (Mutating - overlay -)
Policy (Mutating - overlay -)
Policy (Generating) match: Policyを適用するリソースを指定 - Namespaceを指定 - 4つのNamespaceを例外とする。 generate: 作成するリソースを指定
- NetworkPolicyを作成する。
Policy (Generating)
最後に
Summary Keyvernoでは、ManifestライクにPolicyの宣言を行うことのできる。 Kyvernoは、Regoのような特殊な言語がないため、学習コストが低区 始めやすい。 OPAにはないGeneratingという機能はとても有用。
OPA vs Kyverno 以下のBlogにて、さまざまな項目の比較を表形式で載せてくれているので参考にしていただければと思います。 Kubernetes Policy Comparison: OPA/Gatekeeper vs Kyverno
今回使用したPolicy Githubの方にあげていますので、ご参照ください。 kyverno-sample
Thank you