Kubernetes OPA Gatekeeper

Die oorspronklike skrywer van hierdie bladsy is Guillaume

Definisie

Open Policy Agent (OPA) Gatekeeper is 'n gereedskap wat gebruik word om toelatingsbeleide in Kubernetes af te dwing. Hierdie beleide word gedefinieer deur gebruik te maak van Rego, 'n beleidstaal wat deur OPA voorsien word. Hieronder is 'n basiese voorbeeld van 'n beleidsdefinisie wat gebruik maak van OPA Gatekeeper:

regoCopy codepackage k8srequiredlabels

violation[{"msg": msg}] {
provided := {label | input.review.object.metadata.labels[label]}
required := {label | label := input.parameters.labels[label]}
missing := required - provided
count(missing) > 0
msg := sprintf("Required labels missing: %v", [missing])
}

default allow = false

Hierdie Rego-beleid kontroleer of sekere etikette teenwoordig is op Kubernetes-hulpbronne. As die vereiste etikette ontbreek, gee dit 'n oortredingsboodskap terug. Hierdie beleid kan gebruik word om te verseker dat alle hulpbronne wat in die tros ontplooi is, spesifieke etikette het.

Pas Beperking Toe

Om hierdie beleid met OPA Gatekeeper te gebruik, sou jy 'n ConstraintTemplate en 'n Constraint in Kubernetes definieer:

apiVersion: templates.gatekeeper.sh/v1beta1
kind: ConstraintTemplate
metadata:
name: k8srequiredlabels
spec:
crd:
spec:
names:
kind: K8sRequiredLabels
targets:
- target: admission.k8s.gatekeeper.sh
rego: |
package k8srequiredlabels
violation[{"msg": msg}] {
provided := {label | input.review.object.metadata.labels[label]}
required := {label | label := input.parameters.labels[label]}
missing := required - provided
count(missing) > 0
msg := sprintf("Required labels missing: %v", [missing])
}

default allow = false
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sRequiredLabels
metadata:
name: ensure-pod-has-label
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Pod"]
parameters:
labels:
requiredLabel1: "true"
requiredLabel2: "true"

In hierdie YAML-voorbeeld definieer ons 'n ConstraintTemplate om etikette te vereis. Dan noem ons hierdie beperking ensure-pod-has-label, wat verwys na die k8srequiredlabels ConstraintTemplate en spesifiseer die vereiste etikette.

Wanneer Gatekeeper in die Kubernetes-kluster geïmplementeer word, sal dit hierdie beleid afdwing en voorkom dat daar peule geskep word wat nie oor die gespesifiseerde etikette beskik nie.

Verwysings

Last updated