本页介绍了如何从 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 资源,方法是完成以下步骤:
将现有 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。
从现有 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 } } }
完成以下其中一个步骤,导入 Policy Controller 成员资格功能设置:
运行以下命令:
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"
向 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" }
应用 Policy Controller 设置:
terraform apply
可选:导入完成后,您可以从 Terraform 资源中移除导入块。或者,也可以放心地将导入块留在配置中,作为资源来源的记录。
Config Connector
如需停止使用 configmanagement.policyController
规范,请完成以下步骤:
使用必需的
policycontroller
字段创建新的GKEHubFeatureMembership
规范。确保将resourceID
字段设置为policyController
。如果您已有使用
spec.configmanagement.policyController
字段的GKEHubFeatureMembership
,请从configmanagement
规范中移除所有policycontroller
字段。
kubectl
如果您使用 kubectl
命令通过 ConfigManagement
对象管理 Policy Controller,请改用以 gcloud container fleet policycontroller
开头的 gcloud CLI Policy Controller 命令。除此之外,您无需采取其他措施。
如果您的 ConfigManagement
对象包含 policyController
区块,请将其移除,以便与 Config Sync 兼容。
您可能需要查看以下资源,来详细了解 Policy Controller API:
- 使用
gcloud container fleet policycontroller
命令安装 Policy Controller - 查看 Config Connector
GKEHubFeature
参考文档 - 查看 Terraform
google_gke_hub_feature
参考文档