从政策控制器中排除命名空间

本主题描述如何通过配置可豁免命名空间从政策控制器强制实施中移除命名空间。

准备工作

在集群中安装 Anthos Config Management 和政策控制器。

可免除命名空间

配置可免除命名空间允许用户应用标签 admission.gatekeeper.sh/ignore。当配置可免除命名空间时,政策控制器不会将该标签的应用删除到命名空间。

命名空间免于强制执行

要免除命名空间,以便您可以应用 admission.gatekeeper.sh/ignore 标签,请将命名空间的名称添加到 spec.policyController.exemptableNamespaces 中的 ConfigManagement 清单中。

# config-management.yaml

apiVersion: configmanagement.gke.io/v1
kind: ConfigManagement
metadata:
  name: config-management
  namespace: config-management-system
spec:
  # clusterName is required and must be unique among all managed clusters
  clusterName: cluster-name
  # Set to true to install and enable Policy Controller
  policyController:
    enabled: true
    exemptableNamespaces: ["namespace-name"]
...

您可以免除多个命名空间。例如,要在集群 my-cluster 中免除命名空间 not-applicablealso-not-applicable,可以应用以下清单:

# config-management.yaml

apiVersion: configmanagement.gke.io/v1
kind: ConfigManagement
metadata:
  name: config-management
  namespace: config-management-system
spec:
  # clusterName is required and must be unique among all managed clusters
  clusterName: my-cluster
  # Set to true to install and enable Policy Controller
  policyController:
    enabled: true
    exemptableNamespaces: ["not-applicable","also-not-applicable"]
...

标记命名空间

接下来,标记您的命名空间,以便 Operator 不强制执行其内容。

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