本页面介绍了如何在 Policy Controller 中配置豁免命名空间。
豁免命名空间使用 Policy Controller 从准入网络钩子强制执行中移除命名空间,但任何违规行为仍会在审核中报告。如果您未配置任何命名空间,则只有 gatekeeper-system
命名空间会预先配置为免除 Policy Controller 的准入网络钩子强制执行。
配置豁免命名空间
通过配置可豁免的命名空间,您可以应用 admission.gatekeeper.sh/ignore
标签免除命名空间进行 Policy Controller 准许网络钩子强制执行。如果您以后移除可豁免的命名空间,则 Policy Controller 不会从该命名空间中移除 admission.gatekeeper.sh/ignore
标签。
命名空间免于强制执行
您可以在安装 Policy Controller 期间或安装后豁免命名空间。以下过程展示了如何在安装后豁免命名空间。
控制台
- 在 Google Cloud 控制台中,进入安全状况管理部分下的 GKE Enterprise 政策页面。
- 在设置标签页下的集群表中,选择修改配置列中的修改 edit。
- 展开修改 Policy Controller 配置菜单。
- 在豁免命名空间 (Exempt namespaces) 字段中,提供有效命名空间的列表。这些命名空间中的对象会被所有政策忽略。这些命名空间不需要已经存在。
- 选择保存更改。
gcloud Policy Controller
如需将命名空间添加到可能免于准入 webhook 强制执行的命名空间列表,请运行以下命令:
gcloud container fleet policycontroller update \
--memberships=MEMBERSHIP_NAME \
--exemptable-namespaces=[NAMESPACE_LIST]
替换以下内容:
MEMBERSHIP_NAME
:要豁免命名空间的已注册集群的成员资格名称。您可以指定多个成员资格(以英文逗号分隔)。NAMESPACE_LIST
:您希望 Policy Controller 免除强制执行的命名空间列表(以英文逗号分隔)。
此命令仅豁免准许 webhook 的资源。这些资源仍会接受审核。如需改为不对命名空间进行审核,请在政策软件包级层设置豁免项:
gcloud container fleet policycontroller content bundles set BUNDLE_NAME \
--memberships=MEMBERSHIP_NAME \
--exempted-namespaces=[NAMESPACE_LIST]
替换以下内容:
- 将
BUNDLE_NAME
替换为您要使用豁免命名空间更新的政策软件包的名称。 MEMBERSHIP_NAME
:要豁免命名空间的已注册集群的成员资格名称。您可以指定多个成员资格(以英文逗号分隔)。NAMESPACE_LIST
:您希望 Policy Controller 免除强制执行的命名空间列表(以英文逗号分隔)。
gcloud ConfigManagement
为免于强制执行命名空间,请在
spec.policyController.exemptableNamespaces
中添加命名空间的名称:# apply-spec.yaml applySpecVersion: 1 spec: # Set to true to install and enable Policy Controller policyController: enabled: true exemptableNamespaces: ["NAMESPACE_NAME"] ...
将 NAMESPACE_NAME 替换为您要免除强制执行的命名空间的名称。
您还可以豁免多个命名空间。例如,要添加命名空间
not-applicable
和also-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"] ...
将更改应用于
apply-spec.yaml
文件:gcloud beta container fleet config-management apply \ --membership=MEMBERSHIP_NAME \ --config=CONFIG_YAML \ --project=PROJECT_ID
请替换以下内容:
- MEMBERSHIP_NAME:添加您要将此配置应用于的已注册集群。 如果您已在 Google Cloud 控制台中注册该集群,则成员资格名称与集群名称相同。
- CONFIG_YAML:添加
apply-spec.yaml
文件的路径。 - PROJECT_ID:添加您的项目 ID。
为可豁免的命名空间添加标签,以便 Policy Controller 的准入网络钩子不会强制执行其内容:
kubectl label namespace NAMESPACE_NAME "admission.gatekeeper.sh/ignore=true"
将 NAMESPACE_NAME 替换为您要免除强制执行的命名空间的名称。
要免除强制执行的命名空间
这些是 Google Kubernetes Engine (GKE) 和相关产品可以创建的一些命名空间。您可能希望免除它们强制执行,以避免产生不必要的影响:
- anthos-creds
- anthos-identity-service
- apigee
- apigee-system
- asm-system
- capi-kubeadm-bootstrap-system
- capi-system
- cert-manager
- cnrm-system
- config-management-monitoring
- config-management-system
- gke-connect
- gke-gmp-system
- gke-managed-cim
- gke-managed-filestorecsi
- gke-managed-metrics-server
- gke-managed-system
- gke-system
- gmp-public
- gmp-system
- hnc-system
- istio-system
- kube-node-lease
- kube-public
- kube-system
- poco-trial
- resource-group-system
- vm-system