Kyvernoはポリシー管理にどのように役立つか
12417 ワード
もともと公開mccricardo.com .
クラウドとKubernetesの増殖は、新しい環境を動的に提供することを「容易に」しました.それは課題の独自のセットが付属していますいくつかの役割を果たすロールとロールバックを動的に提供します.Kubernetesの名前空間として新しい「環境」を考えるなら、それぞれの独自のロールとローディングを持っています.
我々はいくつかのアプローチでこの問題を攻撃することができましたKyverno そして、我々のためにそれを管理するその先進の特徴のうちの1つ.Kyverno Kubernetes用に設計されたポリシーエンジンですKyvernoポリシーは、クバーネッツ資源を検証し、変異して、生成することができます.Kyverno 缶
validate -ポリシーコンプライアンスのリソース構成を確認する
mutate -アドミッションコントロール中にリソースを変更する
生成-リソースの作成または更新に基づいて追加のリソースを作成します. 新しい名前空間が作成されるたびに、Kyvernoの生成機能を使用してロールとローディングを作成します.
転がる
我々は、ローカルKubernetesクラスタを回転させますk3d また、以下のツールが必要になります. kubectl k3d 我々は、ローカルKubernetesクラスタを作成することから始めますk3d :
どのように、Kyvernoはこれをしましたか?
Kubernetes社のコンセプトAdmission Controller これはAPIサーバへのリクエストを傍受できるソフトウェアであり、その作成前に何かを行う.また、の概念を持ってDynamic Admission Control これは、同じような機能を提供するHTTPコールバックです.我々自身のダイナミックな入場コントロールを開発することができた間、Kyvernoは我々が捜している能力をすでに持っていて、それを狂気させません.
クラウドとKubernetesの増殖は、新しい環境を動的に提供することを「容易に」しました.それは課題の独自のセットが付属していますいくつかの役割を果たすロールとロールバックを動的に提供します.Kubernetesの名前空間として新しい「環境」を考えるなら、それぞれの独自のロールとローディングを持っています.
我々はいくつかのアプローチでこの問題を攻撃することができましたKyverno そして、我々のためにそれを管理するその先進の特徴のうちの1つ.Kyverno Kubernetes用に設計されたポリシーエンジンですKyvernoポリシーは、クバーネッツ資源を検証し、変異して、生成することができます.Kyverno 缶
validate -ポリシーコンプライアンスのリソース構成を確認する
mutate -アドミッションコントロール中にリソースを変更する
生成-リソースの作成または更新に基づいて追加のリソースを作成します.
転がる
我々は、ローカルKubernetesクラスタを回転させますk3d また、以下のツールが必要になります.
k3d cluster create -a 2 kyverno
k3d kubeconfig merge kyverno --switch-context
次にKyvernoをクラスタに配備します.kubectl create -f https://raw.githubusercontent.com/kyverno/kyverno/main/definitions/release/install.yaml
リソースを生成しているので、Kyverno権限を与えなければなりません.# kyverno.yaml
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
name: kyverno:generatecontroller
rules:
- apiGroups:
- "*"
resources:
- namespaces
- networkpolicies
- secrets
- configmaps
- resourcequotas
- limitranges
- pods
- roles
- rolebindings
verbs:
- create
- get
- update
- delete
- watch
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: kyverno-admin-generate
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: kyverno:generatecontroller
subjects:
- kind: ServiceAccount
name: kyverno-service-account
namespace: kyverno
必要以上のものがありますが、これらのアクセス許可を適用できます.kubectl apply -f kyverno.yaml
今、Kyvernoは、必要なものを作成する必要があるロールとrolebindingsを管理するために必要なアクセス許可を備えていますpolicies そのハンドル# role-policy.yaml
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: role
spec:
rules:
- name: role
match:
resources:
kinds:
- Namespace
exclude:
resources:
namespaces:
- "kube-system"
- "default"
- "kube-public"
- "kyverno"
generate:
kind: Role
name: pod-reader
namespace: "{{request.object.metadata.name}}"
data:
rules:
- apiGroups: [""] # "" indicates the core API group
resources: ["pods"]
verbs: ["get", "watch", "list"]
---
# rolebinding-policy.yaml
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: rolebinding
spec:
rules:
- name: rolebinding
match:
resources:
kinds:
- Namespace
exclude:
resources:
namespaces:
- "kube-system"
- "default"
- "kube-public"
- "kyverno"
generate:
kind: RoleBinding
name: read-pods
namespace: "{{request.object.metadata.name}}"
data:
subjects:
- kind: User
name: "{{request.object.metadata.labels.user}}"
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: Role
name: pod-reader
apiGroup: rbac.authorization.k8s.io
我々の目標を達成するために、我々は2つの方針、役割を作成する1つを作ります、そして、Kyvernoが名前空間資源(それが気にかけないものを除いて)の変化のために「聞く」ことであるrolebindingのためにもう一つ.The {
{要求オブジェクト}
} 名前空間リソースとKyvernoのフィールドを含み、名前空間を識別し、許可が与えられているかどうかを決定します.kubectl apply -f role-policy.yaml
kubectl apply -f rolebinding-policy.yaml
我々が現在適切なフィールドで名前空間をつくるならば、Kyvernoはそれを魔法にしますapiVersion: v1
kind: Namespace
metadata:
labels:
user: jane
name: test-namespace
➜ kubectl -n test-namespace get role
NAME CREATED AT
pod-reader 2020-12-27T20:09:49Z
➜ kubectl -n test-namespace get rolebinding
NAME ROLE AGE
read-pods Role/pod-reader 11s
どのように、Kyvernoはこれをしましたか?
Kubernetes社のコンセプトAdmission Controller これはAPIサーバへのリクエストを傍受できるソフトウェアであり、その作成前に何かを行う.また、の概念を持ってDynamic Admission Control これは、同じような機能を提供するHTTPコールバックです.我々自身のダイナミックな入場コントロールを開発することができた間、Kyvernoは我々が捜している能力をすでに持っていて、それを狂気させません.
Reference
この問題について(Kyvernoはポリシー管理にどのように役立つか), 我々は、より多くの情報をここで見つけました https://dev.to/mccricardo/how-kyverno-helps-with-policy-management-feテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol