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
300
Vault Secrets Operator Tutorial
ry
0
550
KyvernoとRed Hat ACMを用いたマルチクラスターの一元的なポリシー制御
ry
0
1.2k
明日から始められるKyvernoを用いたポリシー制御
ry
3
830
CNDT2022 k8snovice Community introduction
ry
0
150
ConfigMap and Secret
ry
0
370
Policy Manager試してみた!
ry
0
420
Kubernetes APIに Pod内からアクセスしてみた
ry
1
1.9k
AKS 101 in Kubernetes Novice Tokyo #1
ry
0
670
Other Decks in Technology
See All in Technology
日本のソブリンAIを支えるエヌビディアの生成AIエコシステム
acceleratedmu3n
0
120
InsightX 会社説明資料/ Company deck
insightx
0
190
仕様駆動開発を実現する上流工程におけるAIエージェント活用
sergicalsix
10
5.4k
累計5000万DLサービスの裏側 – LINEマンガのKotlinで挑む大規模 Server-side ETLの最適化
ldf_tech
0
160
Amazon Athena で JSON・Parquet・Iceberg のデータを検索し、性能を比較してみた
shigeruoda
1
300
AI時代の発信活動 ~技術者として認知してもらうための発信法~ / 20251028 Masaki Okuda
shift_evolve
PRO
1
140
Kotlinで型安全にバイテンポラルデータを扱いたい! ReladomoラッパーをAIと実装してみた話
itohiro73
3
220
Digitization部 紹介資料
sansan33
PRO
1
5.8k
マルチエージェントのチームビルディング_2025-10-25
shinoyamada
0
250
NOT A HOTEL SOFTWARE DECK (2025/11/06)
notahotel
0
2.5k
新米エンジニアをTech Leadに任命する ー 成長を支える挑戦的な人と組織のマネジメント
naopr
1
350
ストレージエンジニアの仕事と、近年の計算機について / 第58回 情報科学若手の会
pfn
PRO
4
960
Featured
See All Featured
Practical Orchestrator
shlominoach
190
11k
Statistics for Hackers
jakevdp
799
220k
Testing 201, or: Great Expectations
jmmastey
46
7.7k
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
640
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Designing for humans not robots
tammielis
254
26k
Become a Pro
speakerdeck
PRO
29
5.6k
Unsuck your backbone
ammeep
671
58k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
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