Questa pagina mostra come installare Policy Controller. Policy Controller controlla, verifica e applica la conformità dei cluster ai criteri relativi a sicurezza, normative o regole aziendali.
Questa pagina è rivolta ad amministratori e operatori IT che vogliono assicurarsi che tutte le risorse in esecuzione all'interno della piattaforma cloud soddisfino i requisiti di conformità dell'organizzazione fornendo e mantenendo l'automazione per eseguire controlli o applicare le norme. Per scoprire di più sui ruoli comuni e sulle attività di esempio a cui facciamo riferimento nei contenuti di Google Cloud, consulta Ruoli e attività utente comuni di GKE Enterprise.
Policy Controller è disponibile se utilizzi la versione Enterprise di Google Kubernetes Engine (GKE). Per saperne di più, consulta i prezzi della versione Enterprise di Google Kubernetes Engine (GKE).
Prima di iniziare
Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:
- Installa e inizializza Google Cloud CLI, che fornisce i comandi
gcloud
,kubectl
enomos
utilizzati in queste istruzioni. Se hai già installato l'interfaccia a riga di comando gcloud, ottieni la versione più recente eseguendogcloud components update
. Se utilizzi Cloud Shell, Google Cloud CLI è preinstallato. Assicurati che Open Policy Agent Gatekeeper open source non sia installato sul tuo cluster. In questo caso, disinstalla Gatekeeper prima di installare Policy Controller.
Abilita le API richieste:
console
Abilita l'API Policy Controller.
gcloud
Esegui questo comando:
gcloud services enable anthos.googleapis.com anthospolicycontroller.googleapis.com
Crea o assicurati di avere accesso a un cluster che esegue Kubernetes 1.14.x o versioni successive. Potrebbe sembrare che Policy Controller funzioni su versioni di Kubernetes precedenti alla 1.14.x, ma il prodotto non si comporta correttamente.
Concedi i ruoli IAM richiesti all'utente che registra il cluster.
Se prevedi di utilizzare Google Cloud CLI per configurare Policy Controller, registra il tuo cluster in un parco risorse ora. Se prevedi di utilizzare la console Google Cloud, registra i tuoi cluster quando installi Policy Controller.
Se utilizzi cluster collegati a GKE, assicurati che il cluster AKS non abbia il componente aggiuntivo Azure Policy ed evita di etichettare gli spazi dei nomi con la chiave
control-plane
.Se utilizzi Google Distributed Cloud on VMware o bare metal, assicurati di installare Policy Controller su un cluster utente. Policy Controller non può essere installato su un cluster amministrativo.
Installa Policy Controller
A partire dalla versione 1.16.0, se utilizzi Google Cloud CLI, puoi installare e gestire direttamente Policy Controller (opzione consigliata).
La configurazione di Policy Controller tramite l'oggetto ConfigManagement
non è più consigliata.
Console
Per installare Policy Controller nella console Google Cloud, completa i seguenti passaggi:
- Nella console Google Cloud, vai alla pagina Criteri di GKE Enterprise nella sezione Gestione della conformità.
Fai clic su add Configura Policy Controller.
(Facoltativo) Per modificare le impostazioni predefinite del parco risorse, fai clic su Personalizza le impostazioni del parco risorse. Nella finestra di dialogo visualizzata, procedi nel seguente modo:
- Nella sezione Aggiungi/modifica pacchetti di criteri, includi o escludi un pacchetto di criteri facendo clic sul pulsante di attivazione/disattivazione pertinente.
Nella sezione Modifica la configurazione di Policy Controller, segui questi passaggi:
- Per attivare l'webhook di modifica, seleziona la casella di controllo Attiva webhook di modifica. Questa funzionalità non è compatibile con i cluster Autopilot.
- Nella casella Intervallo di audit, inserisci il periodo in secondi tra due controlli consecutivi.
Nella casella Spazi dei nomi esenti, inserisci un elenco di spazi dei nomi. Policy Controller ignora gli oggetti in questi spazi dei nomi.
Best practice: Esenta gli spazi dei nomi di sistema per evitare errori nel tuo ambiente. Puoi trovare le istruzioni per esentare gli spazi dei nomi e un elenco di spazi dei nomi comuni creati dai servizi Google Cloud nella pagina Escludi spazi dei nomi.
Per attivare i vincoli di referenza, seleziona la casella di controllo Abilita i modelli di vincolo che fanno riferimento a oggetti diversi dall'oggetto attualmente valutato.
Nell'elenco Versione, seleziona la versione di Controllo criteri che vuoi utilizzare.
Fai clic su Salva modifiche.
Fai clic su Configura.
Nella finestra di dialogo di conferma, fai clic su Conferma. Se non hai mai attivato Policy Controller, facendo clic su Conferma attivi l'API
anthospolicycontroller.googleapis.com
e installi Policy Controller sui tuoi cluster.(Facoltativo) Sincronizza i cluster esistenti con le impostazioni predefinite:
- Nella scheda Impostazioni, fai clic su Sincronizza con le impostazioni del parco risorse.
- Nell'elenco Cluster nel parco risorse, seleziona i cluster che vuoi sincronizzare e poi fai clic su Sincronizza con le impostazioni del parco risorse. Il completamento dell'operazione può richiedere alcuni minuti.
Viene visualizzata la scheda Impostazioni di Policy Controller. Quando Policy Controller è installato e configurato sui tuoi cluster, le colonne di stato mostrano Installato check_circle. L'operazione può richiedere diversi minuti.
gcloud policyController
Abilita Policy Controller eseguendo il seguente comando:
gcloud container fleet policycontroller enable \
--memberships=MEMBERSHIP_NAME
Puoi impostare campi aggiuntivi per configurare Policy Controller. Ad esempio,
potresti voler indicare a Policy Controller di esentare alcuni spazi dei nomi dall'applicazione.
Per un elenco completo dei campi che puoi configurare, consulta la documentazione di Google Cloud CLI per Policy Controller o esegui gcloud container fleet policycontroller enable --help
.
Per impostare le impostazioni a livello di parco risorse per Policy Controller:
Crea un file denominato
fleet-default.yaml
contenente le configurazioni predefinite per Policy Controller. Il campoinstallSpec
è obbligatorio per attivare i valori predefiniti a livello di parco. Questo esempio mostra le opzioni che puoi configurare:# cat fleet-default.yaml policyControllerHubConfig: installSpec: INSTALL_SPEC_ENABLED # Uncomment to set default deployment-level configurations. # deploymentConfigs: # admission: # containerResources: # limits: # cpu: 1000m # memory: 8Gi # requests: # cpu: 500m # memory: 4Gi # Uncomment to set policy bundles that you want to install by default. # policyContent: # bundles: # cis-k8s-v1.5.1: # exemptedNamespaces: # - "namespace-name" # Uncomment to exempt namespaces from admission. # exemptableNamespaces: # - "namespace-name" # 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 enable mutation # mutationEnabled: true # Uncomment to adjust the value to set the constraint violation limit # constraintViolationLimit: 20 # ... other fields ...
Best practice: Esenta gli spazi dei nomi di sistema per evitare errori nel tuo ambiente. Puoi trovare le istruzioni per esentare gli spazi dei nomi e un elenco di spazi dei nomi comuni creati dai servizi Google Cloud nella pagina Escludi spazi dei nomi.
Applica la configurazione predefinita al tuo parco risorse:
gcloud container fleet policycontroller enable \ --fleet-default-member-config=fleet-default.yaml
Per verificare che la configurazione sia stata applicata, esegui il comando seguente:
gcloud container fleet policycontroller describe
Per rimuovere la configurazione predefinita a livello di parco, esegui il seguente comando:
gcloud container fleet policycontroller enable \ --no-fleet-default-member-config
gcloud ConfigManagement
Prepara la configurazione creando un nuovo
apply-spec.yaml
manifest o utilizzandone uno esistente. L'utilizzo 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 nuove impostazioni per il cluster, crea un file denominato
apply-spec.yaml
e copia al suo interno 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 enable mutation # mutationEnabled: true # Uncomment to exempt namespaces # exemptableNamespaces: ["namespace-name"] # Uncomment to change the monitoring backends # monitoring: # backends: # - cloudmonitoring # - prometheus # ...other fields...
Best practice: Esenta gli spazi dei nomi di sistema per evitare errori nel tuo ambiente. Puoi trovare le istruzioni per esentare gli spazi dei nomi e un elenco di spazi dei nomi comuni creati dai servizi Google Cloud nella pagina Escludi spazi dei nomi.
Devi aggiungere un campo
spec.policyController
e impostare il valore dienabled
sutrue
. Puoi scegliere di attivare altre funzionalità di Policy Controller. Tuttavia, il supporto dei vincoli di referenza è disabilitato per impostazione predefinita. Prima di attivarla, assicurati di acquisire familiarità con i limiti della coerenza eventuale.Utilizza il 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 fleet 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 utilizzarePROJECT_ID
: il tuo ID progettoCONFIG_YAML_PATH
: il percorso delapply-spec.yaml
file
Applica il file
apply-spec.yaml
:gcloud beta container fleet config-management apply \ --membership=MEMBERSHIP_NAME \ --config=CONFIG_YAML \ --project=PROJECT_ID
Sostituisci quanto segue:
MEMBERSHIP_NAME
: il nome dell'appartenenza del cluster registrato che contiene le impostazioni del controller di norme che vuoi utilizzare.CONFIG_YAML
: aggiungi il percorso delapply-spec.yaml
file.PROJECT_ID
: aggiungi il tuo ID progetto.
Il pod viene creato e Policy Controller inizia a verificare e applicare i vincoli.
Verificare l'installazione di Policy Controller
Dopo aver installato Policy Controller, puoi verificare che l'operazione sia stata completata correttamente.
Console
Completa i seguenti passaggi:
- Nella console Google Cloud, vai alla pagina Criteri di GKE Enterprise nella sezione Gestione della conformità.
- Nella scheda Impostazioni, nella tabella del cluster, controlla la colonna Stato di Policy Controller. Un'installazione riuscita ha lo stato Installata check_circle.
gcloud policyController
Esegui questo comando:
gcloud container fleet policycontroller describe --memberships=MEMBERSHIP_NAME
Se l'installazione è andata a buon fine, viene visualizzato membershipStates: MEMBERSHIP_NAME: policycontroller: state: ACTIVE
.
gcloud ConfigManagement
Esegui questo comando:
gcloud beta container fleet config-management status \
--project=PROJECT_ID
Sostituisci PROJECT_ID
con l'ID del tuo progetto.
Dovresti vedere un output simile al seguente esempio:
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 ha lo stato INSTALLED
nella colonna
Policy Controller.
Verificare l'installazione della libreria dei 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. Puoi verificare che la libreria di modelli sia stata completata correttamente.
Console
Completa i seguenti passaggi:
- Nella console Google Cloud, vai alla pagina Criteri di GKE Enterprise nella sezione Gestione della conformità.
- Nella scheda Impostazioni, nella tabella del cluster, seleziona il numero indicato nella colonna Bundle installati. Nel riquadro Stato dei contenuti dei criteri, un'installazione riuscita della libreria di modelli ha lo stato Installata check_circle.
gcloud
Esegui questo comando:
kubectl get constrainttemplates
Dovresti vedere un output simile al seguente esempio:
NAME AGE k8sallowedrepos 84s k8scontainerlimits 84s k8spspallowprivilegeescalationcontainer 84s ...[OUTPUT TRUNCATED]...
Quando un singolo modello di vincolo è installato correttamente, il suo
status.created
campo è true
.
Interazioni di Policy Controller con Config Sync
Se utilizzi Policy Controller con Config Sync, devi essere consapevole delle seguenti interazioni con le risorse archiviate nella tua fonte attendibile, ad esempio un repository Git, che vengono sincronizzate da Config Sync:
Non puoi sincronizzare un modello di vincolo che fa parte anche della libreria di modelli, a meno che questa non sia disattivata.
Se vuoi sincronizzare la risorsa
Config
memorizzata nello spazio dei nomigatekeeper-system
, devi solo definire la risorsaConfig
nella fonte di verità.gatekeeper-system
Namespace
non deve essere definito con questo.
Gestire la libreria dei modelli di vincolo
Per informazioni su come disinstallare o installare i modelli di vincolo, i vincoli associati o la libreria dei modelli di vincolo, consulta Creare vincoli.
Esentare gli spazi dei nomi dall'applicazione
Puoi configurare Policy Controller in modo che ignori gli oggetti all'interno di uno spazio dei nomi. Per ulteriori informazioni, consulta Escludere gli spazi dei nomi da Policy Controller.
Modifica risorse
Policy Controller funge anche da webhook con modifica. Per maggiori informazioni, consulta Modifica risorse.
Visualizzare la versione di Policy Controller
Per scoprire quale versione di Gatekeeper Policy Controller è in uso, visualizza il tag immagine eseguendo il seguente comando:
kubectl get deployments -n gatekeeper-system gatekeeper-controller-manager \
-o="jsonpath={.spec.template.spec.containers[0].image}"
Il tag Git (o hash) utilizzato per compilare Gatekeeper e il numero di versione dell'operatore ConfigManagement sono inclusi nel tag immagine come segue:
.../gatekeeper:VERSION_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.
Eseguire l'upgrade di Policy Controller
Prima di eseguire l'upgrade di Policy Controller, consulta le note di rilascio per informazioni dettagliate sulle modifiche tra le versioni.
Per eseguire l'upgrade di Policy Controller, completa i seguenti passaggi:
Console
- Nella console Google Cloud, vai alla pagina Criteri di GKE Enterprise nella sezione Gestione della conformità.
- Nella scheda Impostazioni, accanto al cluster di cui vuoi eseguire l'upgrade, seleziona edit Modifica configurazione.
- Espandi il menu Modifica la configurazione di Policy Controller.
- Dall'elenco a discesa Versione, seleziona la versione a cui vuoi eseguire l'upgrade.
- Fai clic su Salva modifiche.
gcloud
Esegui questo comando:
gcloud container fleet policycontroller update \
--version=VERSION \
--memberships=MEMBERSHIP_NAME
Sostituisci quanto segue:
VERSION
: la versione a cui vuoi eseguire l'upgradeMEMBERSHIP_NAME
: il nome dell'abbonamento che hai scelto quando hai registrato il cluster. Puoi trovare il nome dell'abbonamento eseguendogcloud container fleet memberships list
.
Disinstalla Policy Controller
Per disinstallare Policy Controller dai cluster:
Console
Per disattivare Policy Controller sui tuoi cluster, completa le seguenti attività:
- Nella console Google Cloud, vai alla pagina Criteri di GKE Enterprise nella sezione Gestione della conformità.
- Nella scheda Impostazioni, nella tabella del cluster, seleziona Modifica edit nella colonna Modifica configurazione.
- Nel riquadro del cluster, scorri verso il basso ed espandi il menu Informazioni su Controller criteri.
- Seleziona Disinstalla Policy Controller.
- Conferma la disinstallazione seguendo le istruzioni nella finestra di dialogo di conferma e selezionando Conferma.
Quando Policy Controller viene disinstallato, le colonne di stato mostrano Non installato do_not_disturb_on.
gcloud policyController
Per disinstallare Policy Controller, esegui il seguente comando:
gcloud container fleet policycontroller disable \
--memberships=MEMBERSHIP_NAME
Sostituisci MEMBERSHIP_NAME
con il nome dell'appartenenza del
cluster registrato su cui disattivare Policy Controller. Puoi specificare più iscrizioni separate da una virgola.
gcloud ConfigManagement
Per disinstallare Policy Controller:
Modifica la configurazione dell'operatore ConfigManagement nel
apply-spec.yaml
file e impostapolicyController.enabled
sufalse
.Applica le modifiche nel file
apply-spec.yaml
:gcloud beta container fleet 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 del file
apply-spec.yaml
. - PROJECT_ID: aggiungi il tuo ID progetto.
Rimuovi l'operatore ConfigManagement
Se hai installato Policy Controller tramite l'oggetto ConfigManagement
,
devi anche rimuovere l'operatore ConfigManagement dai tuoi cluster.
Per rimuovere l'operatore ConfigManagement, esegui i seguenti comandi:
Elimina l'oggetto ConfigManagement dal cluster:
kubectl delete configmanagement --all
Dopo aver eseguito questo comando, si verificano le seguenti operazioni:
- Tutti i ClusterRole e ClusterRoleBindings creati nel cluster dall'operatore ConfigManagement vengono eliminati dal cluster.
- Tutte le configurazioni dei controller di ammissione installate da ConfigManagement Operator vengono eliminate.
- I contenuti dello spazio dei nomi
config-management-system
vengono eliminati, con l'eccezione del segretogit-creds
e, per le versioni di Policy Controller a partire dalla 1.9.0, del deploymentconfig-management-operator
e del podconfig-management-operator
. L'operatore ConfigManagement non può funzionare senza lo spazio dei nomiconfig-management-system
. Tutti i CustomResourceDefinitions (CRD) creati o modificati dal controller ConfigManagement Operator vengono rimossi dai cluster in cui sono stati creati o modificati. Il CRD necessario per eseguire ConfigManagement Operator esiste ancora perché dal punto di vista di Kubernetes, sono stati aggiunti dall'utente che ha installato ConfigManagement Operator. Le informazioni sulla rimozione di questi componenti sono riportate nel passaggio successivo.
Se devi conservare il segreto
git-creds
, fallo ora:kubectl -n config-management-system get secret git-creds -o yaml
Elimina lo spazio dei nomi
config-management-system
:kubectl delete ns config-management-system
Elimina lo spazio dei nomi
config-management-monitoring
:kubectl delete ns config-management-monitoring
Elimina CustomResourceDefinition ConfigManagement:
kubectl delete crd configmanagements.configmanagement.gke.io
RBAC e autorizzazioni di Policy Controller
Policy Controller include carichi di lavoro con privilegi elevati. Le autorizzazioni per questi workload sono trattate nella documentazione delle operazioni di Open Policy Agent Gatekeeper.
Richieste di risorse di Policy Controller
La tabella seguente elenca i requisiti delle risorse Kubernetes per ogni versione supportata di Policy Controller. Le richieste di risorse per l'operatore ConfigManagement si applicano solo se hai installato il controller dei criteri tramite l'oggetto ConfigManagement
.
Componente | CPU | Memoria |
---|---|---|
Operatore ConfigManagement | 100 m | 160 km |
Policy Controller | 100 m | 256 km |
Passaggi successivi
- Scopri di più su Policy Controller.
- Scopri di più sui pacchetti di Policy Controller.
- Scopri come creare una limitazione.
- Risolvi i problemi di Policy Controller.