將命名空間排除在政策控制器之外

本頁說明如何在 Policy Controller 中設定豁免的命名空間。

豁免命名空間會從 Policy Controller 的許可 Webhook 強制執行作業中移除命名空間,但系統仍會在稽核中回報任何違規事項。如果您未設定任何命名空間,系統只會預先設定 gatekeeper-system 命名空間,使其免受 Policy Controller 許可 Webhook 強制執行。

設定豁免命名空間

設定可豁免的命名空間會套用 admission.gatekeeper.sh/ignore 標籤,讓命名空間免受 Policy Controller 許可 Webhook 強制執行。如果您之後移除可豁免的命名空間,政策控制器不會從命名空間中移除 admission.gatekeeper.sh/ignore 標籤。

豁免命名空間,不強制執行政策

您可以在安裝 Policy Controller 時或安裝後,排除命名空間。以下程序說明如何在安裝後排除命名空間。

控制台

  1. 前往 Google Cloud 控制台的「Posture Management」(狀態管理) 專區,然後點選「Policy」(政策) 頁面。

    前往「政策」

  2. 在「設定」分頁的叢集表格中,選取「編輯設定」欄中的「編輯」
  3. 展開「編輯 Policy Controller 設定」選單。
  4. 在「Exempt namespaces」(豁免命名空間) 欄位中,提供有效命名空間的清單。 所有政策都會忽略這些命名空間中的物件。命名空間不一定要現在就存在。
  5. 選取「儲存變更」

gcloud

如要將命名空間新增至可豁免於准入 Webhook 強制執行的命名空間清單,請執行下列指令:

  gcloud container fleet policycontroller update \
    --memberships=MEMBERSHIP_NAME \
    --exemptable-namespaces=[NAMESPACE_LIST]

更改下列內容:

  • MEMBERSHIP_NAME:已註冊叢集的成員名稱,用於豁免命名空間。你可以指定多個會員方案,並以半形逗號分隔。
  • NAMESPACE_LIST:以半形逗號分隔的命名空間清單,您希望政策控制器不要強制執行這些命名空間的政策。

這項指令只會免除資源的許可控制 Webhook。資源仍在稽核中。如要改為將命名空間排除在稽核範圍之外,請在政策套件層級設定豁免:

  gcloud container fleet policycontroller content bundles set BUNDLE_NAME \
    --memberships=MEMBERSHIP_NAME \
    --exempted-namespaces=[NAMESPACE_LIST]

更改下列內容:

  • BUNDLE_NAME,並提供要更新的政策套件名稱,以及要排除的命名空間。
  • MEMBERSHIP_NAME:已註冊叢集的成員名稱,用於豁免命名空間。你可以指定多個會員方案,並以半形逗號分隔。
  • NAMESPACE_LIST:以半形逗號分隔的命名空間清單,您希望政策控制器不要強制執行這些命名空間的政策。

要排除在違規處置之外的命名空間

這些命名空間可能由 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