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.3k
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
190
Vault Secrets Operator Tutorial
ry
0
440
KyvernoとRed Hat ACMを用いたマルチクラスターの一元的なポリシー制御
ry
0
910
明日から始められるKyvernoを用いたポリシー制御
ry
3
690
CNDT2022 k8snovice Community introduction
ry
0
110
ConfigMap and Secret
ry
0
310
Policy Manager試してみた!
ry
0
370
Kubernetes APIに Pod内からアクセスしてみた
ry
1
1.6k
AKS 101 in Kubernetes Novice Tokyo #1
ry
0
590
Other Decks in Technology
See All in Technology
Amazon SageMaker Unified Studio(Preview)、Lakehouse と Amazon S3 Tables
ishikawa_satoru
0
150
非機能品質を作り込むための実践アーキテクチャ
knih
3
920
NilAway による静的解析で「10 億ドル」を節約する #kyotogo / Kyoto Go 56th
ytaka23
3
370
kargoの魅力について伝える
magisystem0408
0
200
10個のフィルタをAXI4-Streamでつなげてみた
marsee101
0
160
WACATE2024冬セッション資料(ユーザビリティ)
scarletplover
0
190
ハイテク休憩
sat
PRO
2
140
UI State設計とテスト方針
rmakiyama
2
440
レンジャーシステムズ | 会社紹介(採用ピッチ)
rssytems
0
150
Storage Browser for Amazon S3
miu_crescent
1
140
アップデート紹介:AWS Data Transfer Terminal
stknohg
PRO
0
180
LINEヤフーのフロントエンド組織・体制の紹介【24年12月】
lycorp_recruit_jp
0
530
Featured
See All Featured
The Cult of Friendly URLs
andyhume
78
6.1k
What's in a price? How to price your products and services
michaelherold
243
12k
Unsuck your backbone
ammeep
669
57k
Six Lessons from altMBA
skipperchong
27
3.5k
Code Reviewing Like a Champion
maltzj
520
39k
Practical Orchestrator
shlominoach
186
10k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
32
2.7k
Scaling GitHub
holman
458
140k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
2
170
A better future with KSS
kneath
238
17k
How GitHub (no longer) Works
holman
311
140k
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