Migre da API ConfigManagement para a API PolicyController

Esta página explica como migrar da API ConfigManagement para a API PolicyController para gerir o Policy Controller. A API PolicyController oferece as mesmas capacidades para instalar e gerir o Policy Controller.

A partir de abril de 2025, a versão 1.21 e posterior da API configManagement já não suporta a instalação nem as atualizações do Policy Controller. A tentativa de atualizar ou instalar o Policy Controller com este método falha com um erro. Siga as instruções nesta página para migrar, de modo a poder continuar a usar o Policy Controller.

Os passos para migrar totalmente diferem consoante o método de instalação que usou para instalar o Policy Controller.

Se usar comandos da CLI gcloud PolicyController que começam com gcloud container fleet policycontroller, já está a usar a PolicyControllerAPI. Não é necessária nenhuma ação. Caso contrário, reveja as instruções relativas ao método que usou para instalar o Policy Controller:

config management

Se usar comandos da CLI gcloud que começam com gcloud alpha container fleet config-management, mude para comandos do Policy Controller da CLI gcloud que começam com gcloud container fleet policycontroller. Reveja a documentação da CLI gcloud para ver uma lista de comandos. Não é necessária qualquer outra ação da sua parte.

Se o ficheiro Google Cloud CLI apply spec tiver o bloco policyController, remova-o para garantir a compatibilidade com o Config Sync.

Terraform

Se usar um recurso do Terraform que configure o Policy Controller com o nome da funcionalidade "configmanagement", deve mudar para um recurso do Terraform com o nome da funcionalidade "policycontroller" concluindo os seguintes passos:

  1. Copie o ficheiro Terraform existente para um novo ficheiro ou atualize o ficheiro Terraform e adicione o seguinte:

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

    Substitua o seguinte:

    • MEMBERSHIP: o nome da associação do cluster registado que tem o Policy Controller instalado.
    • PROJECT_ID: o ID do seu projeto.
  2. Remova o bloco "policy_controller" do recurso do Terraform existente. Pode encontrar o bloco no bloco "configmanagement". Se estiver a usar o recurso apenas para gerir o Policy Controller, pode remover todo o bloco configmanagement. Se estiver a usar o recurso para gerir o Config Sync, certifique-se de que remove apenas o bloco do Policy Controller. Por exemplo, o seu bloco configmanagement pode ser semelhante ao seguinte:

    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. Importe as definições da funcionalidade de subscrição do Policy Controller concluindo um dos seguintes passos:

    1. Execute o seguinte comando:

      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. Adicione um bloco de importação ao seu recurso do 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. Aplique as definições do Policy Controller:

    terraform apply
    
  5. Opcional: depois de concluída a importação, pode remover o bloqueio de importação do seu recurso do Terraform. Em alternativa, pode deixar o bloco de importação na configuração como registo da origem do recurso.

Config Connector

Para deixar de usar a especificação configmanagement.policyController, conclua os passos seguintes:

  1. Crie uma nova GKEHubFeatureMembership especificação com os campos policycontroller obrigatórios. Certifique-se de que define o campo resourceID como policyController.

  2. Se tiver um GKEHubFeatureMembership existente que use o campo spec.configmanagement.policyController, remova todos os campos policycontroller da especificação configmanagement.

kubectl

Se usar comandos kubectl para gerir o Policy Controller com um objeto ConfigManagement, mude para usar comandos do Policy Controller da CLI gcloud que começam com gcloud container fleet policycontroller. Não é necessária qualquer outra ação da sua parte.

Se o seu objeto tiver o bloco policyController, remova-o para garantir a compatibilidade com o Config Sync.ConfigManagement

Recomendamos que reveja os seguintes recursos para saber mais sobre a API Policy Controller: