在公有云上部署 SUSE Security

在公有云Kubernetes服务上部署SUSE® Security

在任何公有云K8s服务上部署SUSE® Security,例如AWS EKS、Azure AKS、IBM Cloud K8s、Google Cloud、阿里云或Oracle Cloud。SUSE® Security已通过Amazon EKS Anywhere合规性和验证框架,因此是经过验证的解决方案,并可作为EKS-Anywhere在Snowball Edge设备上的附加产品通过AWS控制台使用。

首先,创建您的 K8s 集群,并确认可以访问 kubectl get nodes

要部署SUSE® Security,请使用来自生产部署Kubernetes部分的示例部署说明和示例。如果您从本地或云注册表(如ECR或ACR)拉取SUSE® Security镜像,请编辑示例yaml。

一些云服务提供商集成了负载均衡器,通过使用 Type: LoadBalancer 而非 NodePort 来部署 SUSE® Security webui 非常简单。

SUSE® Security还支持基于Helm的部署,Helm图表位于 https://github.com/neuvector/neuvector-helm.。

网络访问

确保内部和外部的入口访问配置正确。对于NodePort服务,3xxxx范围内的随机端口必须可以从外部访问工作节点或主节点的公共IP。您可以使用任何工作节点的公共IP地址和该端口(NodePort)或负载均衡器的公共IP和默认端口8443访问控制台。您可以使用以下方式查看IP/端口:

kubectl get svc -n neuvector

大多数K8s服务自动启用/允许节点之间的所有跨Pod/跨集群通信,这也使得SUSE® Security容器(enforcer、控制器、管理器)能够在集群内进行通信。

示例Kubernetes yaml文件将部署一个管理器和三个控制器。它将在每个节点上作为守护程序集部署一个 enforcer。注意:由于潜在的会话状态问题,不建议在负载均衡器后面部署(扩展)多个管理器。

Microsoft Azure AKS

在Azure上部署K8s集群时,Kubernetes RBAC的默认设置为关闭。请启用RBAC以启用cluster-admin集群角色,否则您需要稍后手动创建该角色以支持基于Helm的部署。

谷歌云平台 / GKE

您可以使用集成的负载均衡器,通过使用 ‘Type: LoadBalancer’ 而不是 NodePort 来轻松部署 SUSE® Security webui。配置类型为 RWM(可读写多)的持久存储可能需要在部署 SUSE® Security 之前创建一个存储服务,例如 NFS。

SUSE® Security 需要一个 SDN 插件,例如 flannel、weave 或 calico。

使用环境变量 NV_PLATFORM_INFO,值为 platform=Kubernetes:GKE,以启用 SUSE® Security 执行 GKE 特定操作,例如运行 GKE Kubernetes CIS 基准测试。

GKE Autopilot 支持

GKE Autopilot 支持在 NeuVector v5.4.3 及更高版本中可用。请按照以下步骤在 Autopilot 集群上部署 NeuVector。

在部署 NeuVector 之前,应在集群上创建一个 AllowlistSynchronizer。以下是带有 allowlistPath 的配置 YAML 及应用 YAML 的命令:

应用 YAML 的示例命令:

kubectl apply -f allowlist.yaml

示例 YAML 配置:

apiVersion: auto.gke.io/v1
kind: AllowlistSynchronizer
metadata:
  name: neuvector-allowlist
spec:
  allowlistPaths:
  - SUSE/neuvector-enforcer/v1.0.0/suse-neuvector-enforcer.yaml
  - SUSE/neuvector-scanner/v1.0.0/suse-neuvector-scanner.yaml

执行命令 kubectl apply -f <YAML file> 后,请检查 AllowlistSynchronizer 是否已准备好。

示例命令:

kubectl get AllowlistSynchronizer neuvector-allowlist -o yaml

示例 YAML 配置:

apiVersion: auto.gke.io/v1
kind: AllowlistSynchronizer
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"auto.gke.io/v1","kind":"AllowlistSynchronizer","metadata":{"annotations":{},"name":"neuvector-allowlist"},"spec":{"allowlistPaths":["SUSE/neuvector-enforcer/v1.0.0/suse-neuvector-enforcer.yaml","SUSE/neuvector-scanner/v1.0.0/suse-neuvector-scanner.yaml"]}}
  creationTimestamp: "2025-04-28T18:17:16Z"
  generation: 1
  name: neuvector-allowlist
  resourceVersion: "13326"
  uid: 3e425c28-9bef-4459-b769-381d974f17f6
spec:
  allowlistPaths:
  - SUSE/neuvector-enforcer/v1.0.0/suse-neuvector-enforcer.yaml
  - SUSE/neuvector-scanner/v1.0.0/suse-neuvector-scanner.yaml
status:
  conditions:
  - lastTransitionTime: "2025-04-28T18:17:17Z"
    message: Synchronization completed successfully; allowlists up to date
    observedGeneration: 1
    reason: SyncSuccessful
    status: "True"
    type: Ready
  lastSyncAttempt: "2025-04-28T18:17:17Z"
  managedAllowlistStatus:
  - filePath: SUSE/neuvector-enforcer/v1.0.0/suse-neuvector-enforcer.yaml
    generation: 1
    lastSuccessfulSync: "2025-04-28T18:17:16Z"
    phase: Installed
  - filePath: SUSE/neuvector-scanner/v1.0.0/suse-neuvector-scanner.yaml
    generation: 1
    lastSuccessfulSync: "2025-04-28T18:17:17Z"
    phase: Installed

下面的 override.yaml 文件需要在使用 Helm 时用于在 GKE Autopilot 集群上部署 NeuVector。

cve:
  scanner:
    podLabels:
      # The scanner allowlist should be mapped with scanner deployment workload.
      cloud.google.com/matching-allowlist: suse-neuvector-scanner
    resources:
      # Below are the tested limits for scanner deployment in GKE Auto-Pilot cluster for scanner pod.
      limits:
        ephemeral-storage: "3Gi"
      requests:
        ephemeral-storage: "2Gi"
enforcer:
  podLabels:
     # The enforcer allowlist should be mapped with the enforcer daemon set workload.
    cloud.google.com/matching-allowlist: suse-neuvector-enforcer

如果使用 YAML 部署,请相应地在 enforcerscanner YAML 配置中添加 podLabels 和资源限制。

要了解有关 allowlistSynchronizer 的更多信息,请查看 GKE 文档

处理具有 Pod 中断预算的自动扩展节点

公有云提供商支持自动扩展节点的能力,这可以动态驱逐包括 SUSE® Security 控制器在内的 Pods。为了防止对控制器的干扰,可以创建一个 SUSE® Security Pod 中断预算。

例如,创建下面的文件 nv_pdr.yaml,以确保始终运行至少 2 个控制器。

apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
  name: neuvector-controller-pdb
  namespace: neuvector
spec:
  minAvailable: 2
  selector:
    matchLabels:
      app: neuvector-controller-pod

然后,

kubectl create -f nv_pdr.yaml