|
本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。 |
|
这是尚未发布的文档。 Admission Controller 1.34-dev. |
分发一个 OPA 策略,使用 SUSE Security Admission Controller
您已经编写、构建并运行了您的 Rego 策略。 现在是分发策略的时候了。
策略必须注解,以便它们可以在 policy-server 中运行。
policy-server 是执行策略的部分,当在 Kubernetes 集群中运行时。
注解策略
注解策略是一个过程,它用相关信息丰富策略元数据。 例如作者、许可证、源代码位置和规则,这些信息用以描述该策略可以理解和评估的资源类型。
要注解您的策略,您需要编写一个 metadata.yaml 文件:
rules:
- apiGroups: [""]
apiVersions: ["*"]
resources: ["*"]
operations: ["CREATE"]
mutating: false
contextAware: false
executionMode: opa
annotations:
io.kubewarden.policy.title: no-default-namespace
io.kubewarden.policy.version: 0.1.0 # should match the OCI tag
io.kubewarden.policy.description: This policy will reject any resource created inside the default namespace
io.kubewarden.policy.author: The SUSE Security Admission Controller Authors
io.kubewarden.policy.url: https://github.com/kubewarden/some-policy
io.kubewarden.policy.source: https://github.com/kubewarden/some-policy
io.kubewarden.policy.license: Apache-2.0
io.kubewarden.policy.usage: |
This policy is just an example.
You can write interesting descriptions about the policy here.
您可以看到几个细节:
-
规则: 该策略针对的资源。
-
变更: 该策略是否为变更型。 在这种情况下,它只是进行验证。
-
上下文感知: 该策略是否需要来自集群的上下文来评估请求。
-
执行模式: 由于这是一个 Rego 策略,因此必须指定它期望的执行模式,
opa或gatekeeper。 该策略采用`opa`风格编写,返回一个完整的`AdmissionReview`对象。 -
注解:元数据存储在策略本身中。
请继续注解您的策略:
$ kwctl annotate policy.wasm --metadata-path metadata.yaml --output-path annotated-policy.wasm
现在您可以通过运行`kwctl inspect annotated-policy.wasm`来检查该策略。
推送策略
现在策略已被注解,您可以将其推送到 OCI 注册表。
$ kwctl push annotated-policy.wasm registry.my-company.com/kubewarden/no-default-namespace:v0.0.1
Policy successfully pushed
您的 Rego 策略,针对 OPA 框架,具备在生产环境中部署所需的一切,通过创建一个 ClusterAdmissionPolicy。
您也可以准备这个。
首先,您需要将策略拉入`kwctl`本地存储:
$ kwctl pull registry://registry.my-company.com/kubewarden/no-default-namespace:v0.0.1
pulling policy...
从中创建一个`ClusterAdmissionPolicy`。 此操作考虑了它关于策略的元数据:
$ kwctl manifest registry://registry.my-company.com/kubewarden/no-default-namespace:v0.0.1 --type ClusterAdmissionPolicy
---
apiVersion: policies.kubewarden.io/v1alpha2
kind: ClusterAdmissionPolicy
metadata:
name: generated-policy
spec:
module: "registry://registry.my-company.com/kubewarden/no-default-namespace:v0.0.1"
settings: {}
rules:
- apiGroups:
- ""
apiVersions:
- "*"
resources:
- "*"
operations:
- CREATE
mutating: false
您现在可以将此 ClusterAdmissionPolicy 用作目标资源的基础,或按原样部署到 Kubernetes。