從 ConfigManagement API 遷移至 PolicyController API

本頁說明如何從 ConfigManagement API 遷移至 PolicyController API,以管理 Policy Controller。PolicyController API 提供相同的 Policy Controller 安裝和管理功能。

2025 年 4 月起,configManagement API 1.21 以上版本將不再支援安裝或更新 Policy Controller。如果嘗試使用這種方法升級或安裝 Policy Controller,系統會顯示錯誤訊息,且作業會失敗。請按照本頁的操作說明進行遷移,以便繼續使用 Policy Controller。

完整遷移的步驟會因您安裝 Policy Controller 時使用的方法而異。

如果您使用以 gcloud container fleet policycontroller 開頭的 gcloud CLI PolicyController 指令,就表示您已在使用 PolicyController API。因此你不必採取任何行動。否則,請參閱您用來安裝 Policy Controller 的方法的操作說明:

config management

如果您使用開頭為 gcloud alpha container fleet config-management 的 gcloud CLI 指令,請改用開頭為 gcloud container fleet policycontroller 的 gcloud CLI Policy Controller 指令。如需指令清單,請參閱 gcloud CLI 說明文件。此外,您不必採取任何其他行動。

如果 Google Cloud CLI apply spec 檔案含有 policyController 區塊,請移除該區塊,確保與 Config Sync 相容。

Terraform

如果您使用 Terraform 資源,透過功能名稱 "configmanagement" 設定 Policy Controller,請完成下列步驟,改用功能名稱為 "policycontroller" 的 Terraform 資源:

  1. 將現有的 Terraform 檔案複製到新檔案,或更新 Terraform 檔案,然後新增下列內容:

    resource "google_gke_hub_feature" "feature" {
      name = "policycontroller"
      location = "global"
    }
    
    resource "google_gke_hub_feature_membership" "feature_member" {
      feature = google_gke_hub_feature.feature.name # "policycontroller"
      location = "global"
      membership = MEMBERSHIP_NAME
      project = PROJECT_ID
       policycontroller {
          policy_controller_hub_config {
            install_spec = "INSTALL_SPEC_ENABLED"
        }
      }
    }
    

    更改下列內容:

    • MEMBERSHIP:已安裝 Policy Controller 的註冊叢集成員名稱。
    • PROJECT_ID:您的專案 ID。
  2. 從現有 Terraform 資源中移除 "policy_controller" 區塊。 您可以在 "configmanagement" 區塊下方找到該區塊。 如果您使用資源管理 Policy Controller,可以移除整個 configmanagement 區塊。如果您使用資源管理 Config Sync,請務必只移除 Policy Controller 區塊。舉例來說,您的 configmanagement 區塊可能類似下列內容:

    resource "google_gke_hub_feature_membership" "feature_member" {
       provider   = google-beta
       location   = "global"
       feature    = "configmanagement"
       membership = google_gke_hub_membership.membership.membership_id
       configmanagement {
          version = "1.8.0"
          config_sync {
             source_format = "unstructured"
             git {
             }
          }
          # if you're still using the config_sync block, delete only the policy_controller block
          policy_controller {
             enabled                    = true
             template_library_installed = true
             referential_rules_enabled  = true
          }
       }
    }
    
  3. 完成下列任一步驟,匯入 Policy Controller 會員功能設定

    1. 執行下列指令:

      terraform import "google_gke_hub_feature.feature" "projects/PROJECT_ID/locations/global/features/policycontroller"
      terraform import "google_gke_hub_feature_membership.feature_member" "projects/PROJECT_ID/locations/global/features/policycontroller/membershipId/MEMBERSHIP_NAME"
      
    2. 在 Terraform 資源中新增匯入區塊

      import {
         to = google_gke_hub_feature_membership.feature_member
         id = "projects/PROJECT_ID/locations/global/features/policycontroller/membershipId/MEMBERSHIP_NAME"
      }
      import {
         to = google_gke_hub_feature.feature
         id = "projects/PROJECT_ID/locations/global/features/policycontroller"
      }
      
  4. 套用 Policy Controller 設定:

    terraform apply
    
  5. 選用:匯入完成後,您可以從 Terraform 資源中移除匯入區塊。或者,您也可以將匯入區塊保留在設定中,做為資源來源的記錄。

Config Connector

如要停止使用 configmanagement.policyController 規格,請完成下列步驟:

  1. 使用必要的 policycontroller 欄位建立新的 GKEHubFeatureMembership 規格。請確認已將 resourceID 欄位設為 policyController

  2. 如果現有 GKEHubFeatureMembership 使用 spec.configmanagement.policyController 欄位,請從 configmanagement 規格中移除所有 policycontroller 欄位。

kubectl

如果您使用 kubectl 指令透過 ConfigManagement 物件管理 Policy Controller,請改用以 gcloud container fleet policycontroller 開頭的 gcloud CLI Policy Controller 指令。此外,您不必採取任何其他行動。

如果 ConfigManagement 物件policyController 區塊,請移除該區塊,以便與 Config Sync 相容。

如要進一步瞭解 Policy Controller API,請參閱下列資源: