Migrer de l'API ConfigManagement vers l'API PolicyController

Cette page explique comment migrer de l'API ConfigManagement vers l'API PolicyController pour gérer Policy Controller. L'API PolicyController offre les mêmes fonctionnalités pour installer et gérer Policy Controller.

À partir d'avril 2025, la version 1.21 et les versions ultérieures de l'API configManagement ne seront plus compatibles avec l'installation ni les mises à jour de Policy Controller. Toute tentative de mise à niveau ou d'installation de Policy Controller avec cette méthode échouera et générera une erreur. Suivez les instructions de cette page pour migrer et continuer à utiliser Policy Controller.

La procédure de migration complète diffère selon la méthode d'installation que vous avez utilisée pour installer Policy Controller.

Si vous utilisez des commandes gcloud CLI PolicyController qui commencent par gcloud container fleet policycontroller, vous utilisez déjà l'API PolicyController. Aucune action n'est requise de votre part. Sinon, consultez les instructions correspondant à la méthode que vous avez utilisée pour installer Policy Controller :

config management

Si vous utilisez des commandes gcloud CLI qui commencent par gcloud alpha container fleet config-management, passez aux commandes gcloud CLI Policy Controller qui commencent par gcloud container fleet policycontroller. Consultez la documentation de gcloud CLI pour obtenir la liste des commandes. Aucune autre action n'est requise de votre part.

Si votre fichier apply spec de la CLI Google Cloud contient le bloc policyController, supprimez-le pour assurer la compatibilité avec Config Sync.

Terraform

Si vous utilisez une ressource Terraform qui configure Policy Controller avec le nom de fonctionnalité "configmanagement", vous devez passer à une ressource Terraform avec le nom de fonctionnalité "policycontroller" en procédant comme suit :

  1. Copiez votre fichier Terraform existant dans un nouveau fichier ou mettez-le à jour, puis ajoutez les éléments suivants :

    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"
        }
      }
    }
    

    Remplacez les éléments suivants :

    • MEMBERSHIP : nom de l'appartenance du cluster enregistré sur lequel Policy Controller est installé.
    • PROJECT_ID : ID de votre projet.
  2. Supprimez le bloc "policy_controller" de votre ressource Terraform existante. Vous trouverez le bloc sous le bloc "configmanagement". Si vous utilisez la ressource uniquement pour gérer Policy Controller, vous pouvez supprimer l'intégralité du bloc configmanagement. Si vous utilisez la ressource pour gérer Config Sync, assurez-vous de ne supprimer que le bloc Policy Controller. Par exemple, votre bloc configmanagement peut ressembler à ce qui suit :

    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. Importez les paramètres de la fonctionnalité d'abonnement Policy Controller en procédant de l'une des manières suivantes :

    1. Exécutez la commande suivante :

      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. Ajoutez un bloc d'importation à votre ressource 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. Appliquez les paramètres Policy Controller :

    terraform apply
    
  5. Facultatif : Une fois l'importation terminée, vous pouvez supprimer le bloc d'importation de votre ressource Terraform. Vous pouvez également laisser le bloc d'importation dans votre configuration pour conserver une trace de l'origine de la ressource.

Config Connector

Pour arrêter d'utiliser la spécification configmanagement.policyController, procédez comme suit :

  1. Créez une spécification GKEHubFeatureMembership avec les champs policycontroller requis. Assurez-vous de définir le champ resourceID sur policyController.

  2. Si vous disposez d'un GKEHubFeatureMembership existant qui utilise le champ spec.configmanagement.policyController, supprimez tous les champs policycontroller de la spécification configmanagement.

kubectl

Si vous utilisez des commandes kubectl pour gérer Policy Controller avec un objet ConfigManagement, passez aux commandes Policy Controller de gcloud CLI qui commencent par gcloud container fleet policycontroller. Aucune autre action n'est requise de votre part.

Si votre objet ConfigManagement comporte le bloc policyController, supprimez-le pour assurer la compatibilité avec Config Sync.

Vous pouvez consulter les ressources suivantes pour en savoir plus sur l'API Policy Controller :