Installa Policy Controller

In questa pagina viene spiegato come installare Policy Controller. Policy Controller controlla, verifica e applica i cluster, garantendo la conformità ai criteri relativi a sicurezza, normative o regole aziendali.

Policy Controller è disponibile se utilizzi Anthos o Google Kubernetes Engine (GKE). Con GKE, Policy Controller è una funzionalità a pagamento. Per ulteriori informazioni, consulta la sezione Prezzi.

Prima di iniziare

Prima di iniziare, assicurati di aver eseguito le seguenti attività:

  1. Installa e inizializza l'interfaccia a riga di comando di Google Cloud, che fornisce i comandi gcloud, gsutil, kubectl e nomos utilizzati in queste istruzioni. Se utilizzi Cloud Shell, l'interfaccia a riga di comando di Google Cloud è preinstallata.

  2. Se è la prima volta che utilizzi Anthos Config Management, attiva Anthos Config Management.

  3. Crea o assicurati l'accesso a un cluster che esegue una versione di Kubernetes 1.14.x o successive. Policy Controller potrebbe essere eseguito in versioni di Kubernetes precedenti alla 1.14.x, ma il prodotto non si comporta correttamente.

  4. Concedi i ruoli IAM richiesti all'utente che registra il cluster.

  5. Se prevedi di utilizzare l'interfaccia a riga di comando di Google Cloud per configurare Policy Controller, registra il tuo cluster su un parco risorse ora. Se prevedi di utilizzare Google Cloud Console, registra i tuoi cluster quando installi Policy Controller.

Installa Policy Controller

Segui questi passaggi per configurare Anthos Config Management per installare il controller di ammissione dinamico Policy Policy nel cluster. Quando installi Config Sync utilizzando Google Cloud Console o l'interfaccia a riga di comando di Google Cloud, non puoi utilizzare i comandi kubectl in un secondo momento per modificare la tua configurazione.

Console

Registra i tuoi cluster

Per utilizzare Anthos Config Management, registra prima i cluster. Registrando i tuoi cluster, potrai condividere un set comune di configurazioni e criteri.

Per registrare i cluster, completa le seguenti attività:

  1. In Cloud Console:

    Queste pagine mostrano quali cluster sono attualmente registrati e configurati e ti permettono di iniziare a registrare nuovi cluster.

  2. Fai clic su Nuova configurazione.

  3. Nella pagina Seleziona i cluster registrati per Config Management, individua la tabella Cluster non registrati da questo progetto e trova il cluster che vuoi registrare.

  4. Fai clic su Registra accanto al cluster che vuoi registrare.

    Una volta registrato, il cluster viene visualizzato nella tabella Seleziona i cluster registrati per Config Management.

Configura Policy Controller

Per installare Policy Controller su Cloud Console, completa i seguenti passaggi:

  1. Nella pagina Seleziona i cluster registrati per Config Management, seleziona il cluster registrato in cui vuoi abilitare Policy Controller e fai clic su Avanti.
  2. Lascia selezionata la casella di controllo Abilita Policy Controller.
  3. (Facoltativo) Per configurare altre impostazioni, fai clic su Mostra impostazioni avanzate.
  4. (Facoltativo) Per mutare le risorse, seleziona la casella di controllo Abilita webhook web selezionata.
  5. (Facoltativo) Per installare una libreria di modelli di vincolo per i tipi di criteri più comuni, lascia selezionata la casella di controllo Installa la libreria di modelli predefinita.
  6. (Facoltativo) Nel campo Intervallo di controllo, aggiungi il periodo in secondi tra sincronizzazioni consecutive. Il valore predefinito è 60 secondi e se imposti l'intervallo di controllo su 0, il controllo è disabilitato.
  7. (Facoltativo) Nel campo Spazi dei nomi esenti, aggiungi un elenco di spazi dei nomi. Gli oggetti in questi spazi dei nomi vengono ignorati da tutti i criteri. Non è necessario che gli spazi dei nomi siano già presenti.
  8. (Facoltativo) Per abilitare i vincoli di riferimento, seleziona la casella di controllo Abilita la possibilità di utilizzare modelli di vincolo che fanno riferimento a oggetti diversi dall'oggetto attualmente valutato.
  9. (Facoltativo) Se non vuoi installare Config Sync, fai clic su Avanti e deseleziona la casella di controllo Abilita Config Sync.

  10. Per completare l'installazione, scegli Completa. Tornerai alla pagina Config Management.

    Dopo qualche minuto, dovresti vedere la colonna dello stato Controller criteri accanto al cluster che hai configurato.

gcloud

  1. Prepara la configurazione creando un nuovo manifest apply-spec.yaml o utilizzando un manifest esistente. L'uso di un manifest esistente consente di configurare il cluster con le stesse impostazioni utilizzate da un altro cluster.

Crea nuovo manifest

Per configurare Policy Controller con le nuove impostazioni per il tuo cluster, crea un file denominato apply-spec.yaml e copiaci il seguente file YAML:

# apply-spec.yaml

applySpecVersion: 1
spec:
  policyController:
    # Set to true to install and enable Policy Controller
    enabled: true
    # Uncomment to prevent the template library from being installed
    # templateLibraryInstalled: false
    # Uncomment to enable support for referential constraints
    # referentialRulesEnabled: true
    # Uncomment to disable audit, adjust value to set audit interval
    # auditIntervalSeconds: 0
    # Uncomment to log all denies and dryrun failures
    # logDeniesEnabled: true
    # Uncomment to exempt namespaces
    # exemptableNamespaces: ["namespace-name"]
    # Uncomment to enable mutation
    # mutation:
    #   # enabled: true
  # ...other fields...

Devi aggiungere un campo spec.policyController e impostare il valore enabled su true. Puoi scegliere di attivare altre funzionalità di Policy Controller. Tuttavia, il supporto per i vincoli di riferimento è disabilitato per impostazione predefinita. Prima di abilitarlo, assicurati di familiarizzare con le attenzioni sulla coerenza finale.

Utilizza il file manifest esistente

Per configurare il cluster con le stesse impostazioni utilizzate da un altro cluster, recupera le impostazioni da un cluster registrato:

gcloud alpha container hub config-management fetch-for-apply \
     --membership=MEMBERSHIP_NAME \
     --project=PROJECT_ID \
     > CONFIG_YAML_PATH

Sostituisci quanto segue:

  • MEMBERSHIP_NAME: il nome dell'appartenenza al cluster registrato con le impostazioni del controller dei criteri che vuoi utilizzare
  • PROJECT_ID: ID progetto
  • CONFIG_YAML_PATH: percorso del file apply-spec.yaml

2. Applica il file apply-spec.yaml:

  gcloud beta container hub config-management apply \
      --membership=MEMBERSHIP_NAME \
      --config=CONFIG_YAML \
      --project=PROJECT_ID

Sostituisci quanto segue:

  • MEMBERSHIP_NAME: il nome dell'appartenenza al cluster registrato che contiene le impostazioni di Policy Controller che vuoi utilizzare.
  • CONFIG_YAML: aggiungi il percorso al file apply-spec.yaml.
  • PROJECT_ID: aggiungi l'ID progetto.

Il pod viene creato e viene avviato il controllo dei criteri e l'applicazione dei vincoli.

Installare Policy Controller su un cluster privato

Se utilizzi una versione precedente alla 1.8.0 e installi Policy Controller su un cluster privato in Google Kubernetes Engine (GKE), devi completare alcuni passaggi aggiuntivi per completare l'installazione. Nei cluster privati, il firewall impedisce al piano di controllo di raggiungere i nodi sulla porta 8443, ovvero il punto in cui il piano di controllo tenta di connettersi a Policy Controller. Puoi creare una regola firewall in modo che il piano di controllo possa raggiungere la porta 8443 (o qualsiasi altra porta personalizzata). Puoi anche eseguire il pod sulla porta con privilegi 443. Per ulteriori informazioni, consulta la sezione Esecuzione su nodi cluster GKE privati nella documentazione di Gatekeeper.

Verifica l'installazione

Dopo aver installato Policy Controller, puoi verificare che l'operazione sia stata completata correttamente.

Console

Procedi con i seguenti passaggi:

  1. In Cloud Console:

  2. Nella tabella del cluster, visualizza la colonna Stato controller delle norme. Una installazione riuscita ha lo stato Installata.

gcloud

Esegui questo comando:

gcloud beta container hub config-management status \
    --project=PROJECT_ID

Sostituisci PROJECT_ID con l'ID del progetto.

Dovresti vedere un output simile all'esempio seguente:

Name          Status  Last_Synced_Token  Sync_Branch  Last_Synced_Time      Policy_Controller
CLUSTER_NAME  SYNCED  a687c2c            1.0.0        2021-02-17T00:15:55Z  INSTALLED

Un'installazione riuscita presenta lo stato INSTALLED nella colonna Policy Controller.

Verifica l'installazione della libreria di modelli di vincolo

Quando installi Policy Controller, la libreria di modelli di vincolo viene installata per impostazione predefinita. Il completamento dell'installazione può richiedere diversi minuti.

Per verificare che la libreria dei modelli sia installata, elenca tutti gli oggetti ConstraintTemplate:

kubectl get constrainttemplates

Dovresti vedere un output simile all'esempio seguente:

NAME                                      AGE
k8sallowedrepos                           84s
k8scontainerlimits                        84s
k8spspallowprivilegeescalationcontainer   84s
...[OUTPUT TRUNCATED]...

Quando un singolo modello di vincolo è installato correttamente, il suo campo status.created è true.

Interazioni controller di criteri con Anthos Config Management

Anthos Config Management gestisce le risorse essenziali per l'esecuzione di Policy Controller. Per evitare conflitti tra Anthos Config Management e Policy Controller, fai attenzione a cosa viene inserito nel repository di Config Sync.

Quando utilizzi Policy Controller, tieni presente quanto segue:

  • Non puoi sincronizzare un modello di vincolo che fa parte della libreria di modelli, a meno che la libreria di modelli di vincolo non sia disattivata.

  • Se vuoi sincronizzare la risorsa di configurazione archiviata nello spazio dei nomi gatekeeper-system, lo spazio dei nomi deve essere non definito nel repository o corrispondere alla configurazione che verrà installata da Anthos Config Management.

  • Se lo spazio dei nomi gatekeeper-system viene rimosso dal repository di origine, il sistema Anthos Config Management potrebbe non essere in grado di recuperare. Per ripristinare, elimina la configurazione del webhook di convalida per Policy Controller.

Gestione della libreria di modelli di vincolo

Per informazioni sulla disinstallazione o sulla reinstallazione dei modelli di vincoli, sui relativi vincoli associati o sulla libreria di modelli di vincolo, consulta la sezione Creare vincoli.

Spazi dei nomi esenti dall'applicazione forzata

Puoi configurare Policy Controller in modo che ignori gli oggetti all'interno di uno spazio dei nomi. Per ulteriori informazioni, consulta la sezione Escludere gli spazi dei nomi da Policy Controller.

Modifica risorse

Policy Controller funge anche da webhook di modifica. Per ulteriori informazioni, consulta la sezione Modificare le risorse.

Visualizzare la versione di Policy Controller

Per scoprire quale versione di Gatekeeper Policy Controller utilizza, visualizza il tag immagine eseguendo questo comando:

kubectl get deployments -n gatekeeper-system gatekeeper-controller-manager \
  -o="jsonpath={.spec.template.spec.containers[0].image}"

Da Anthos Config Management versione 1.3.2 e successive, il tag Git (o hash) utilizzato per creare Gatekeeper e il numero di versione di Anthos Config Management sono inclusi nel tag immagine come segue:

.../gatekeeper:VERIOSN_NUMBER-GIT_TAG.gBUILD_NUMBER

Ad esempio, per la seguente immagine:

gcr.io/config-management-release/gatekeeper:anthos1.3.2-480baac.g0
  • anthos1.3.2 è il numero di versione.
  • 480baac è il tag Git.
  • 0 è il numero di build.

Puoi anche visualizzare un elenco di tutte le versioni di Anthos Config Management con le relative versioni binarie, di installazione e di nomos corrispondenti in Matrice delle versioni di release.

Upgrade del controller dei criteri

Policy Controller viene eseguito ogni volta che esegui l'upgrade di Anthos Config Management. Per saperne di più, vedi Eseguire l'upgrade di Anthos Config Management.

Disinstalla Policy Controller

Segui questi passaggi per disinstallare Policy Controller dai tuoi cluster.

Console

Per disabilitare Policy Controller sui cluster, completa le seguenti attività:

  1. In Cloud Console:

  2. Accanto al cluster nei cluster per cui vuoi disabilitare Policy Controller, fai clic su Edit (Modifica).

  3. Deseleziona la casella di controllo Abilita controller dei criteri.

  4. Fai clic su Completa.

gcloud

Per disinstallare Policy Controller:

  1. Modifica la configurazione di Anthos Config Management nel tuo file apply-spec.yaml e imposta policyController.enabled su false.

  2. Applica le modifiche nel file apply-spec.yaml:

     gcloud beta container hub config-management apply \
         --membership=CLUSTER_NAME \
         --config=CONFIG_YAML \
         --project=PROJECT_ID
    

    Sostituisci quanto segue:

    • CLUSTER_NAME: aggiungi il cluster registrato a cui vuoi applicare questa configurazione.
    • CONFIG_YAML: aggiungi il percorso al file apply-spec.yaml.
    • PROJECT_ID: aggiungi l'ID progetto.

Una volta rimosso il finalizzatore policycontroller.configmanagement.gke.io, la disinstallazione di Anthos Config Management è completa.

Se vuoi disinstallare completamente Anthos Config Management, consulta Disinstallare Anthos Config Management.

Passaggi successivi