本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。

这是尚未发布的文档。 Admission Controller 1.34-dev.

隔离安装

要在隔离的环境中安装 SUSE Security Admission Controller,您需要一个可由 Kubernetes 集群访问的私有开放容器倡议(OCI)注册表。 Admission Controller 策略是 WebAssembly 模块,因此您可以将它们作为 OCI 工件存储在符合 OCI 标准的注册表中。您需要将 Admission Controller 的镜像和策略添加到此 OCI 注册表中。您可以在 工件参考 页面中查看 Admission Controller 工件的列表。以下部分描述了该过程。

我们建议使用 Hauler。 请参阅我们的 Hauler 文档页面

或者,您可以使用下面列出的手动过程。

将 Helm 图表保存在本地

您需要将以下 Helm 图表下载到您的工作站:

helm pull kubewarden/kubewarden-crds
helm pull kubewarden/kubewarden-controller
helm pull kubewarden/kubewarden-defaults
helm pull kubewarden/sbomscanner

可选地,您可以验证 helm 图表容器镜像 的签名。

将容器镜像保存在本地

  1. 我们的每个 Helm 图表都包含一个 imagelist.txt,其中列出了其所使用的容器镜像,并在适用时还包含一个 policylist.txt,其中包含了其所使用的策略对应的 OCI Wasm 模块。

    要获取它们,您可以执行:

    helm pull --untar \
      kubewarden/kubewarden-crds \
      kubewarden/kubewarden-controller \
      kubewarden/kubewarden-defaults \
      kubewarden/sbomscanner

    然后将它们合并为一个文件:

    cat */imagelist.txt > kubewarden-images.txt
  2. utilities 储存库 下载 kubewarden-save-images.shkubewarden-load-images.sh

  3. 将 Admission Controller 容器镜像保存到 .tar.gz 文件中:

     ./kubewarden-save-images.sh \
       --image-list ./kubewarden-images.txt \
       --images kubewarden-images.tar.gz

    Docker 开始拉取用于隔离安装的镜像。此过程需要几分钟时间。完成后,您运行命令的当前目录中会有一个 tarball,kubewarden-images.tar.gz

本地保存策略

  1. 将您想要使用的所有策略添加到 policies.txt 文件中:

    cat */policylist.txt > policies.txt

    包含默认策略列表的文件位于 Admission Controller 默认 release page 中。

  2. kubewarden-controller 储存库 下载 kubewarden-save-policies.shkubewarden-load-policies.sh

  3. 将策略保存到 .tar.gz 文件中:

    ./kubewarden-save-policies.sh --policies-list policies.txt

    使用 kwctl 下载策略。kubewarden-policies.tar.gz 存档包含这些策略。

Helm 图表

您需要将以下 Helm 图表下载到您的工作站:

helm pull kubewarden/kubewarden-crds
helm pull kubewarden/kubewarden-controller
helm pull kubewarden/kubewarden-defaults

填充私有注册表

将这些文件移动到隔离的环境中:

  • tgz 格式的 Helm 图表(例如,kubewarden-crds-1.23.0.tgz

  • kubewarden-policies.tar.gz

  • kubewarden-images.tar.gz

  • kubewarden-load-images.sh

  • kubewarden-load-policies.sh

  • policies.txt

    1. 将 Admission Controller 镜像加载到私有注册表中。您需要对本地注册表进行 Docker 客户端身份验证。

       ./kubewarden-load-images.sh \
         --image-list ./kubewarden-images.txt \
         --images kubewarden-images.tar.gz \
         --registry <REGISTRY.YOURDOMAIN.COM:PORT>
    2. 将 Admission Controller 策略加载到私有注册表中。您应该对本地注册表进行身份验证 kwctlkwctl 使用与 docker 相同的机制进行身份验证,~/.docker/config.json 文件)

       ./kubewarden-load-policies.sh \
         --policies-list policies.txt \
         --policies kubewarden-policies.tar.gz \
         --registry <REGISTRY.YOURDOMAIN.COM:PORT> \
         --sources-path sources.yml

