Questa pagina spiega come configurare cluster e oggetti con ambito cluster. Puoi scopri anche configurazione di spazi dei nomi e oggetti basati sugli spazi dei nomi.
Configura cluster e oggetti con ambito cluster
Nei repository non strutturati, puoi organizzare le configurazioni per cluster e cluster nel modo che preferisci. Tutte le configurazioni sono organizzate in questo modo si applicano a tutti i cluster registrati in Config Sync.
Nei repository gerarchici,
per cluster e oggetti con ambito cluster si trovano all'interno
Directory cluster/
. Tutte le configurazioni all'interno di cluster/
si applicano a ogni cluster
registrato in Config Sync.
Configura CustomResourceDefinitions
Config Sync consente di sincronizzare le CustomResourceDefinitions (CRD) nello stesso modo in cui sincronizzi qualsiasi altra risorsa. Ci sono alcuni aspetti da tenere presenti quando si sincronizzano i CRD:
CRD nei repository gerarchici, anche quando dichiarano uno spazio dei nomi personalizzato La risorsa deve essere inserita nella directory
cluster/
.Gli aggiornamenti dei CRD e delle risorse personalizzate corrispondenti non avvengono in nessuna in un ordine prevedibile. Se modifichi i CRD e le risorse CustomResource corrispondenti, nello stesso commit, non è previsto che gli aggiornamenti del CRD avvengano prima Aggiornamenti delle risorse personalizzate. Per questo motivo l'
nomos status
potrebbe segnalare un per un breve periodo di tempo, fino a quando le risorse e la CRD sono presenti nel cluster.Config Sync non consente la rimozione di un CRD se esiste una risorsa CustomResource nel repository dipende da questo. Per rimuovere un CRD, devi rimuovere anche la relativa Risorsa personalizzata. Ti consigliamo di rimuoverli nello stesso commit nel repository.
Puoi sincronizzare una CustomResource senza sincronizzare il relativo CRD, purché tu possa garantisce che il CRD esista già nel cluster.
Limita i cluster interessati da una configurazione
Per impostazione predefinita, Config Sync applica una configurazione a ogni cluster registrato. Tuttavia, Per applicare una configurazione solo a un sottoinsieme di cluster, puoi aggiungere l'annotazione cluster-name-selector o un la configurazione di ClusterSelector nel repository.
L'annotazione cluster-name-selector
consente di specificare facilmente un sottoinsieme
di cluster a cui applicare una configurazione. Questa opzione supporta solo la selezione dei cluster
per nome.
L'oggetto ClusterSelector
supporta la selezione dei cluster per etichette, ma
richiede configurazioni più complesse.
Configura utilizzando l'annotazione cluster-name-selector
Puoi applicare una configurazione a un sottoinsieme di cluster con
Annotazione configsync.gke.io/cluster-name-selector
. Puoi utilizzare la modalità
questa annotazione per applicare una configurazione a un insieme di cluster, indicati dai nomi dei cluster.
Il valore dell'annotazione è un elenco separato da virgole di nomi del cluster di destinazione.
Puoi applicare l'annotazione a oggetti con ambito cluster e con ambito spazio dei nomi
di oggetti strutturati. Gli oggetti dello spazio dei nomi vengono selezionati quando l'annotazione corrisponde al cluster
e quando viene selezionato anche lo spazio dei nomi a cui appartengono i cluster.
Seleziona un singolo cluster
La configurazione seguente crea un ruolo denominato namespace-reader
che definisce un set
delle autorizzazioni
per la lettura degli spazi dei nomi. Questo ruolo viene applicato solo al cluster
che ha il nome cluster-1
.
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
namespace: my-namespace
name: namespace-reader
annotations:
configsync.gke.io/cluster-name-selector: cluster-1
rules:
- apiGroups: [""]
resources: ["namespaces"]
verbs: ["get", "watch", "list"]
Seleziona un elenco di cluster
La configurazione seguente crea lo stesso ruolo dell'esempio precedente, ma questo
Il ruolo viene applicato solo ai cluster che hanno il nome cluster-1
,
cluster-2
o cluster-3
.
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
namespace: my-namespace
name: namespace-reader
annotations:
configsync.gke.io/cluster-name-selector: cluster-1,cluster-2,cluster-3
rules:
- apiGroups: [""]
resources: ["namespaces"]
verbs: ["get", "watch", "list"]
Configura utilizzando l'oggetto ClusterSelector
Un ClusterSelector è un tipo speciale di configurazione che utilizza Kubernetes labelSelectors. Puoi utilizzare un ClusterSelector per limitare i cluster di una determinata configurazione si applica in base alle etichette del cluster. Puoi anche utilizzare ClusterSelectors limitare i cluster che creano un'istanza per un oggetto con ambito spazio dei nomi.
Come altri labelSelector, ClusterSelector operano utilizzando la logica AND. Dal giorno I ClusterSelector utilizzano la logica AND, gli oggetti vengono selezionati solo quando corrispondono a tutti le etichette che definisci.
Una configurazione ClusterSelector non viene permanente in un cluster. Invece, fai riferimento utilizzando un'annotazione in un'altra configurazione. Questa configurazione si applica solo che corrispondono a ClusterSelector.
Prima di poter utilizzare ClusterSelector, ogni cluster deve avere un nome univoco e un insieme di etichette selezionabili. I metadati del cluster sono specificati in Configurazione del cluster nella tua fonte attendibile.
In seguito, aggiungi etichette a un cluster, crea il ClusterSelector, faci riferimento in un'altra configurazione.
Aggiungi etichette a un cluster
Per utilizzare ClusterSelector, ogni cluster deve avere un set di etichette che possono essere
selezionato. Nei repository non strutturati, le configurazioni dei cluster possono essere
arbitrariamente nella directory di configurazione o nelle directory discendenti.
Nei repository gerarchici, le configurazioni dei cluster vengono archiviate nell'clusterregistry/
.
Per applicare le configurazioni a un cluster, il campo metadata.name
della configurazione del cluster
deve corrispondere
Campo clusterName
dell'oggetto ConfigManagement.
La configurazione del cluster di esempio seguente dichiara che cluster-2
ha
Etichette environment: prod
e location: central
.
kind: Cluster
apiVersion: clusterregistry.k8s.io/v1alpha1
metadata:
name: cluster-2
labels:
environment: prod
location: central
Puoi anche applicare annotazioni utilizzando una configurazione cluster.
Crea un ClusterSelector
Un ClusterSelector seleziona solo i cluster con una determinata etichetta o combinazione
di etichette. Nei repository non strutturati, i ClusterSelector possono essere archiviati
arbitrariamente nella directory di sincronizzazione o nelle directory discendenti. In ordine gerarchico
di repository, i ClusterSelector sono archiviati nell'clusterregistry/
del repository.
Il seguente ClusterSelector seleziona solo i cluster con
Etichetta environment: prod
.
kind: ClusterSelector
apiVersion: configmanagement.gke.io/v1
metadata:
name: selector-env-prod
spec:
selector:
matchLabels:
environment: prod
Il seguente ClusterSelector seleziona qualsiasi cluster con
location: central
o location: west
etichette.
kind: ClusterSelector
apiVersion: configmanagement.gke.io/v1
metadata:
name: selector-central-or-west
spec:
selector:
matchExpressions:
- key: location
operator: In
values:
- central
- west
Un ClusterSelector non ha effetto finché non come riferimento in un'altra configurazione.
Riferimento a un ClusterSelector
Per fare riferimento a un ClusterSelector in un'altra configurazione, imposta l'annotazione
configmanagement.gke.io/cluster-selector: CLUSTERSELECTOR-NAME
.
La configurazione seguente crea un ClusterRole denominato namespace-reader
che
definisce un insieme di autorizzazioni per la lettura degli spazi dei nomi. Questo ClusterRole è
creata un'istanza sui cluster che corrispondono a selector-env-prod
ClusterSelector.
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: namespace-reader
annotations:
configmanagement.gke.io/cluster-selector: selector-env-prod
rules:
- apiGroups: [""]
resources: ["namespaces"]
verbs: ["get", "watch", "list"]
Limita i cluster interessati da una configurazione con ambito dello spazio dei nomi
Per impostazione predefinita, Config Sync applica le configurazioni ereditate da uno spazio dei nomi a per lo spazio dei nomi in ogni cluster in cui è presente. Puoi usare un cluster ClusterSelector per applicare la configurazione solo a un sottoinsieme di questi cluster.
Ad esempio, puoi configurare i cluster in modo diverso a seconda della loro area geografica
o la posizione geografica dei loro clienti. Questa configurazione può
per la localizzazione o per la conformità legale. Gli esempi in questa sezione
applica configurazioni specifiche delle impostazioni internazionali solo ai cluster con l'etichetta location: france
.
La seguente configurazione di cluster aggiunge un'etichetta location: france
a un
in un cluster denominato cluster-1
:
kind: Cluster
apiVersion: clusterregistry.k8s.io/v1alpha1
metadata:
name: cluster-1
labels:
location: france
Crea una configurazione ClusterSelector che faccia riferimento alle etichette da utilizzare
selezionare. Il seguente ClusterConfig seleziona l'etichetta location: france
:
kind: ClusterSelector
apiVersion: configmanagement.gke.io/v1
metadata:
name: selector-location-france
spec:
selector:
matchLabels:
location: france
Un ClusterSelector non ha alcun effetto finché non lo fai riferimento in un'altra configurazione.
La seguente configurazione di RoleBinding seleziona solo i cluster che corrispondono
selector-location-france
ClusterSelector. Questa configurazione potrebbe essere utile,
Ad esempio, se una linea guida di conformità consentiva
solo un determinato servizio,
per visualizzare informazioni sui cluster nella regione geografica designata.
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: viewers
annotations:
configmanagement.gke.io/cluster-selector: selector-location-france
subjects:
- kind: Group
name: system:serviceaccounts:foo
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: ClusterRole
name: view
apiGroup: rbac.authorization.k8s.io
Se posizioni questa configurazione in uno spazio dei nomi astratto o in una directory dello spazio dei nomi,
come namespaces/eng
, viene applicato agli spazi dei nomi che lo ereditano, ma solo
sui cluster con l'etichetta location: france
.
Passaggi successivi
- Scopri di più sulla configurazione degli spazi dei nomi e degli oggetti con ambito spazio dei nomi