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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
ry
March 24, 2021
Technology
1.5k
1
Share
Policy Engine on Kubernetes
ry
March 24, 2021
More Decks by ry
See All by ry
Kubernetesにおける推論基盤
ry
3
760
eBPF Tools on Kubernetes part1
ry
0
350
Vault Secrets Operator Tutorial
ry
0
600
KyvernoとRed Hat ACMを用いたマルチクラスターの一元的なポリシー制御
ry
0
1.3k
明日から始められるKyvernoを用いたポリシー制御
ry
4
930
CNDT2022 k8snovice Community introduction
ry
0
180
ConfigMap and Secret
ry
0
420
Policy Manager試してみた!
ry
0
460
Kubernetes APIに Pod内からアクセスしてみた
ry
1
2k
Other Decks in Technology
See All in Technology
ESP32 IoTを動かしながらメモリ使用量を観測してみた話
zozotech
PRO
0
110
世界の中心でApp Runnerを叫ぶ FINAL
tsukuboshi
0
260
Oracle AI Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
6
1.6k
The 7 pitfalls of AI
ufried
0
210
How to learn AWS Well-Architected with AWS BuilderCards: Security Edition
coosuke
PRO
0
120
AI 時代の Platform Engineering
recruitengineers
PRO
1
160
いつの間にかデータエンジニア以外の業務も増えていたけど、意外と経験が役に立ってる
zozotech
PRO
0
480
AI駆動開発で生産性を追いかけたら、行き着いたのは品質とシフトレフトだった
littlehands
0
490
自動テストだけで リリース判断できるチームへ - 鍵はテストの量ではなくリリース判断基準の再設計にあった / Redesigning Release Criteria for Lightweight Releases
ewa
7
3.6k
AIと乗り切った1,500ページ超のヘルプサイト基盤刷新とさらにその先の話
mugi_uno
2
340
要件定義の精度を高めるための型と生成AIの活用 / Using Types and Generative AI to Improve the Accuracy of Requirements Definition
haru860
0
320
AI飲み会幹事エージェントを作っただけなのに
ykimi
0
170
Featured
See All Featured
Building AI with AI
inesmontani
PRO
1
980
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.3k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
270
Abbi's Birthday
coloredviolet
2
7.5k
Evolving SEO for Evolving Search Engines
ryanjones
0
190
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Heart Work Chapter 1 - Part 1
lfama
PRO
6
35k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.5k
GraphQLとの向き合い方2022年版
quramy
50
15k
Embracing the Ebb and Flow
colly
88
5k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
220
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
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