このページでは、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
リファレンス ドキュメントを確認する