ConfigManagement API から PolicyController API に移行する

このページでは、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 リソースに切り替える必要があります。

  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. 既存の GKEHubFeatureMembershipspec.configmanagement.policyController フィールドを使用している場合は、configmanagement 仕様から policycontroller フィールドを削除します。

kubectl

kubectl コマンドを使用して ConfigManagement オブジェクトで Policy Controller を管理している場合は、gcloud container fleet policycontroller で始まる gcloud CLI Policy Controller コマンドの使用に切り替えます。その他に必要な対応はありません。

ConfigManagement オブジェクトpolicyController ブロックがある場合は、Config Sync との互換性を確保するために削除します。

Policy Controller API の詳細については、以下のリソースをご覧ください。