このページでは、Policy Controller を管理するために ConfigManagement API から PolicyController API に移行する方法について説明します。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
Policy Controller を構成する機能名 "configmanagement" の Terraform リソースを使用している場合は、以下の手順を実行して、機能名 "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に設定してください。既存の
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 の詳細については、以下のリソースをご覧ください。
gcloud container fleet policycontrollerコマンドを使用して Policy Controller をインストールする- Config Connector の
GKEHubFeatureリファレンス ドキュメントを確認する - Terraform の
google_gke_hub_featureリファレンス ドキュメントを確認する