kwctl 命令需要 sources.yaml 文件以连接到以下类别的注册表:

  • 需要身份验证

  • 正在使用自签名证书

  • 未进行 TLS 终止

请参阅文档中的 自定义证书颁发机构 部分,以了解如何配置 sources.yaml 文件

安装 Admission Controller

现在您的私有注册表已具备所有必要条件,您可以安装 Admission Controller。与标准 Admission Controller 安装的唯一区别是您需要将容器镜像和策略中的注册表更改为私有注册表。

安装 Admission Controller 堆栈:

helm install --wait -n kubewarden \
  kubewarden-crds kubewarden-crds.tgz
helm install --wait -n kubewarden \
  kubewarden-controller kubewarden-controller.tgz \
  --set global.cattle.systemDefaultRegistry=<REGISTRY.YOURDOMAIN.COM:PORT>

要在 kubewarden-controller 图表中使用可用的 Policy Reporter 子图表,您需要在隔离的环境中为子图表定义其他特定值。下面是一个示例:

helm install --wait -n kubewarden kubewarden-controller kubewarden-controller.tgz \
    --set global.cattle.systemDefaultRegistry=<REGISTRY.YOURDOMAIN.COM:PORT> \
    --set auditScanner.policyReporter=true \
    --set policy-reporter.image.registry=<REGISTRY.YOURDOMAIN.COM:PORT> \
    --set policy-reporter.ui.image.registry=<REGISTRY.YOURDOMAIN.COM:PORT> \
    --set policy-reporter.image.repository=kyverno/policy-reporter \
    --set policy-reporter.ui.image.repository=kyverno/policy-reporter-ui

必须定义 auditScanner.policyReporter 以启用子图表,并配置另外 4 个值,用以设置您存储 Policy Reporter 镜像的注册表和储存库。有关 Policy Reporter 子图表值的更多信息,请参阅 Policy Reporter 文档

helm install --wait -n kubewarden \
  kubewarden-defaults kubewarden-defaults.tgz \
  --set global.cattle.systemDefaultRegistry=<REGISTRY.YOURDOMAIN.COM:PORT>

要从非 global.cattle.systemDefaultRegistry 注册表下载 kubewarden-defaults Helm Chart 安装的推荐策略,请使用 recommendedPolicies.defaultPoliciesRegistry 配置。 此配置允许用户指定一个专门用于提取策略的 OCI 工件的注册表。当他们的容器镜像储存库不支持 OCI 工件时,这尤其有用。

要安装并等待安装完成,请使用以下命令:

helm install --wait -n kubewarden \
  kubewarden-defaults kubewarden-defaults.tgz \
  --set global.cattle.systemDefaultRegistry=<REGISTRY.YOURDOMAIN.COM:PORT> \
  --set recommendedPolicies.defaultPoliciesRegistry=<REGISTRY.YOURDOMAIN.COM:PORT>

如果未设置 recommendedPolicies.defaultPoliciesRegistry 配置,则使用 global.cattle.systemDefaultRegistry 作为默认注册表。

最后,您需要配置 Policy Server 以从您的私有注册表中获取策略。请参阅文档的使用私有注册表部分。

现在您可以在集群中创建 Admission Controller 策略。策略必须在您的私有注册表中可用。

kubectl apply -f - <<EOF
apiVersion: policies.kubewarden.io/v1
kind: ClusterAdmissionPolicy
metadata:
  name: privileged-pods
spec:
  module: registry://<REGISTRY.YOURDOMAIN.COM:PORT>/kubewarden/policies/pod-privileged:v0.2.2
  rules:
  - apiGroups: [""]
    apiVersions: [“v1”]
    resources: [“pods”]
    operations:
    - CREATE
  mutating: false
EOF

PolicyServer 资源必须使用您私有注册表中可用的镜像。 例如:

apiVersion: policies.kubewarden.io/v1
kind: PolicyServer
metadata:
  name: reserved-instance-for-tenant-a
spec:
  image: <REGISTRY.YOURDOMAIN.COM:PORT>/kubewarden/policy-server:v1.3.0
  replicas: 2
  serviceAccountName: sa