Installazione di Policy Controller
Questa pagina mostra come installare Policy Controller. Policy Controller controlla, controlla e applica la conformità dei tuoi cluster ai criteri relativi a sicurezza, normative o regole aziendali.
Policy Controller è disponibile se utilizzi la versione Google Kubernetes Engine (GKE) Enterprise. Per saperne di più, consulta i prezzi della versione Google Kubernetes Engine (GKE) Enterprise. Puoi creare un report per provare Policy Controller prima di installarlo senza costi.
Prima di iniziare
Prima di iniziare, assicurati di aver eseguito le seguenti attività:
- Installa e inizializza Google Cloud CLI, che fornisce i comandi
gcloud
,gsutil
,kubectl
enomos
utilizzati in queste istruzioni. Se hai già installato gcloud CLI, scarica la versione più recente eseguendogcloud components update
. Se utilizzi Cloud Shell, l'Google Cloud CLI è preinstallata. - Assicurati che il gatekeeper di Open Policy Agent Open source non sia installato sul cluster. In caso affermativo, disinstalla Gatekeeper prima di installare Policy Controller.
Crea, o assicurati di avere accesso, un cluster che esegue una versione di Kubernetes 1.14.x o successiva. Policy Controller potrebbe sembrare eseguito 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 subito il cluster in un parco risorse. 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 tuo cluster AKS non abbia il componente aggiuntivo di Criteri di Azure ed evita di etichettare gli spazi dei nomi con la chiave
control-plane
.Se utilizzi GKE su VMware o Google Distributed Cloud Virtual for Bare Metal, assicurati di installare Policy Controller su un cluster utente. Policy Controller non può essere installato su un cluster di amministrazione.
Installazione di Policy Controller
A partire dalla versione 1.16.0, se utilizzi Google Cloud CLI, puoi installare e gestire Policy Controller direttamente (opzione consigliata) o tramite l'oggetto ConfigManagement.
Console
Per installare Policy Controller nella console Google Cloud, completa i seguenti passaggi:
- Nella console Google Cloud, vai alla pagina Criterio di GKE Enterprise nella sezione Gestione della postura.
Seleziona add Installa Policy Controller.
Nel riquadro Installazione di Policy Controller, seleziona una delle seguenti opzioni di installazione:
Per installare Policy Controller su tutti i cluster in un parco risorse:
Mantieni selezionata l'opzione Installa nel parco risorse.
Se nel progetto non è presente un parco risorse, puoi crearne uno nel passaggio successivo.
Se non hai ancora un parco risorse, scegline un nome.
Seleziona Attiva Policy Controller.
Per installare Policy Controller su singoli cluster:
Seleziona Installa su singoli cluster.
Nella tabella Cluster disponibili, seleziona i cluster su cui vuoi installare Policy Controller.
Seleziona Attiva Policy Controller.
Verrà visualizzata la scheda Impostazioni di Policy Controller. Quando Policy Controller viene installato e configurato sui tuoi cluster, le colonne dello stato mostrano Installato check_circle. Questa operazione può richiedere diversi minuti.
Policy Controller gcloud
Abilita Policy Controller eseguendo questo comando:
gcloud container fleet policycontroller enable \
--memberships=MEMBERSHIP_NAME
Puoi impostare campi aggiuntivi per configurare Policy Controller. Ad esempio,
è possibile che tu voglia indicare a Policy Controller di escludere dall'applicazione alcuni spazi dei nomi.
Per un elenco completo dei campi che puoi configurare, consulta la documentazione relativa a Google Cloud CLI di Policy Controller o esegui gcloud container fleet policycontroller enable --help
.
ConfigManagement gcloud
Prepara la configurazione creando un nuovo manifest
apply-spec.yaml
o utilizzando un manifest esistente. L'uso di un manifest esistente ti 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...
Devi aggiungere un campo
spec.policyController
e impostare il valore dienabled
sutrue
. Puoi scegliere di abilitare altre funzionalità di Policy Controller. Tuttavia, il supporto per i vincoli referenziali è disabilitato per impostazione predefinita. Prima di abilitarlo, assicurati di acquisire familiarità con le avvertenze sulla coerenza finale.Usa 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 del cluster registrato con le impostazioni di Policy Controller che vuoi utilizzarePROJECT_ID
: il tuo ID progettoCONFIG_YAML_PATH
: il percorso del fileapply-spec.yaml
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 con le impostazioni di Policy Controller che vuoi utilizzare.CONFIG_YAML
: aggiungi il percorso al fileapply-spec.yaml
.PROJECT_ID
: aggiungi il tuo ID progetto.
Il pod viene creato e Policy Controller inizia a controllare e applicare i vincoli.
Verifica l'installazione di Policy Controller
Dopo aver installato Policy Controller, puoi verificare che sia stato completato correttamente.
Console
Procedi con i seguenti passaggi:
- Nella console Google Cloud, vai alla pagina Criterio di GKE Enterprise nella sezione Gestione della postura.
- Nella scheda Impostazioni, nella tabella del cluster, controlla la colonna Stato Policy Controller. Un'installazione completata è con lo stato Installata check_circle.
Policy Controller gcloud
Esegui questo comando:
gcloud container fleet policycontroller describe --memberships=MEMBERSHIP_NAME
Se l'installazione è stata completata correttamente, viene visualizzato membershipStates: MEMBERSHIP_NAME: policycontroller: state: ACTIVE
.
ConfigManagement gcloud
Esegui questo comando:
gcloud beta container fleet config-management status \
--project=PROJECT_ID
Sostituisci PROJECT_ID
con l'ID del 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 dei modelli di vincolo viene installata per impostazione predefinita. Il completamento dell'installazione può richiedere diversi minuti. Puoi verificare il corretto completamento della libreria dei modelli.
Console
Procedi con i seguenti passaggi:
- Nella console Google Cloud, vai alla pagina Criterio di GKE Enterprise nella sezione Gestione della postura.
- Nella scheda Impostazioni, nella tabella del cluster, seleziona il numero elencato nella colonna Pacchetti installati. Nel riquadro Stato dei contenuti dei criteri, un'installazione riuscita della libreria di modelli mostra 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 viene installato correttamente, il relativo campo status.created
è true
.
Configura impostazioni predefinite a livello di parco risorse
Se hai abilitato la versione Google Kubernetes Engine (GKE) Enterprise, puoi abilitare e configurare Policy Controller come predefinito a livello di parco risorse per i tuoi cluster. Ciò significa che per ogni nuovo cluster GKE su Google Cloud registrato durante la creazione del cluster, Policy Controller sarà abilitato nel cluster con le impostazioni da te specificate. Per saperne di più sulla configurazione predefinita del parco risorse, consulta Gestire le funzionalità a livello di parco risorse.
Per configurare le impostazioni predefinite a livello di parco risorse per Policy Controller, segui questi passaggi:
Console
Nella console Google Cloud, vai alla pagina Gestione funzionalità.
Nel riquadro Criterio, fai clic su Configura.
Rivedi le tue impostazioni a livello di parco risorse. Tutti i nuovi cluster che registri nel parco risorse ereditano queste impostazioni.
(Facoltativo) Per modificare le impostazioni predefinite, 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 configurazione di Policy Controller, procedi nel seguente modo:
- Per attivare il webhook di mutazione, seleziona la casella di controllo Attiva webhook di mutazione. 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.
- Per abilitare i vincoli referenziali, seleziona la casella di controllo Abilita modelli di vincolo che fanno riferimento a oggetti diversi dall'oggetto attualmente valutato.
- Nell'elenco Versione, seleziona la versione di Policy Controller 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 abilitato Policy Controller in precedenza, fai clic su Conferma per abilitare l'API
anthospolicycontroller.googleapis.com
.(Facoltativo) Sincronizza i cluster esistenti con le impostazioni predefinite:
- Nell'elenco Cluster nel parco risorse, seleziona i cluster che vuoi sincronizzare.
- Fai clic su Sincronizza con le impostazioni del parco risorse e fai clic su Conferma nella finestra di dialogo di conferma visualizzata. Questa operazione può richiedere alcuni minuti.
gcloud
Crea un file denominato
fleet-default.yaml
che contiene le configurazioni predefinite per Policy Controller. Il campoinstallSpec
è obbligatorio per abilitare i valori predefiniti a livello di parco risorse. 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 ...
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 questo comando:
gcloud container fleet policycontroller describe
Per rimuovere la configurazione predefinita a livello di parco risorse, esegui questo comando:
gcloud container fleet policycontroller enable \ --no-fleet-default-member-config
Interazioni di Policy Controller con Config Sync
Se utilizzi Policy Controller con Config Sync, tieni presente le seguenti interazioni con le risorse archiviate nella tua fonte di attendibilità e sincronizzate da Config Sync:
Non puoi sincronizzare un modello di vincolo che fa anche parte della libreria dei modelli, a meno che la libreria dei modelli di vincolo non sia disabilitata.
Se vuoi sincronizzare la risorsa
Config
archiviata nello spazio dei nomigatekeeper-system
, devi definire la risorsaConfig
solo nell'origine attendibile. Non è necessario definiregatekeeper-system
Namespace
.
Gestire la libreria dei modelli di vincolo
Per informazioni sulla disinstallazione o sull'installazione dei modelli di vincolo, sui vincoli associati o sulla libreria dei modelli di vincolo, consulta Creare vincoli.
Spazi dei nomi esenti dall'applicazione
Puoi configurare Policy Controller in modo che ignori gli oggetti all'interno di uno spazio dei nomi. Per maggiori informazioni, consulta Escludere gli spazi dei nomi da Policy Controller.
Modifica risorse
Policy Controller funge anche da webhook mutabile. Per ulteriori informazioni, consulta la pagina relativa alle risorse su Mutate.
Visualizza la versione di Policy Controller
Per scoprire quale versione di Gatekeeper Policy Controller è in uso, visualizza il tag immagine eseguendo questo comando:
kubectl get deployments -n gatekeeper-system gatekeeper-controller-manager \
-o="jsonpath={.spec.template.spec.containers[0].image}"
Il tag (o hash) Git utilizzato per creare Gatekeeper e il numero di versione di ConfigManagement Operator sono inclusi nel tag immagine come segue:
.../gatekeeper:VERSION_NUMBER-GIT_TAG.gBUILD_NUMBER
Ad esempio, per l'immagine seguente:
gcr.io/config-management-release/gatekeeper:anthos1.3.2-480baac.g0
anthos1.3.2
è il numero della versione.480baac
è il tag Git.0
è il numero build.
Puoi anche visualizzare un elenco di tutte le versioni di Policy Controller insieme al relativo manifest, all'installazione e alle versioni binarie di nomos
in Matrice delle versioni della release.
Esegui l'upgrade di Policy Controller
Prima di eseguire l'upgrade di Policy Controller, consulta le note di rilascio per conoscere i dettagli sulle modifiche apportate da una versione all'altra.
Per eseguire l'upgrade di Policy Controller, completa i seguenti passaggi:
Console
- Nella console Google Cloud, vai alla pagina Criterio di GKE Enterprise nella sezione Gestione della postura.
- Nella scheda Impostazioni, accanto al cluster di cui vuoi eseguire l'upgrade, seleziona edit Modifica configurazione.
- Espandi il menu Modifica configurazione di Policy Controller.
- Nell'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 \
--membership=MEMBERSHIP_NAME
Sostituisci quanto segue:
VERSION
: la versione a cui vuoi eseguire l'upgradeMEMBERSHIP_NAME
: il nome dell'appartenenza che hai scelto quando hai registrato il cluster. Puoi trovare il nome dell'abbonamento eseguendogcloud container fleet memberships list
.
Disinstalla Policy Controller
Segui questi passaggi per disinstallare Policy Controller dai tuoi cluster.
Console
Per disabilitare Policy Controller sui tuoi cluster, completa le seguenti attività:
- Nella console Google Cloud, vai alla pagina Criterio di GKE Enterprise nella sezione Gestione della postura.
- 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 Policy Controller.
- 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 dello stato mostrano Non installato do_not_disturb_on.
Policy Controller gcloud
Per disinstallare Policy Controller, esegui questo comando:
gcloud container fleet policycontroller disable \
--memberships=MEMBERSHIP_NAME
Sostituisci MEMBERSHIP_NAME
con il nome dell'appartenenza del cluster registrato su cui disabilitare Policy Controller. Puoi specificare più
abbonamenti separati da una virgola.
ConfigManagement gcloud
Per disinstallare Policy Controller:
Modifica la configurazione di ConfigManagement Operator nel file
apply-spec.yaml
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 al 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 rimuovere anche l'operatore ConfigManagement dai cluster.
Per rimuovere l'operatore ConfigManagement, esegui questi comandi:
Elimina l'oggetto ConfigManagement dal cluster:
kubectl delete configmanagement --all
Dopo aver eseguito questo comando, si verifica quanto segue:
- Tutti i ClusterRole e ClusterRoleBinding creati nel cluster dall'operatore ConfigManagement vengono eliminati dal cluster.
- Le configurazioni del controller di ammissione installate dall'operatore ConfigManagement vengono eliminate.
- I contenuti dello spazio dei nomi
config-management-system
vengono eliminati, ad eccezione del Secretgit-creds
, e per le versioni di Policy Controller, Config Sync e Config Controller che iniziano nella 1.9.0, il deploymentconfig-management-operator
e il podconfig-management-operator
. L'operatore ConfigManagement non può funzionare senza lo spazio dei nomiconfig-management-system
. Qualsiasi CRD (CustomResourceDefinitions) creata o modificata dal controller Operator ConfigManagement viene rimosso dai cluster in cui sono stati creati o modificati. Il CRD necessario per eseguire l'operatore ConfigManagement esiste ancora perché dal punto di vista di Kubernetes è stato aggiunto dall'utente che ha installato ConfigManagement. Le informazioni sulla rimozione di questi componenti verranno trattate nel passaggio successivo.
Se devi conservare il secret di
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 ConfigManagement CustomResourceDefinition:
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 carichi di lavoro sono indicate nella documentazione sulle operazioni Open Policy Agent Gatekeeper.
Richieste di risorse Policy Controller
La seguente tabella elenca i requisiti delle risorse Kubernetes
per ogni versione supportata. Le richieste di risorse per l'operatore ConfigManagement si applicano solo se hai installato Policy Controller tramite l'oggetto ConfigManagement
.
1,16
Componente | CPU | Memoria |
---|---|---|
Operatore ConfigManagement | 100 m | 100 miglia |
Policy Controller | 100 m | 256 km |
1,15
Componente | CPU | Memoria |
---|---|---|
Operatore ConfigManagement | 100 m | 100 miglia |
Policy Controller | 100 m | 256 km |
1,14
Componente | CPU | Memoria |
---|---|---|
Operatore ConfigManagement | 100 m | 100 miglia |
Policy Controller | 100 m | 256 km |
Passaggi successivi
- Scopri di più su Policy Controller.
- Scopri di più sui pacchetti Policy Controller.
- Scopri come creare un vincolo.
- Risoluzione dei problemi di Policy Controller.