从政策控制器的准许网络钩子中排除命名空间

本页面介绍如何配置可豁免的命名空间。可豁免的命名空间使用政策控制器从准入网络钩子强制执行中移除,但任何违规行为仍会在审核中报告。如果您不配置任何命名空间,则只有 gatekeeper-system 命名空间可以免除强制执行。

准备工作

如需按照本页上的命令操作,请在集群上安装政策控制器。但是,您还可以在首次安装政策控制器时启用可豁免的命名空间。

配置可豁免的命名空间

通过配置可豁免的命名空间,您可以应用标签 admission.gatekeeper.sh/ignore。如果您以后移除可豁免的命名空间,则政策控制器仍会将该标签应用到该命名空间。

命名空间免于强制执行

您必须先在配置政策控制器时添加命名空间名称,然后才能应用 admission.gatekeeper.sh/ignore 标签。

控制台 - Anthos

  1. 在 Cloud Console 中,转到 Anthos Config Management 页面。

    转到 Anthos Config Management

  2. 选择您要启用此功能的已注册集群,然后点击配置

  3. 点击您的集群的 ACM 设置

  4. 豁免命名空间 (Exempt namespaces) 字段中,提供有效命名空间的列表。这些命名空间中的对象会被所有政策忽略。 目前,这些命名空间无需存在。

  5. 点击完成

控制台 - GKE

  1. 在 Cloud Console 中,转到 Config Management 页面。

    转到 Config Management

  2. 在要启用此功能的集群旁边,点击 修改

  3. 在左侧菜单中,点击政策控制器

  4. 豁免命名空间 (Exempt namespaces) 字段中,提供有效命名空间的列表。这些命名空间中的对象会被所有政策忽略。 目前,这些命名空间无需存在。

  5. 点击完成

gcloud

  1. 为免于强制执行命名空间,请在 spec.policyController.exemptableNamespaces 中添加命名空间的名称:

    # apply-spec.yaml
    
    applySpecVersion: 1
    spec:
      # Set to true to install and enable Policy Controller
      policyController:
        enabled: true
        exemptableNamespaces: ["NAMESPACE_NAME"]
    ...
    

    您还可以豁免多个命名空间。例如,要免除命名空间 not-applicablealso-not-applicable,可以应用以下清单:

    # apply-spec.yaml
    
    applySpecVersion: 1
    spec:
      # Set to true to install and enable Policy Controller
      policyController:
        enabled: true
        exemptableNamespaces: ["not-applicable","also-not-applicable"]
    ...
    
  2. 将更改应用于 apply-spec.yaml 文件:

     gcloud beta container hub config-management apply \
         --membership=MEMBERSHIP_NAME \
         --config=CONFIG_YAML \
         --project=PROJECT_ID
    

    请替换以下内容:

    • MEMBERSHIP_NAME:添加您要将此配置应用于的已注册集群。 如果您已在 Google Cloud Console 中注册集群,则成员名称与您的集群名称相同。
    • CONFIG_YAML:添加 apply-spec.yaml 文件的路径。
    • PROJECT_ID:添加您的项目 ID。

为命名空间添加标签

启用该功能后,为您的命名空间添加标签,以便政策控制器的准入网络钩子不会强制执行其内容:

kubectl label namespace NAMESPACE_NAME "admission.gatekeeper.sh/ignore=true"