Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo offre una panoramica di come usare l'API ClusterResourceOverride per personalizzare le risorse con ambito cluster in Azure Kubernetes Fleet Manager.
È possibile modificare o eseguire l'override di attributi specifici tra le risorse del cluster. Con ClusterResourceOverrideè possibile definire regole basate sulle etichette del cluster e specificare le modifiche da applicare a varie risorse a livello di cluster. Queste risorse includono spazi dei nomi, ruoli del cluster, associazioni di ruoli del cluster o definizioni di risorse personalizzate.
Queste modifiche possono includere aggiornamenti a autorizzazioni, configurazioni o altri parametri. Tali aggiornamenti consentono di garantire una gestione coerente e l'applicazione delle configurazioni nei cluster gestiti tramite Fleet Manager.
Componenti dell'API
L'API ClusterResourceOverride è costituita dai componenti seguenti:
-
clusterResourceSelectors: specifica il set di risorse cluster selezionate per l'override. -
policy: specifica il set di regole da applicare alle risorse cluster selezionate.
Selettori di risorse cluster
Un oggetto ClusterResourceOverride può includere uno o più selettori di risorse cluster per specificare di quali risorse eseguire l'override. L'oggetto ClusterResourceSelector supporta i campi seguenti.
Nota
Se si seleziona uno spazio dei nomi in ClusterResourceSelector, l'override verrà applicato a tutte le risorse nello spazio dei nomi .
-
group: gruppo API della risorsa. -
version: versione API della risorsa. -
kind: Tipo di risorsa. -
name: nome della risorsa.
Per aggiungere un selettore di risorse cluster a un oggetto ClusterResourceOverride, usare il campo clusterResourceSelectors con il formato YAML seguente:
apiVersion: placement.kubernetes-fleet.io/v1alpha1
kind: ClusterResourceOverride
metadata:
name: example-cro
spec:
clusterResourceSelectors:
- group: rbac.authorization.k8s.io
kind: ClusterRole
version: v1
name: secret-reader
In questo esempio viene selezionato un ClusterRole oggetto denominato secret-reader dal gruppo di API per l'override rbac.authorization.k8s.io/v1 :
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: secret-reader
rules:
- apiGroups: [""]
resources: ["secrets"]
verbs: ["get", "watch", "list"]
Criteri
Un oggetto Policy è costituito da un set di regole, overrideRules, che specificano le modifiche da applicare al cluster risorse selezionato. Ogni oggetto overrideRules supporta i campi seguenti:
-
clusterSelector: specifica il set di cluster a cui si applica la regola di override. -
jsonPatchOverrides: specifica le modifiche da applicare alle risorse selezionate.
Per aggiungere una regola di override a un oggetto ClusterResourceOverride, usare il campo policy con il formato YAML seguente:
apiVersion: placement.kubernetes-fleet.io/v1alpha1
kind: ClusterResourceOverride
metadata:
name: example-cro
spec:
clusterResourceSelectors:
- group: rbac.authorization.k8s.io
kind: ClusterRole
version: v1
name: secret-reader
policy:
overrideRules:
- clusterSelector:
clusterSelectorTerms:
- labelSelector:
matchLabels:
env: prod
jsonPatchOverrides:
- op: remove
path: /rules/0/verbs/2
In questo esempio viene rimosso il verbo "list" nell'oggetto ClusterRole denominato secret-reader nei cluster con l'etichetta env: prod.
Selettore cluster
È possibile utilizzare il campo clusterSelector nell'oggetto overrideRules per specificare i cluster a cui si applica la regola di override. L'oggetto ClusterSelector supporta il campo seguente:
-
clusterSelectorTerms: elenco di termini che specificano i criteri per la selezione dei cluster. Ogni termine include un campolabelSelectorche definisce un set di etichette da trovare.
Importante
Solo labelSelector è supportato nel campo clusterSelectorTerms.
Override delle patch JSON
È possibile usare jsonPatchOverrides nell'oggetto overrideRules per specificare le modifiche da applicare alle risorse selezionate. L'oggetto JsonPatch supporta i campi seguenti:
op: operazione da eseguire. Le operazioni supportate includono:-
add: aggiunge un nuovo valore al percorso specificato. -
remove: rimuove il valore nel percorso specificato. -
replace: sostituisce il valore in corrispondenza del percorso specificato.
-
path: percorso del campo da modificare. Le linee guida per specificare i percorsi includono:- Deve iniziare con un carattere barra (
/). - Non può essere vuoto o contenere una stringa vuota.
- Non può essere un
TypeMetacampo (/kindo/apiVersion). - Non può essere un
Metadatacampo (/metadata/nameo/metadata/namespace), ad eccezione dei campi/metadata/labelse/metadata/annotations. - Non può essere alcun campo nello stato della risorsa.
Esempi di percorsi validi includono:
/metadata/labels/new-label/metadata/annotations/new-annotation/spec/template/spec/containers/0/resources/limits/cpu/spec/template/spec/containers/0/resources/requests/memory
- Deve iniziare con un carattere barra (
value: valore da aggiungere, rimuovere o sostituire. Seopèremove, non è possibile specificarevalue.
I jsonPatchOverrides campi applicano una patch JSON alle risorse selezionate seguendo RFC 6902.
Più patch di override
È possibile aggiungere più jsonPatchOverrides campi a un overrideRules oggetto per applicare più modifiche alle risorse cluster selezionate. Ecco un esempio:
apiVersion: placement.kubernetes-fleet.io/v1alpha1
kind: ClusterResourceOverride
metadata:
name: cro-1
spec:
clusterResourceSelectors:
- group: rbac.authorization.k8s.io
kind: ClusterRole
version: v1
name: secret-reader
policy:
overrideRules:
- clusterSelector:
clusterSelectorTerms:
- labelSelector:
matchLabels:
env: prod
jsonPatchOverrides:
- op: remove
path: /rules/0/verbs/2
- op: remove
path: /rules/0/verbs/1
In questo esempio vengono rimossi i verbi "list" e "watch" nell'oggetto ClusterRole denominato secret-reader nei cluster con l'etichetta env: prod:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: secret-reader
rules:
- apiGroups: [""]
resources: ["secrets"]
verbs: ["get", "watch", "list"]
Applicare il posizionamento delle risorse cluster
Creare una
ClusterResourcePlacementrisorsa per specificare le regole di posizionamento per la distribuzione delle sostituzioni delle risorse cluster nell'infrastruttura del cluster. Il codice seguente è un esempio. Assicurarsi di selezionare la risorsa appropriata.apiVersion: placement.kubernetes-fleet.io/v1 kind: ClusterResourcePlacement metadata: name: crp spec: resourceSelectors: - group: rbac.authorization.k8s.io kind: ClusterRole version: v1 name: secret-reader policy: placementType: PickAll affinity: clusterAffinity: requiredDuringSchedulingIgnoredDuringExecution: clusterSelectorTerms: - labelSelector: matchLabels: env: prodQuesto esempio distribuisce le risorse in tutti i cluster etichettati con
env: prod. Man mano che vengono implementate le modifiche, le configurazioni corrispondentiClusterResourceOverridevengono applicate ai cluster designati. La selezione di una risorsa del ruolo del cluster corrispondente,secret-reader, attiva l'applicazione delle configurazioni nei cluster.Applicare la
ClusterResourcePlacementrisorsa usando ilkubectl applycomando :kubectl apply -f cluster-resource-placement.yamlVerificare che l'oggetto
ClusterResourceOverridesia stato applicato alle risorse selezionate controllando lo stato dellaClusterResourcePlacementrisorsa tramite ilkubectl describecomando :kubectl describe clusterresourceplacement crpL'output dovrebbe essere simile all'esempio seguente:
Status: Conditions: ... Last Transition Time: 2024-04-27T04:18:00Z Message: The selected resources are successfully overridden in the 10 clusters Observed Generation: 1 Reason: OverriddenSucceeded Status: True Type: ClusterResourcePlacementOverridden ... Observed Resource Index: 0 Placement Statuses: Applicable Cluster Resource Overrides: example-cro-0 Cluster Name: member-50 Conditions: ... Message: Successfully applied the override rules on the resources Observed Generation: 1 Reason: OverriddenSucceeded Status: True Type: Overridden ...La condizione
ClusterResourcePlacementOverriddenindica se l'override della risorsa è stato applicato correttamente alle risorse selezionate nei cluster. Ogni cluster mantiene un proprioApplicable Cluster Resource Overrideselenco. Questo elenco contiene lo snapshot dell'override della risorsa cluster, se pertinente. I singoli messaggi di stato per ogni cluster indicano se le regole di override sono state applicate correttamente.